From d85bc33ee957837e70b62a1de3c7ecb99ac16c1e Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Mon, 19 Apr 2021 14:22:40 -0700
Subject: [PATCH 1/8] Stop generating *.runtimeconfig.dev.json
This prevents more probing paths being added when not necessary.
---
.../targets/Microsoft.NET.Sdk.props | 6 ++++++
.../targets/Microsoft.NET.Sdk.targets | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
index a9480a836d93..a602088ff2a2 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
@@ -115,6 +115,12 @@ Copyright (c) .NET Foundation. All rights reserved.
$(MSBuildThisFileDirectory)GenerateDeps\GenerateDeps.proj
+
+
+
+ false
+
+
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..6ae0c81e01ce 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
@@ -64,7 +64,7 @@ Copyright (c) .NET Foundation. All rights reserved.
$(TargetDir)$(ProjectDepsFileName)
$(AssemblyName).runtimeconfig.json
$(TargetDir)$(ProjectRuntimeConfigFileName)
- $(TargetDir)$(AssemblyName).runtimeconfig.dev.json
+ $(TargetDir)$(AssemblyName).runtimeconfig.dev.json
true
From 3d6bdaf3dcdc7ae65f9607a15d1151110a7a6793 Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Tue, 20 Apr 2021 10:35:28 -0700
Subject: [PATCH 2/8] Only skip runtimeconfig.dev.json generation if on net6.0+
---
.../targets/Microsoft.NET.Sdk.props | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
index a602088ff2a2..e9292933666f 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
@@ -116,9 +116,10 @@ Copyright (c) .NET Foundation. All rights reserved.
-
+ true
+
- false
+ false
From 26414ea7210c416e68c8467f92d871e511b4e525 Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Tue, 20 Apr 2021 11:23:13 -0700
Subject: [PATCH 3/8] Fix closing property syntax
---
.../Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
index e9292933666f..152a6504f54e 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
@@ -119,7 +119,7 @@ Copyright (c) .NET Foundation. All rights reserved.
true
- false
+ false
From 7b522a2c6490cb248cfb50b7977014276e46f673 Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Wed, 21 Apr 2021 17:26:07 -0700
Subject: [PATCH 4/8] Version 1 of testing generation of runtimeconfig.dev.json
---
.../GivenThatWeWantToBuildANetCoreApp.cs | 31 +++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
index 37c7563899b1..f07f769eb5d5 100644
--- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
+++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
@@ -376,6 +376,37 @@ 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 generateRuntimeConfigDevJson)
+ {
+ 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));
+
+ buildCommand.Execute("/bl");
+
+ var runtimeconfigFile = Path.Combine(
+ buildCommand.GetOutputDirectory(targetFramework).FullName,
+ $"{proj.Name}.runtimeconfig.dev.json");
+
+ buildCommand.GetOutputDirectory(targetFramework)
+ .GetFiles()
+ .Any(x => x.Name.Contains("runtimeconfig.dev.json"))
+ .Should()
+ .Be(generateRuntimeConfigDevJson);
+ }
+
[Theory]
[InlineData("netcoreapp2.0")]
[InlineData("netcoreapp3.0")]
From 914cd2e45483449046fb4dde9a5c9031613f8324 Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Thu, 22 Apr 2021 16:45:42 -0700
Subject: [PATCH 5/8] Set property to stop generating runtimeconfig.dev.json in
M.NET.Sdk.targets
---
.../targets/Microsoft.NET.Sdk.props | 7 -------
.../targets/Microsoft.NET.Sdk.targets | 7 +++++++
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
index 152a6504f54e..a9480a836d93 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
@@ -115,13 +115,6 @@ Copyright (c) .NET Foundation. All rights reserved.
$(MSBuildThisFileDirectory)GenerateDeps\GenerateDeps.proj
-
- true
-
-
- false
-
-
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 6ae0c81e01ce..0e5c8756aa14 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,6 +59,13 @@ Copyright (c) .NET Foundation. All rights reserved.
+
+ true
+
+
+ false
+
+
$(AssemblyName).deps.json
$(TargetDir)$(ProjectDepsFileName)
From 913ee610050ba01e92d602b536a4f66be3267ae7 Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Fri, 23 Apr 2021 16:08:53 -0700
Subject: [PATCH 6/8] If user-set GenerateRuntimeConfigDevFile to take priority
---
.../Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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 0e5c8756aa14..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,7 +59,7 @@ Copyright (c) .NET Foundation. All rights reserved.
-
+
true
From 567a6d61d1c57f65097c643dd7f726f32c66465a Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Fri, 23 Apr 2021 16:09:07 -0700
Subject: [PATCH 7/8] Add tests for user-set property taking priority
---
.../GivenThatWeWantToBuildANetCoreApp.cs | 25 ++++++++++++++-----
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
index f07f769eb5d5..8372cccce452 100644
--- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
+++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
@@ -377,11 +377,21 @@ 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 generateRuntimeConfigDevJson)
+ // Default behavior
+ [InlineData("netcoreapp2.0", "", true)]
+ [InlineData("netcoreapp3.0", "", true)]
+ [InlineData("net5.0", "", true)]
+ [InlineData("net6.0", "", false)]
+ // Allow property override
+ [InlineData("netcoreapp2.0", "true", true)]
+ [InlineData("netcoreapp2.0", "false", false)]
+ [InlineData("netcoreapp3.0", "true", true)]
+ [InlineData("netcoreapp3.0", "false", false)]
+ [InlineData("net5.0", "true", true)]
+ [InlineData("net5.0", "false", false)]
+ [InlineData("net6.0", "true", true)]
+ [InlineData("net6.0", "false", false)]
+ public void It_stops_generating_runtimeconfig_dev_json_after_net6(string targetFramework, string propertyOverride, bool generateRuntimeConfigDevJson)
{
TestProject proj = new TestProject()
{
@@ -392,9 +402,12 @@ public void It_stops_generating_runtimeconfig_dev_json_after_net6(string targetF
IsSdkProject = true
};
+ // User-set property GenerateRuntimeConfigDevFile takes priority.
+ proj.AdditionalProperties.Add("GenerateRuntimeConfigDevFile", propertyOverride);
+
var buildCommand = new BuildCommand(_testAssetsManager.CreateTestProject(proj, identifier: targetFramework));
- buildCommand.Execute("/bl");
+ buildCommand.Execute();
var runtimeconfigFile = Path.Combine(
buildCommand.GetOutputDirectory(targetFramework).FullName,
From cb41b9f3ca219f593b85bcb64e8ffba448576fe9 Mon Sep 17 00:00:00 2001
From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com>
Date: Wed, 28 Apr 2021 14:54:10 -0700
Subject: [PATCH 8/8] Clean up unit tests
---
.../GivenThatWeWantToBuildANetCoreApp.cs | 56 +++++++++++--------
1 file changed, 33 insertions(+), 23 deletions(-)
diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
index 8372cccce452..15caf025efdd 100644
--- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
+++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs
@@ -377,21 +377,11 @@ public static void Main()
}
[Theory]
- // Default behavior
- [InlineData("netcoreapp2.0", "", true)]
- [InlineData("netcoreapp3.0", "", true)]
- [InlineData("net5.0", "", true)]
- [InlineData("net6.0", "", false)]
- // Allow property override
- [InlineData("netcoreapp2.0", "true", true)]
- [InlineData("netcoreapp2.0", "false", false)]
- [InlineData("netcoreapp3.0", "true", true)]
- [InlineData("netcoreapp3.0", "false", false)]
- [InlineData("net5.0", "true", true)]
- [InlineData("net5.0", "false", false)]
- [InlineData("net6.0", "true", true)]
- [InlineData("net6.0", "false", false)]
- public void It_stops_generating_runtimeconfig_dev_json_after_net6(string targetFramework, string propertyOverride, bool generateRuntimeConfigDevJson)
+ [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()
{
@@ -402,22 +392,42 @@ public void It_stops_generating_runtimeconfig_dev_json_after_net6(string targetF
IsSdkProject = true
};
- // User-set property GenerateRuntimeConfigDevFile takes priority.
- proj.AdditionalProperties.Add("GenerateRuntimeConfigDevFile", propertyOverride);
-
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");
- buildCommand.GetOutputDirectory(targetFramework)
- .GetFiles()
- .Any(x => x.Name.Contains("runtimeconfig.dev.json"))
- .Should()
- .Be(generateRuntimeConfigDevJson);
+ // 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]