diff --git a/eng/Version.Details.props b/eng/Version.Details.props index b3a969212d8f..aad45c6e9281 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -59,6 +59,7 @@ This file should be imported by eng/Versions.props 11.0.0-preview.4.26208.110 11.0.0-preview.4.26208.110 11.0.0-preview.4.26208.110 + 11.0.0-preview.4.26208.110 11.0.0-preview.4.26208.110 11.0.0-beta.26208.110 11.0.0-beta.26208.110 @@ -202,6 +203,7 @@ This file should be imported by eng/Versions.props $(MicrosoftDotNetSignToolPackageVersion) $(MicrosoftDotNetWebItemTemplates110PackageVersion) $(MicrosoftDotNetWebProjectTemplates110PackageVersion) + $(MicrosoftMcpServerProjectTemplatesPackageVersion) $(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion) $(MicrosoftDotNetWpfProjectTemplatesPackageVersion) $(MicrosoftDotNetXliffTasksPackageVersion) diff --git a/src/Layout/redist/targets/BundledTemplates.targets b/src/Layout/redist/targets/BundledTemplates.targets index 586977f2c69e..3cc6b6047b01 100644 --- a/src/Layout/redist/targets/BundledTemplates.targets +++ b/src/Layout/redist/targets/BundledTemplates.targets @@ -8,6 +8,7 @@ + diff --git a/test/dotnet-new.IntegrationTests/McpServerTemplateTests.cs b/test/dotnet-new.IntegrationTests/McpServerTemplateTests.cs new file mode 100644 index 000000000000..d854c18d6f32 --- /dev/null +++ b/test/dotnet-new.IntegrationTests/McpServerTemplateTests.cs @@ -0,0 +1,69 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Xunit.Sdk; + +namespace Microsoft.DotNet.Cli.New.IntegrationTests +{ + public class McpServerTemplateTests : BaseIntegrationTest, IClassFixture + { + private readonly McpServerTemplateFixture _fixture; + private readonly ITestOutputHelper _log; + + public McpServerTemplateTests(McpServerTemplateFixture fixture, ITestOutputHelper log) : base(log) + { + _fixture = fixture; + _log = log; + } + + [Theory] + [InlineData("mcpserver_local", "mcpserver", "--transport", "local")] + [InlineData("mcpserver_remote", "mcpserver", "--transport", "remote")] + [InlineData("mcpserver_local_no_selfcontained", "mcpserver", "--transport", "local", "--self-contained", "false")] + [InlineData("mcpserver_remote_no_selfcontained", "mcpserver", "--transport", "remote", "--self-contained", "false")] + [InlineData("mcpserver_local_aot", "mcpserver", "--transport", "local", "--aot", "true")] + [InlineData("mcpserver_remote_aot", "mcpserver", "--transport", "remote", "--aot", "true")] + public void AllMcpServerProjectsRestoreAndBuild(string testName, params string[] args) + { + string workingDir = Path.Combine(_fixture.BaseWorkingDirectory, testName); + Directory.CreateDirectory(workingDir); + + new DotnetNewCommand(_log, args) + .WithCustomHive(_fixture.HomeDirectory) + .WithWorkingDirectory(workingDir) + .Execute() + .Should() + .ExitWith(0) + .And + .NotHaveStdErr(); + + new DotnetRestoreCommand(_log) + .WithWorkingDirectory(workingDir) + .Execute() + .Should() + .ExitWith(0) + .And + .NotHaveStdErr(); + + new DotnetBuildCommand(_log) + .WithWorkingDirectory(workingDir) + .Execute() + .Should() + .ExitWith(0) + .And + .NotHaveStdErr(); + + Directory.Delete(workingDir, true); + } + } + + public sealed class McpServerTemplateFixture : SharedHomeDirectory + { + public McpServerTemplateFixture(IMessageSink messageSink) : base(messageSink) + { + BaseWorkingDirectory = Utilities.CreateTemporaryFolder(nameof(McpServerTemplateTests)); + } + + internal string BaseWorkingDirectory { get; private set; } + } +}