From f8676bc6024e7150e080ce133d5344533538fb77 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Tue, 25 Apr 2023 17:48:18 +0000 Subject: [PATCH 1/6] Detect duplicate warnings in test --- .../GivenThatWeWantToRunILLink.cs | 92 ++++++++++++++----- 1 file changed, 67 insertions(+), 25 deletions(-) diff --git a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs index 49d064327996..8937113e45d3 100644 --- a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs +++ b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs @@ -11,6 +11,7 @@ using System.Reflection.PortableExecutable; using System.Runtime.CompilerServices; using System.Text; +using System.Text.RegularExpressions; using FluentAssertions; using Microsoft.DotNet.Cli.Utils; using Microsoft.Extensions.DependencyModel; @@ -485,14 +486,26 @@ public void ILLink_analysis_warnings_are_enabled_by_default(string targetFramewo var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework); var publishCommand = new PublishCommand(testAsset); - publishCommand.Execute($"/p:RuntimeIdentifier={rid}") - .Should().Pass() - // trim analysis warnings are enabled - .And.HaveStdOutMatching("warning IL2075.*Program.IL_2075") - .And.HaveStdOutMatching("warning IL2026.*Program.IL_2026.*Testing analysis warning IL2026") - .And.HaveStdOutMatching("warning IL2043.*Program.IL_2043.get") - .And.HaveStdOutMatching("warning IL2046.*Program.Derived.IL_2046") - .And.HaveStdOutMatching("warning IL2093.*Program.Derived.IL_2093"); + var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}"); + result.Should().Pass(); + // trim analysis warnings are enabled + var expectedWarnings = new List { + // ILLink warnings + "Trim analysis warning IL2075.*Program.IL_2075", + "Trim analysis warning IL2026.*Program.IL_2026.*Testing analysis warning IL2026", + "Trim analysis warning IL2043.*Program.IL_2043.get", + "Trim analysis warning IL2026.*Program.Base.IL_2046", + "Trim analysis warning IL2046.*Program.Derived.IL_2046", + "Trim analysis warning IL2093.*Program.Derived.IL_2093", + // analyzer warnings + "warning IL2075.*Type.GetMethod", + "warning IL2026.*Program.IL_2026.*Testing analysis warning IL2026", + "warning IL2043.*Program.IL_2043.get", + "warning IL2026.*Program.Base.IL_2046", + "warning IL2046.*Program.Derived.IL_2046", + "warning IL2093.*Program.Derived.IL_2093" + }; + ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedWarnings, targetFramework, rid, useRegex: true); } [RequiresMSBuildVersionTheory("17.0.0.32901")] @@ -552,9 +565,18 @@ public void ILLink_accepts_option_to_enable_analysis_warnings_without_PublishTri var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework); var publishCommand = new PublishCommand(testAsset); - publishCommand.Execute($"/p:RuntimeIdentifier={rid}") - .Should().Pass() - .And.HaveStdOutMatching("warning IL2026.*Program.IL_2026.*Testing analysis warning IL2026"); + var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}"); + result.Should().Pass(); + var expectedWarnings = new List { + // analyzer warnings + "warning IL2075.*Type.GetMethod", + "warning IL2026.*Program.IL_2026.*Testing analysis warning IL2026", + "warning IL2043.*Program.IL_2043.get", + "warning IL2026.*Program.Base.IL_2046", + "warning IL2046.*Program.Derived.IL_2046", + "warning IL2093.*Program.Derived.IL_2093" + }; + ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedWarnings, targetFramework, rid, useRegex: true); } [RequiresMSBuildVersionTheory("17.0.0.32901")] @@ -673,7 +695,7 @@ public void ILLink_verify_analysis_warnings_hello_world_app_trim_mode_copyused(s var rid = EnvironmentInfo.GetCompatibleRid(targetFramework); // Please keep list below sorted and de-duplicated - var expectedOutput = new List { + var expectedWarnings = new List { "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.ComActivator.GetClassFactoryForTypeInternal(ComActivationContextInternal*", "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.ComponentActivator.GetFunctionPointer(IntPtr, IntPtr, IntPtr, IntPtr, IntPtr, IntPtr", "ILLink : Trim analysis warning IL2026: System.ComponentModel.Design.DesigntimeLicenseContextSerializer.DeserializeUsingBinaryFormatter(DesigntimeLicenseContextSerializer.StreamWrapper, String, RuntimeLicenseContext", @@ -684,13 +706,13 @@ public void ILLink_verify_analysis_warnings_hello_world_app_trim_mode_copyused(s }; switch (targetFramework) { case "net6.0": - expectedOutput.AddRange(new string[] { + expectedWarnings.AddRange(new string[] { "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.InMemoryAssemblyLoader.LoadInMemoryAssembly(IntPtr, IntPtr", }); break; case "net7.0": case "net8.0": - expectedOutput.AddRange(new string[] { + expectedWarnings.AddRange(new string[] { "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.InMemoryAssemblyLoader.LoadInMemoryAssembly(IntPtr, IntPtr", "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.InMemoryAssemblyLoader.LoadInMemoryAssemblyInContextWhenSupported(IntPtr, IntPtr", }); @@ -703,9 +725,9 @@ public void ILLink_verify_analysis_warnings_hello_world_app_trim_mode_copyused(s var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework); var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name)); - var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", "/p:TrimMode=copyused", "/p:TrimmerSingleWarn=false"); + var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", "/p:TrimMode=copyused", "/p:TrimmerSingleWarn=false", "/p:EnableTrimAnalyzer=false"); result.Should().Pass(); - ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedOutput.ToArray(), targetFramework, rid); + ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedWarnings, targetFramework, rid); } [RequiresMSBuildVersionTheory("17.0.0.32901")] @@ -716,7 +738,7 @@ public void ILLink_verify_analysis_warnings_framework_assemblies(string targetFr var rid = EnvironmentInfo.GetCompatibleRid(targetFramework); // Please keep list below sorted and de-duplicated - var expectedOutput = new List { + var expectedWarnings = new List { "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.ComponentActivator.GetFunctionPointer(IntPtr, IntPtr, IntPtr, IntPtr, IntPtr, IntPtr", "ILLink : Trim analysis warning IL2026: System.ComponentModel.Design.DesigntimeLicenseContextSerializer.DeserializeUsingBinaryFormatter(DesigntimeLicenseContextSerializer.StreamWrapper, String, RuntimeLicenseContext", "ILLink : Trim analysis warning IL2026: System.ComponentModel.Design.DesigntimeLicenseContextSerializer.SerializeWithBinaryFormatter(Stream, String, DesigntimeLicenseContext", @@ -731,7 +753,7 @@ public void ILLink_verify_analysis_warnings_framework_assemblies(string targetFr }; switch (targetFramework) { case "net6.0": - expectedOutput.AddRange(new string[] { + expectedWarnings.AddRange(new string[] { "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.InMemoryAssemblyLoader.LoadInMemoryAssembly(IntPtr, IntPtr", "ILLink : Trim analysis warning IL2055: System.Runtime.Serialization.ClassDataContract.UnadaptedClassType.get", "ILLink : Trim analysis warning IL2067: System.Runtime.Serialization.SurrogateDataContract.GetUninitializedObject(Type" @@ -739,7 +761,7 @@ public void ILLink_verify_analysis_warnings_framework_assemblies(string targetFr break; case "net7.0": case "net8.0": - expectedOutput.AddRange(new string[] { + expectedWarnings.AddRange(new string[] { "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.ComActivator.GetClassFactoryForTypeInternal(ComActivationContextInternal*", "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.InMemoryAssemblyLoader.LoadInMemoryAssembly(IntPtr, IntPtr", "ILLink : Trim analysis warning IL2026: Internal.Runtime.InteropServices.InMemoryAssemblyLoader.LoadInMemoryAssemblyInContextWhenSupported(IntPtr, IntPtr", @@ -762,9 +784,9 @@ public void ILLink_verify_analysis_warnings_framework_assemblies(string targetFr var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name)); var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", - "/p:TrimMode=copy", "/p:_TrimmerDefaultAction=copy", "/p:TrimmerSingleWarn=false"); + "/p:TrimMode=copy", "/p:_TrimmerDefaultAction=copy", "/p:TrimmerSingleWarn=false", "/p:EnableTrimAnalyzer=false"); result.Should().Pass(); - ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedOutput.ToArray(), targetFramework, rid); + ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedWarnings, targetFramework, rid); } [RequiresMSBuildVersionTheory("17.0.0.32901")] @@ -780,7 +802,7 @@ public void ILLink_verify_analysis_warnings_hello_world_app_trim_mode_link(strin var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name)); var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", "/p:TrimmerSingleWarn=false"); result.Should().Pass(); - ValidateWarningsOnHelloWorldApp(publishCommand, result, Array.Empty(), targetFramework, rid); + ValidateWarningsOnHelloWorldApp(publishCommand, result, new List(), targetFramework, rid); } [RequiresMSBuildVersionFact("17.0.0.32901")] @@ -797,14 +819,34 @@ public void ILLink_verify_analysis_warnings_hello_world_app_trim_mode_link_5_0() var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", "/p:TrimmerSingleWarn=false", "/p:TrimMode=link"); result.Should().Pass(); - ValidateWarningsOnHelloWorldApp(publishCommand, result, Array.Empty(), targetFramework, rid); + ValidateWarningsOnHelloWorldApp(publishCommand, result, new List(), targetFramework, rid); } - private void ValidateWarningsOnHelloWorldApp(PublishCommand publishCommand, CommandResult result, string[] expectedOutput, string targetFramework, string rid) + private void ValidateWarningsOnHelloWorldApp(PublishCommand publishCommand, CommandResult result, List expectedWarnings, string targetFramework, string rid, bool useRegex = false) { // This checks that there are no unexpected warnings, but does not cause failures for missing expected warnings. var warnings = result.StdOut.Split('\n', '\r').Where(line => line.Contains("warning IL")); - var extraWarnings = warnings.Where(warning => !expectedOutput.Any(expected => warning.Contains(expected))); + + // This should also detect unexpected duplicates of expected warnings. + // Each expected warning string/regex matches at most one warning. + List extraWarnings = new(); + foreach (var warning in warnings) { + bool expected = false; + for (int i = 0; i < expectedWarnings.Count; i++) + { + if ((useRegex && Regex.IsMatch(warning, expectedWarnings[i])) || + (!useRegex && warning.Contains(expectedWarnings[i]))) + { + expectedWarnings.RemoveAt(i); + expected = true; + break; + } + } + + if (!expected) { + extraWarnings.Add(warning); + } + } StringBuilder errorMessage = new StringBuilder(); From 56eb0097503ae468da1629d2c69b276c7dbc0ece Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Tue, 25 Apr 2023 21:33:26 +0000 Subject: [PATCH 2/6] Get downlevel analyzer from packagereference And remove bundled ILLink analyzer --- eng/Version.Details.xml | 4 ---- .../ProcessFrameworkReferences.cs | 9 +++++++++ .../targets/Microsoft.NET.Publish.targets | 7 ++++++- .../targets/Microsoft.NET.Sdk.Analyzers.targets | 9 --------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8ac74994d2d9..84b9b4cc0b42 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -120,10 +120,6 @@ https://github.com/dotnet/runtime 516aa8c9eab570ba4812af3d971be29333da79d2 - - https://github.com/dotnet/linker - c790896f128957acd2999208f44f09ae1e826c8c - https://github.com/dotnet/runtime 516aa8c9eab570ba4812af3d971be29333da79d2 diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs b/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs index 25415800bf60..4d6176510643 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs +++ b/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs @@ -709,6 +709,15 @@ private bool AddToolPack( implicitPackageReferences.Add(buildPackage); } + // Before net8.0, ILLink analyzers shipped in a separate package. + // Add the analyzer package with version taken from KnownILLinkPack. + if (normalizedTargetFrameworkVersion < new Version(8, 0) && toolPackType is ToolPackType.ILLink) + { + var analyzerPackage = new TaskItem("Microsoft.NET.ILLink.Analyzers"); + analyzerPackage.SetMetadata(MetadataKeys.Version, packVersion); + implicitPackageReferences.Add(analyzerPackage); + } + return true; } diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets index bf2adf094057..402fe75bbecb 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets @@ -17,7 +17,12 @@ Copyright (c) .NET Foundation. All rights reserved. true true - <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == '' And ('$(PublishTrimmed)' == 'true' Or '$(IsTrimmable)' == 'true')">true + <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == '' And ( + '$(PublishTrimmed)' == 'true' Or + '$(IsTrimmable)' == 'true' Or + '$(EnableAotAnalyzer)' == 'true' Or + '$(EnableTrimAnalyzer)' == 'true' Or + '$(EnableSingleFileAnalyzer)' == 'true')">true <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == ''">false false diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.Analyzers.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.Analyzers.targets index 80e827d0d9c3..732e5ee20efe 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.Analyzers.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.Analyzers.targets @@ -101,8 +101,6 @@ Copyright (c) .NET Foundation. All rights reserved. Condition="'$(Language)' == 'C#' Or '$(Language)' == 'VB'" /> - @@ -124,13 +122,6 @@ Copyright (c) .NET Foundation. All rights reserved. IsImplicitlyDefined="true" /> - - - - - From 3faf3712428aea69d93a0c618f01de3824546e65 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Wed, 26 Apr 2023 17:25:26 +0000 Subject: [PATCH 3/6] Add PublishSingleFile condition --- .../targets/Microsoft.NET.Publish.targets | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets index 402fe75bbecb..725f7c2e314e 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets @@ -19,6 +19,7 @@ Copyright (c) .NET Foundation. All rights reserved. true <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == '' And ( '$(PublishTrimmed)' == 'true' Or + '$(PublishSingleFile)' == 'true' Or '$(IsTrimmable)' == 'true' Or '$(EnableAotAnalyzer)' == 'true' Or '$(EnableTrimAnalyzer)' == 'true' Or From 2d58f8a9128dc0f7420fc613a185260ef909e833 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Wed, 26 Apr 2023 17:28:51 +0000 Subject: [PATCH 4/6] Clean up analyzer layout logic --- src/Layout/redist/redist.csproj | 1 - src/Layout/redist/targets/GenerateLayout.targets | 5 ----- 2 files changed, 6 deletions(-) diff --git a/src/Layout/redist/redist.csproj b/src/Layout/redist/redist.csproj index ada9291ad247..3042bb92be44 100644 --- a/src/Layout/redist/redist.csproj +++ b/src/Layout/redist/redist.csproj @@ -35,7 +35,6 @@ - diff --git a/src/Layout/redist/targets/GenerateLayout.targets b/src/Layout/redist/targets/GenerateLayout.targets index f83c0b39f176..12b088fbf6c5 100644 --- a/src/Layout/redist/targets/GenerateLayout.targets +++ b/src/Layout/redist/targets/GenerateLayout.targets @@ -57,9 +57,6 @@ - - - @@ -78,8 +75,6 @@ - - From 63d8fec11d427d15d90da58a6ca7268243e8c231 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Fri, 26 May 2023 19:55:03 +0000 Subject: [PATCH 5/6] Rename _IsTrimmingEnabled to _RequiresILLinkPack --- .../Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs | 4 ++-- .../targets/Microsoft.NET.Publish.targets | 6 +++--- .../Microsoft.NET.Sdk.FrameworkReferenceResolution.targets | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs b/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs index 52a9f061fcae..f6d34e3b351b 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs +++ b/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs @@ -44,7 +44,7 @@ public class ProcessFrameworkReferences : TaskBase public bool ReadyToRunUseCrossgen2 { get; set; } - public bool TrimmingEnabled { get; set; } + public bool RequiresILLinkPack { get; set; } public bool AotEnabled { get; set; } @@ -384,7 +384,7 @@ var runtimeRequiredByDeployment } } - if (TrimmingEnabled) + if (RequiresILLinkPack) { if (!AddToolPack(ToolPackType.ILLink, _normalizedTargetFrameworkVersion, packagesToDownload, implicitPackageReferences)) { diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets index 61b228bfbba7..8bba61aab697 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets @@ -22,14 +22,14 @@ Copyright (c) .NET Foundation. All rights reserved. true true - <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == '' And ( + <_RequiresILLinkPack Condition="'$(_RequiresILLinkPack)' == '' And ( '$(PublishTrimmed)' == 'true' Or '$(PublishSingleFile)' == 'true' Or '$(IsTrimmable)' == 'true' Or '$(EnableAotAnalyzer)' == 'true' Or '$(EnableTrimAnalyzer)' == 'true' Or - '$(EnableSingleFileAnalyzer)' == 'true')">true - <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == ''">false + '$(EnableSingleFileAnalyzer)' == 'true')">true + <_RequiresILLinkPack Condition="'$(_RequiresILLinkPack)' == ''">false false diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets index 8c26d26d161a..d4a5897a1744 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets @@ -99,7 +99,7 @@ Copyright (c) .NET Foundation. All rights reserved. SelfContained="$(SelfContained)" ReadyToRunEnabled="$(PublishReadyToRun)" ReadyToRunUseCrossgen2="$(PublishReadyToRunUseCrossgen2)" - TrimmingEnabled="$(_IsTrimmingEnabled)" + RequiresILLinkPack="$(_RequiresILLinkPack)" AotEnabled="$(PublishAot)" AotUseKnownRuntimePackForTarget="$(PublishAotUsingRuntimePack)" RuntimeIdentifier="$(RuntimeIdentifier)" From ff9d366b117dca9fe2ab3238a8492baef1ce2de9 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Tue, 30 May 2023 15:56:37 -0700 Subject: [PATCH 6/6] Fix MSBuild.exe warning output in tests --- .../GivenThatWeWantToRunILLink.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs index 1791ee4ea4d4..5e99619fdf5d 100644 --- a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs +++ b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs @@ -487,7 +487,8 @@ public void ILLink_analysis_warnings_are_enabled_by_default(string targetFramewo var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework); var publishCommand = new PublishCommand(testAsset); - var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}"); + // Minimal verbosity prevents desktop MSBuild.exe from duplicating the warnings in the warning summary + var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/v:m"); result.Should().Pass(); // trim analysis warnings are enabled var expectedWarnings = new List { @@ -566,7 +567,8 @@ public void ILLink_accepts_option_to_enable_analysis_warnings_without_PublishTri var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework); var publishCommand = new PublishCommand(testAsset); - var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}"); + // Minimal verbosity prevents desktop MSBuild.exe from duplicating the warnings in the warning summary + var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/v:m"); result.Should().Pass(); var expectedWarnings = new List { // analyzer warnings @@ -727,7 +729,9 @@ public void ILLink_verify_analysis_warnings_hello_world_app_trim_mode_copyused(s var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework); var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name)); - var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", "/p:TrimMode=copyused", "/p:TrimmerSingleWarn=false", "/p:EnableTrimAnalyzer=false"); + var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", "/p:TrimMode=copyused", "/p:TrimmerSingleWarn=false", "/p:EnableTrimAnalyzer=false", + // Minimal verbosity prevents desktop MSBuild.exe from duplicating the warnings in the warning summary + "/v:m"); result.Should().Pass(); ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedWarnings, targetFramework, rid); } @@ -787,7 +791,9 @@ public void ILLink_verify_analysis_warnings_framework_assemblies(string targetFr var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name)); var result = publishCommand.Execute($"/p:RuntimeIdentifier={rid}", "/p:PublishTrimmed=true", - "/p:TrimMode=copy", "/p:_TrimmerDefaultAction=copy", "/p:TrimmerSingleWarn=false", "/p:EnableTrimAnalyzer=false"); + "/p:TrimMode=copy", "/p:_TrimmerDefaultAction=copy", "/p:TrimmerSingleWarn=false", "/p:EnableTrimAnalyzer=false", + // Minimal verbosity prevents desktop MSBuild.exe from duplicating the warnings in the warning summary + "/v:m"); result.Should().Pass(); ValidateWarningsOnHelloWorldApp(publishCommand, result, expectedWarnings, targetFramework, rid); }