diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets index 8cf34c71025e..a4fe12f3115f 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets @@ -59,12 +59,19 @@ Copyright (c) .NET Foundation. All rights reserved. + + true + + + false + + $(AssemblyName).deps.json $(TargetDir)$(ProjectDepsFileName) $(AssemblyName).runtimeconfig.json $(TargetDir)$(ProjectRuntimeConfigFileName) - $(TargetDir)$(AssemblyName).runtimeconfig.dev.json + $(TargetDir)$(AssemblyName).runtimeconfig.dev.json true diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs index 37c7563899b1..15caf025efdd 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs @@ -376,6 +376,60 @@ public static void Main() } + [Theory] + [InlineData("netcoreapp2.0", true)] + [InlineData("netcoreapp3.0", true)] + [InlineData("net5.0", true)] + [InlineData("net6.0", false)] + public void It_stops_generating_runtimeconfig_dev_json_after_net6(string targetFramework, bool shouldGenerateRuntimeConfigDevJson) + { + TestProject proj = new TestProject() + { + Name = "NetCoreApp", + ProjectSdk = "Microsoft.NET.Sdk", + IsExe = true, + TargetFrameworks = targetFramework, + IsSdkProject = true + }; + + var buildCommand = new BuildCommand(_testAssetsManager.CreateTestProject(proj, identifier: targetFramework)); + var runtimeconfigFile = Path.Combine( + buildCommand.GetOutputDirectory(targetFramework).FullName, + $"{proj.Name}.runtimeconfig.dev.json"); + + buildCommand.Execute(); + File.Exists(runtimeconfigFile).Should().Be(shouldGenerateRuntimeConfigDevJson); + } + + [Theory] + [InlineData("netcoreapp2.0")] + [InlineData("netcoreapp3.0")] + [InlineData("net5.0")] + [InlineData("net6.0")] + public void It_stops_generating_runtimeconfig_dev_json_after_net6_allow_property_override(string targetFramework) + { + TestProject proj = new TestProject() + { + Name = "NetCoreApp", + ProjectSdk = "Microsoft.NET.Sdk", + IsExe = true, + TargetFrameworks = targetFramework, + IsSdkProject = true + }; + + var buildCommand = new BuildCommand(_testAssetsManager.CreateTestProject(proj, identifier: targetFramework)); + var runtimeconfigFile = Path.Combine( + buildCommand.GetOutputDirectory(targetFramework).FullName, + $"{proj.Name}.runtimeconfig.dev.json"); + + // GenerateRuntimeConfigDevFile overrides default behavior + buildCommand.Execute("/p:GenerateRuntimeConfigDevFile=true"); + File.Exists(runtimeconfigFile).Should().BeTrue(); + + buildCommand.Execute("/p:GenerateRuntimeConfigDevFile=false"); + File.Exists(runtimeconfigFile).Should().BeFalse(); + } + [Theory] [InlineData("netcoreapp2.0")] [InlineData("netcoreapp3.0")]