From 17f4cecab84ec779b40deef673353190f1794d6b Mon Sep 17 00:00:00 2001 From: Vatsan Madhavan Date: Thu, 2 Dec 2021 16:48:25 -0800 Subject: [PATCH 1/5] Support for DisableDiagnosticTracing DisableDiagnosticTracing=true will disable the definition of `TRACE` in `DefineConstants` --- .../targets/Microsoft.NET.Sdk.CSharp.targets | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets index 5b4887415efa..415f2db2e863 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets @@ -34,6 +34,15 @@ Copyright (c) .NET Foundation. All rights reserved. $(DefineConstants);$(VersionlessImplicitFrameworkDefine);$(ImplicitFrameworkDefine);$(BackwardsCompatFrameworkDefine) + + + + <_NormalizedDefineConstants>$(DefineConstants.TrimEnd(';')); + $(_NormalizedDefineConstants.Replace('TRACE;', '').TrimEnd(';')) + + From d11a20b156d54cd2a2611c692eb4cbc75a0106e9 Mon Sep 17 00:00:00 2001 From: Vatsan Madhavan Date: Fri, 3 Dec 2021 12:08:40 -0800 Subject: [PATCH 2/5] Implement TRACE-pruning in BeforeCommon.targets --- .../Microsoft.NET.Sdk.BeforeCommon.targets | 17 ++++++++++++++++- .../targets/Microsoft.NET.Sdk.CSharp.targets | 9 --------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets index 3190a6fd23ba..24c4519df1f1 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets @@ -229,10 +229,25 @@ Copyright (c) .NET Foundation. All rights reserved. + + + + <_DefineConstantsWithoutTrace Include="$(DefineConstants)" /> + <_DefineConstantsWithoutTrace Remove="TRACE"/> + + + + @(_DefineConstantsWithoutTrace) + + + $(DefineConstants);@(_ImplicitDefineConstant) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets index 415f2db2e863..5b4887415efa 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.CSharp.targets @@ -34,15 +34,6 @@ Copyright (c) .NET Foundation. All rights reserved. $(DefineConstants);$(VersionlessImplicitFrameworkDefine);$(ImplicitFrameworkDefine);$(BackwardsCompatFrameworkDefine) - - - - <_NormalizedDefineConstants>$(DefineConstants.TrimEnd(';')); - $(_NormalizedDefineConstants.Replace('TRACE;', '').TrimEnd(';')) - - From d67b02edf6a48ac050792c8f699ca4d7d8135407 Mon Sep 17 00:00:00 2001 From: Marc Paine Date: Thu, 6 Jul 2023 16:24:17 -0700 Subject: [PATCH 3/5] Add test for the DisableDiagnosticTracing property --- .../GivenThatWeWantToBuildANetCoreApp.cs | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs index 2f6d197eca6f..cdd29aee21c0 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs @@ -1028,5 +1028,48 @@ public void It_warns_on_nonportable_rids(string targetFramework, string[] rids, result.Should().NotHaveStdOutContaining("NETSDK1206"); } } + + [Theory] + [InlineData(true, "TRACE DISABLED")] + [InlineData(false, "TRACE ENABLED")] + public void It_can_use_implicitly_defined_compilation_constants(bool disableTracing, string expectedOutput) + { + var testProj = new TestProject() + { + Name = "DisableTracing_" + disableTracing.ToString(), + TargetFrameworks = ToolsetInfo.CurrentTargetFramework, + IsExe = true, + }; + if (disableTracing == true) + { + testProj.AdditionalProperties["DisableDiagnosticTracing"] = "true"; + } + + testProj.SourceFiles[$"{testProj.Name}.cs"] = @" +using System; +class Program +{ + static void Main(string[] args) + { + #if TRACE + Console.WriteLine(""TRACE ENABLED""); + #endif + #if !TRACE + Console.WriteLine(""TRACE DISABLED""); + #endif + } +}"; + var testAsset = _testAssetsManager.CreateTestProject(testProj); + + var buildCommand = new BuildCommand(Log, Path.Combine(testAsset.Path, testProj.Name)); + buildCommand + .Execute() + .Should() + .Pass(); + + var runCommand = new RunExeCommand(Log, Path.Combine(buildCommand.GetOutputDirectory(ToolsetInfo.CurrentTargetFramework).FullName, $"{testProj.Name}.exe")); + var stdOut = runCommand.Execute().StdOut; + stdOut.Should().BeEquivalentTo(expectedOutput); + } } } From 2fd7244b01a38f841327872ec76f4c6e39afb50a Mon Sep 17 00:00:00 2001 From: Marc Paine Date: Fri, 7 Jul 2023 13:41:49 -0700 Subject: [PATCH 4/5] applying suggestions from review --- .../GivenThatWeWantToBuildANetCoreApp.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs index cdd29aee21c0..bf1a02845dca 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs @@ -1059,7 +1059,7 @@ static void Main(string[] args) #endif } }"; - var testAsset = _testAssetsManager.CreateTestProject(testProj); + var testAsset = _testAssetsManager.CreateTestProject(testProj, identifier: disableTracing.ToString()); var buildCommand = new BuildCommand(Log, Path.Combine(testAsset.Path, testProj.Name)); buildCommand @@ -1067,9 +1067,10 @@ static void Main(string[] args) .Should() .Pass(); - var runCommand = new RunExeCommand(Log, Path.Combine(buildCommand.GetOutputDirectory(ToolsetInfo.CurrentTargetFramework).FullName, $"{testProj.Name}.exe")); - var stdOut = runCommand.Execute().StdOut; - stdOut.Should().BeEquivalentTo(expectedOutput); + var runCommand = new RunExeCommand(Log, Path.Combine(buildCommand.GetOutputDirectory(ToolsetInfo.CurrentTargetFramework).FullName, $"{testProj.Name}{EnvironmentInfo.ExecutableExtension}")); + runCommand + .Execute(). + .Should().HaveStdOut(expectedOutput); } } } From 81f75a074d3d95963d8d2af7bfc1990a248f41a8 Mon Sep 17 00:00:00 2001 From: Marc Paine Date: Fri, 7 Jul 2023 16:35:44 -0700 Subject: [PATCH 5/5] Fix typo in merging PR suggestions --- .../GivenThatWeWantToBuildANetCoreApp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs index bf1a02845dca..5ed91b6038e1 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs @@ -1069,7 +1069,7 @@ static void Main(string[] args) var runCommand = new RunExeCommand(Log, Path.Combine(buildCommand.GetOutputDirectory(ToolsetInfo.CurrentTargetFramework).FullName, $"{testProj.Name}{EnvironmentInfo.ExecutableExtension}")); runCommand - .Execute(). + .Execute() .Should().HaveStdOut(expectedOutput); } }