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")]