From a596f3101dc7716343e780ad165c620ac7f5bbbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Fri, 14 Jun 2024 09:38:05 +0200 Subject: [PATCH 1/7] Make it possible for featuredefault substitutions to only apply at publish time Fixes #96539. Fixes #102303. Two possible approaches were discussed in #96539 but doing it in illinker feels more straightforward. --- eng/ILLink.Substitutions.Resources.template | 8 ++++++- eng/illink.targets | 4 +++- src/libraries/Common/src/System/SR.cs | 5 ++++- src/libraries/Common/src/System/SR.vb | 22 +++++++++++++------ .../System.Diagnostics.FileVersionInfo.csproj | 3 ++- src/tools/illink/src/linker/Linker/Driver.cs | 8 +++++++ .../src/linker/Linker/FeatureSettings.cs | 4 ++++ .../illink/src/linker/Linker/LinkContext.cs | 9 ++++++++ .../FeatureSettings/FeatureDescriptors.cs | 4 ++++ .../FeatureSettings/FeatureDescriptors.xml | 12 ++++++++++ 10 files changed, 68 insertions(+), 11 deletions(-) diff --git a/eng/ILLink.Substitutions.Resources.template b/eng/ILLink.Substitutions.Resources.template index 9381443ba3915b..445102da239ef3 100644 --- a/eng/ILLink.Substitutions.Resources.template +++ b/eng/ILLink.Substitutions.Resources.template @@ -1,10 +1,16 @@ - + + + + + + + diff --git a/eng/illink.targets b/eng/illink.targets index 962e6f49ceb786..a078d7e6a3f723 100644 --- a/eng/illink.targets +++ b/eng/illink.targets @@ -37,7 +37,7 @@ true $(IntermediateOutputPath)ILLink.Resources.Substitutions.xml - true + true @@ -222,6 +222,8 @@ $(LinkerNoWarn);IL2008;IL2009;IL2121;IL2025;IL2035 $(ILLinkArgs) --nowarn $(LinkerNoWarn) $(ILLinkArgs) --disable-opt ipconstprop + + $(ILLinkArgs) --ignore-featuredefault System.Resources.UseSystemResourceKeys diff --git a/src/libraries/Common/src/System/SR.cs b/src/libraries/Common/src/System/SR.cs index 9bc27cb42f7d08..8213e00d94eac3 100644 --- a/src/libraries/Common/src/System/SR.cs +++ b/src/libraries/Common/src/System/SR.cs @@ -7,7 +7,10 @@ namespace System { internal static partial class SR { - private static readonly bool s_usingResourceKeys = AppContext.TryGetSwitch("System.Resources.UseSystemResourceKeys", out bool usingResourceKeys) ? usingResourceKeys : false; + private static readonly bool s_usingResourceKeys = GetUsingResourceKeysSwitchValue(); + + // This method is a target of ILLink substitution. + private static bool GetUsingResourceKeysSwitchValue() => AppContext.TryGetSwitch("System.Resources.UseSystemResourceKeys", out bool usingResourceKeys) ? usingResourceKeys : false; // This method is used to decide if we need to append the exception message parameters to the message when calling SR.Format. // by default it returns the value of System.Resources.UseSystemResourceKeys AppContext switch or false if not specified. diff --git a/src/libraries/Common/src/System/SR.vb b/src/libraries/Common/src/System/SR.vb index 67173209928773..1bbe9642dc6a02 100644 --- a/src/libraries/Common/src/System/SR.vb +++ b/src/libraries/Common/src/System/SR.vb @@ -11,15 +11,23 @@ Imports System.Resources Namespace System Friend NotInheritable Class SR - ' This method is used to decide if we need to append the exception message parameters to the message when calling SR.Format. - ' by default it returns false. + Private Shared ReadOnly s_usingResourceKeys As Boolean = GetUsingResourceKeysSwitchValue() + + Private Shared Function GetUsingResourceKeysSwitchValue() As Boolean + Dim usingResourceKeys As Boolean + If (AppContext.TryGetSwitch("System.Resources.UseSystemResourceKeys", usingResourceKeys)) Then + Return usingResourceKeys + End If + + Return False + End Function + + ' This method Is used to decide if we need to append the exception message parameters to the message when calling SR.Format. + ' by default it returns the value of System.Resources.UseSystemResourceKeys AppContext switch Or false if Not specified. ' Native code generators can replace the value this returns based on user input at the time of native code generation. - ' Marked as NoInlining because if this is used in an AoT compiled app that is not compiled into a single file, the user - ' could compile each module with a different setting for this. We want to make sure there's a consistent behavior - ' that doesn't depend on which native module this method got inlined into. - + ' The trimming tools are also capable of replacing the value of this method when the application Is being trimmed. Public Shared Function UsingResourceKeys() As Boolean - Return False + Return s_usingResourceKeys End Function Friend Shared Function GetResourceString(ByVal resourceKey As String, Optional ByVal defaultString As String = Nothing) As String diff --git a/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj b/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj index 7ea27d698551d9..9184edd9d348c3 100644 --- a/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj +++ b/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj @@ -9,7 +9,8 @@ $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) - SR.DiagnosticsFileVersionInfo_PlatformNotSupported + SR.DiagnosticsFileVersionInfo_PlatformNotSupported + true diff --git a/src/tools/illink/src/linker/Linker/Driver.cs b/src/tools/illink/src/linker/Linker/Driver.cs index 149abe748e45e6..7ec21582142458 100644 --- a/src/tools/illink/src/linker/Linker/Driver.cs +++ b/src/tools/illink/src/linker/Linker/Driver.cs @@ -470,6 +470,14 @@ protected int SetupContext (ILogger? customLogger = null) continue; } + case "--ignore-featuredefault": { + if (!GetStringParam (token, out string? featureName)) + return -1; + + context.SetIgnoredFeatureDefault (featureName); + + continue; + } case "--new-mvid": // // This is not same as --deterministic which calculates MVID diff --git a/src/tools/illink/src/linker/Linker/FeatureSettings.cs b/src/tools/illink/src/linker/Linker/FeatureSettings.cs index 84bc8d2393ca7a..d2f2ed2ac36314 100644 --- a/src/tools/illink/src/linker/Linker/FeatureSettings.cs +++ b/src/tools/illink/src/linker/Linker/FeatureSettings.cs @@ -33,6 +33,10 @@ public static bool ShouldProcessElement (XPathNavigator nav, LinkContext context return false; } + if (bIsDefault && context.IgnoredFeatureDefaultSettings.Contains (feature)) { + bIsDefault = false; + } + if (!context.FeatureSettings.TryGetValue (feature, out bool featureSetting)) return bIsDefault; diff --git a/src/tools/illink/src/linker/Linker/LinkContext.cs b/src/tools/illink/src/linker/Linker/LinkContext.cs index 9e6ec519d3054e..d1f08942350a2c 100644 --- a/src/tools/illink/src/linker/Linker/LinkContext.cs +++ b/src/tools/illink/src/linker/Linker/LinkContext.cs @@ -136,6 +136,8 @@ public Pipeline Pipeline { public Dictionary FeatureSettings { get; init; } + public HashSet IgnoredFeatureDefaultSettings { get; init; } + public List PInvokes { get; private set; } public string? PInvokesListFile; @@ -218,6 +220,7 @@ protected LinkContext (Pipeline pipeline, ILogger logger, string outputDirectory _isTrimmable = new Dictionary (); OutputDirectory = outputDirectory; FeatureSettings = new Dictionary (StringComparer.Ordinal); + IgnoredFeatureDefaultSettings = new HashSet (StringComparer.Ordinal); SymbolReaderProvider = new DefaultSymbolReaderProvider (false); @@ -264,6 +267,12 @@ public void SetFeatureValue (string feature, bool value) FeatureSettings[feature] = value; } + public void SetIgnoredFeatureDefault (string feature) + { + Debug.Assert (!string.IsNullOrEmpty (feature)); + IgnoredFeatureDefaultSettings.Add (feature); + } + public bool HasFeatureValue (string feature, bool value) { return FeatureSettings.TryGetValue (feature, out bool fvalue) && value == fvalue; diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs index 5023372e6b7775..c3f0fa79b6f32a 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs @@ -15,6 +15,7 @@ namespace Mono.Linker.Tests.Cases.FeatureSettings [SetupLinkerArgument ("--feature", "FieldCondition", "true")] [SetupLinkerArgument ("--feature", "PropertyCondition", "false")] [SetupLinkerArgument ("--feature", "EventCondition", "true")] + [SetupLinkerArgument ("--ignore-featuredefault", "IgnoredDefaultCondition")] public class FeatureDescriptors { public static void Main () @@ -25,6 +26,9 @@ public static void Main () static bool DefaultConditionTrue; static bool DefaultConditionFalse; + static bool IgnoredDefaultConditionTrue; + static bool IgnoredDefaultConditionFalse; + [Kept] static bool GlobalConditionTrue; static bool GlobalConditionFalse; diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml index c2b88aa4121b57..fc72d58ff6807e 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml @@ -47,4 +47,16 @@ + + + + + + + + + + + + From b9f620f43538439c9f623dda45d2a6eacb4987cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Fri, 14 Jun 2024 10:31:21 +0200 Subject: [PATCH 2/7] Update System.Diagnostics.FileVersionInfo.csproj --- .../src/System.Diagnostics.FileVersionInfo.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj b/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj index 9184edd9d348c3..230451074f3e08 100644 --- a/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj +++ b/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj @@ -10,7 +10,7 @@ $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) SR.DiagnosticsFileVersionInfo_PlatformNotSupported - true + true From b2ee1766a4b524074fc52069482ac5e72bf5e396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Fri, 14 Jun 2024 11:15:45 +0200 Subject: [PATCH 3/7] Update CompatibilitySuppressions.xml --- src/tools/illink/src/linker/CompatibilitySuppressions.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tools/illink/src/linker/CompatibilitySuppressions.xml b/src/tools/illink/src/linker/CompatibilitySuppressions.xml index 08ab3bdda16593..c0b0096a1f07f7 100644 --- a/src/tools/illink/src/linker/CompatibilitySuppressions.xml +++ b/src/tools/illink/src/linker/CompatibilitySuppressions.xml @@ -985,6 +985,10 @@ CP0002 M:Mono.Linker.LinkContext.get_IgnoreUnresolved + + CP0002 + M:Mono.Linker.LinkContext.get_IgnoredFeatureDefaultSettings + CP0002 M:Mono.Linker.LinkContext.get_KeepMembersForDebugger From cd16de69d29532f99be1f015ff6d084b5825a178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Fri, 14 Jun 2024 15:03:35 +0200 Subject: [PATCH 4/7] Update CompatibilitySuppressions.xml --- .../src/linker/CompatibilitySuppressions.xml | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/tools/illink/src/linker/CompatibilitySuppressions.xml b/src/tools/illink/src/linker/CompatibilitySuppressions.xml index c0b0096a1f07f7..cea26cda03a21e 100644 --- a/src/tools/illink/src/linker/CompatibilitySuppressions.xml +++ b/src/tools/illink/src/linker/CompatibilitySuppressions.xml @@ -975,19 +975,19 @@ CP0002 - M:Mono.Linker.LinkContext.get_IgnoreLinkAttributes + M:Mono.Linker.LinkContext.get_IgnoredFeatureDefaultSettings CP0002 - M:Mono.Linker.LinkContext.get_IgnoreSubstitutions + M:Mono.Linker.LinkContext.get_IgnoreLinkAttributes CP0002 - M:Mono.Linker.LinkContext.get_IgnoreUnresolved + M:Mono.Linker.LinkContext.get_IgnoreSubstitutions CP0002 - M:Mono.Linker.LinkContext.get_IgnoredFeatureDefaultSettings + M:Mono.Linker.LinkContext.get_IgnoreUnresolved CP0002 @@ -1507,12 +1507,24 @@ ref/net9.0/illink.dll lib/net9.0/illink.dll + + CP0002 + M:Mono.Linker.LinkContext.set_IgnoredFeatureDefaultSettings(System.Collections.Generic.HashSet{System.String}) + ref/net9.0/illink.dll + lib/net9.0/illink.dll + CP0002 M:Mono.Linker.LinkContext.set_KeepComInterfaces(System.Boolean) ref/net9.0/illink.dll lib/net9.0/illink.dll + + CP0002 + M:Mono.Linker.LinkContext.SetIgnoredFeatureDefault(System.String) + ref/net9.0/illink.dll + lib/net9.0/illink.dll + CP0008 T:Mono.Linker.LinkContext From d7bb029f9f83b6b4447e36a418db164bd5764197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Mon, 17 Jun 2024 09:06:09 +0200 Subject: [PATCH 5/7] wip --- eng/ILLink.Substitutions.Resources.template | 2 +- eng/illink.targets | 2 -- .../src/linker/CompatibilitySuppressions.xml | 16 ---------------- src/tools/illink/src/linker/Linker/Driver.cs | 8 -------- .../illink/src/linker/Linker/FeatureSettings.cs | 4 ---- .../illink/src/linker/Linker/LinkContext.cs | 9 --------- .../FeatureSettings/FeatureDescriptors.cs | 4 ---- .../FeatureSettings/FeatureDescriptors.xml | 12 ------------ 8 files changed, 1 insertion(+), 56 deletions(-) diff --git a/eng/ILLink.Substitutions.Resources.template b/eng/ILLink.Substitutions.Resources.template index 445102da239ef3..f08ff35dc1d345 100644 --- a/eng/ILLink.Substitutions.Resources.template +++ b/eng/ILLink.Substitutions.Resources.template @@ -7,7 +7,7 @@ - + diff --git a/eng/illink.targets b/eng/illink.targets index a078d7e6a3f723..932c712429cf31 100644 --- a/eng/illink.targets +++ b/eng/illink.targets @@ -222,8 +222,6 @@ $(LinkerNoWarn);IL2008;IL2009;IL2121;IL2025;IL2035 $(ILLinkArgs) --nowarn $(LinkerNoWarn) $(ILLinkArgs) --disable-opt ipconstprop - - $(ILLinkArgs) --ignore-featuredefault System.Resources.UseSystemResourceKeys diff --git a/src/tools/illink/src/linker/CompatibilitySuppressions.xml b/src/tools/illink/src/linker/CompatibilitySuppressions.xml index cea26cda03a21e..08ab3bdda16593 100644 --- a/src/tools/illink/src/linker/CompatibilitySuppressions.xml +++ b/src/tools/illink/src/linker/CompatibilitySuppressions.xml @@ -973,10 +973,6 @@ CP0002 M:Mono.Linker.LinkContext.get_IgnoreDescriptors - - CP0002 - M:Mono.Linker.LinkContext.get_IgnoredFeatureDefaultSettings - CP0002 M:Mono.Linker.LinkContext.get_IgnoreLinkAttributes @@ -1507,24 +1503,12 @@ ref/net9.0/illink.dll lib/net9.0/illink.dll - - CP0002 - M:Mono.Linker.LinkContext.set_IgnoredFeatureDefaultSettings(System.Collections.Generic.HashSet{System.String}) - ref/net9.0/illink.dll - lib/net9.0/illink.dll - CP0002 M:Mono.Linker.LinkContext.set_KeepComInterfaces(System.Boolean) ref/net9.0/illink.dll lib/net9.0/illink.dll - - CP0002 - M:Mono.Linker.LinkContext.SetIgnoredFeatureDefault(System.String) - ref/net9.0/illink.dll - lib/net9.0/illink.dll - CP0008 T:Mono.Linker.LinkContext diff --git a/src/tools/illink/src/linker/Linker/Driver.cs b/src/tools/illink/src/linker/Linker/Driver.cs index 7ec21582142458..149abe748e45e6 100644 --- a/src/tools/illink/src/linker/Linker/Driver.cs +++ b/src/tools/illink/src/linker/Linker/Driver.cs @@ -470,14 +470,6 @@ protected int SetupContext (ILogger? customLogger = null) continue; } - case "--ignore-featuredefault": { - if (!GetStringParam (token, out string? featureName)) - return -1; - - context.SetIgnoredFeatureDefault (featureName); - - continue; - } case "--new-mvid": // // This is not same as --deterministic which calculates MVID diff --git a/src/tools/illink/src/linker/Linker/FeatureSettings.cs b/src/tools/illink/src/linker/Linker/FeatureSettings.cs index d2f2ed2ac36314..84bc8d2393ca7a 100644 --- a/src/tools/illink/src/linker/Linker/FeatureSettings.cs +++ b/src/tools/illink/src/linker/Linker/FeatureSettings.cs @@ -33,10 +33,6 @@ public static bool ShouldProcessElement (XPathNavigator nav, LinkContext context return false; } - if (bIsDefault && context.IgnoredFeatureDefaultSettings.Contains (feature)) { - bIsDefault = false; - } - if (!context.FeatureSettings.TryGetValue (feature, out bool featureSetting)) return bIsDefault; diff --git a/src/tools/illink/src/linker/Linker/LinkContext.cs b/src/tools/illink/src/linker/Linker/LinkContext.cs index d1f08942350a2c..9e6ec519d3054e 100644 --- a/src/tools/illink/src/linker/Linker/LinkContext.cs +++ b/src/tools/illink/src/linker/Linker/LinkContext.cs @@ -136,8 +136,6 @@ public Pipeline Pipeline { public Dictionary FeatureSettings { get; init; } - public HashSet IgnoredFeatureDefaultSettings { get; init; } - public List PInvokes { get; private set; } public string? PInvokesListFile; @@ -220,7 +218,6 @@ protected LinkContext (Pipeline pipeline, ILogger logger, string outputDirectory _isTrimmable = new Dictionary (); OutputDirectory = outputDirectory; FeatureSettings = new Dictionary (StringComparer.Ordinal); - IgnoredFeatureDefaultSettings = new HashSet (StringComparer.Ordinal); SymbolReaderProvider = new DefaultSymbolReaderProvider (false); @@ -267,12 +264,6 @@ public void SetFeatureValue (string feature, bool value) FeatureSettings[feature] = value; } - public void SetIgnoredFeatureDefault (string feature) - { - Debug.Assert (!string.IsNullOrEmpty (feature)); - IgnoredFeatureDefaultSettings.Add (feature); - } - public bool HasFeatureValue (string feature, bool value) { return FeatureSettings.TryGetValue (feature, out bool fvalue) && value == fvalue; diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs index c3f0fa79b6f32a..5023372e6b7775 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.cs @@ -15,7 +15,6 @@ namespace Mono.Linker.Tests.Cases.FeatureSettings [SetupLinkerArgument ("--feature", "FieldCondition", "true")] [SetupLinkerArgument ("--feature", "PropertyCondition", "false")] [SetupLinkerArgument ("--feature", "EventCondition", "true")] - [SetupLinkerArgument ("--ignore-featuredefault", "IgnoredDefaultCondition")] public class FeatureDescriptors { public static void Main () @@ -26,9 +25,6 @@ public static void Main () static bool DefaultConditionTrue; static bool DefaultConditionFalse; - static bool IgnoredDefaultConditionTrue; - static bool IgnoredDefaultConditionFalse; - [Kept] static bool GlobalConditionTrue; static bool GlobalConditionFalse; diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml index fc72d58ff6807e..c2b88aa4121b57 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/FeatureSettings/FeatureDescriptors.xml @@ -47,16 +47,4 @@ - - - - - - - - - - - - From 703d871bc8ebe9bc8f916e6e77dffe28d5059af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Mon, 17 Jun 2024 10:57:18 +0200 Subject: [PATCH 6/7] Finish --- .../illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.targets | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.targets b/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.targets index d6d45f475fc33b..e4a84ac7e48c86 100644 --- a/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.targets +++ b/src/tools/illink/src/ILLink.Tasks/build/Microsoft.NET.ILLink.targets @@ -55,6 +55,7 @@ Copyright (c) .NET Foundation. All rights reserved. <_ComObjectDescriptorSupport Condition="'$(_ComObjectDescriptorSupport)' == ''">false <_DesignerHostSupport Condition="'$(_DesignerHostSupport)' == ''">false <_DefaultValueAttributeSupport Condition="'$(_DefaultValueAttributeSupport)' == ''">false + false From 92332d1fe363be97d9237e7f0124c55e46e52d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Mon, 17 Jun 2024 11:46:53 +0200 Subject: [PATCH 7/7] Update UseSystemResourceKeys.csproj --- .../SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj b/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj index 752d76b2687c3c..b775c35874d4f0 100644 --- a/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj +++ b/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj @@ -3,6 +3,7 @@ Exe 0 $(DefineConstants);RESOURCE_KEYS + true true @@ -10,10 +11,6 @@ true - - - -