diff --git a/eng/illink.targets b/eng/illink.targets
index 29dd3dd83bf76a..e8c9b52bb12835 100644
--- a/eng/illink.targets
+++ b/eng/illink.targets
@@ -1,11 +1,5 @@
-
-
- <_RequiresLiveILLink>true
-
-
true
_EmbedILLinkXmls;$(PrepareResourcesDependsOn)
@@ -210,7 +204,8 @@
$(ILLinkArgs) --action link $(TargetName)
$(ILLinkArgs) -b true
- $(ILLinkArgs) --preserve-symbol-paths
+
+ $(ILLinkArgs) --preserve-symbol-paths
$(ILLinkArgs) -x "@(ILLinkDescriptorsLibraryBuildXml->'%(FullPath)', '" -x "')"
$(ILLinkArgs) --substitutions "$(ILLinkSubstitutionsLibraryBuildXml)"
diff --git a/eng/liveILLink.targets b/eng/liveILLink.targets
index ffc75a7cc10c16..c3c9eb555a6ce1 100644
--- a/eng/liveILLink.targets
+++ b/eng/liveILLink.targets
@@ -1,33 +1,33 @@
-
+
-
+
- <_RequiresLiveILLink Condition="'$(_RequiresLiveILLink)' == '' And (
+ true
+ '$(EnableSingleFileAnalyzer)' == 'true')">true
-
+
<_ILLinkTasksSourceDir>$(ToolsProjectRoot)illink\src\ILLink.Tasks\
$(ToolsProjectRoot)illink\src\ILLink.RoslynAnalyzer\build\Microsoft.NET.ILLink.Analyzers.props
-
+
-
+
<_RequiresILLinkPack>false
$(ToolsILLinkDir)net\ILLink.Tasks.dll
$(ToolsILLinkDir)netframework\ILLink.Tasks.dll
-
+
- <_RequiresLiveILLink>false
+ false
diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props
index 33938989e386de..9f30f4b909a236 100644
--- a/src/libraries/Directory.Build.props
+++ b/src/libraries/Directory.Build.props
@@ -48,8 +48,6 @@
enable
annotations
-
- true
diff --git a/src/libraries/Directory.Build.targets b/src/libraries/Directory.Build.targets
index 1163572cec2902..f6185f9bd185f2 100644
--- a/src/libraries/Directory.Build.targets
+++ b/src/libraries/Directory.Build.targets
@@ -66,6 +66,12 @@
true
+
+ true
+
+ <_SilenceIsAotCompatibleUnsupportedWarning Condition="'$(DotNetBuildSourceOnly)' == 'true'">true
-
+
+ true
+
+
diff --git a/src/libraries/Microsoft.Bcl.AsyncInterfaces/src/Microsoft.Bcl.AsyncInterfaces.csproj b/src/libraries/Microsoft.Bcl.AsyncInterfaces/src/Microsoft.Bcl.AsyncInterfaces.csproj
index c97e58d75a4483..35e810365c1728 100644
--- a/src/libraries/Microsoft.Bcl.AsyncInterfaces/src/Microsoft.Bcl.AsyncInterfaces.csproj
+++ b/src/libraries/Microsoft.Bcl.AsyncInterfaces/src/Microsoft.Bcl.AsyncInterfaces.csproj
@@ -2,6 +2,9 @@
netstandard2.0;$(NetFrameworkMinimum);netstandard2.1
+
+ true
true
Provides the IAsyncEnumerable<T> and IAsyncDisposable interfaces and helper types for .NET Standard 2.0. This package is not required starting with .NET Standard 2.1 and .NET Core 3.0.
diff --git a/src/libraries/Microsoft.Bcl.Numerics/src/Microsoft.Bcl.Numerics.csproj b/src/libraries/Microsoft.Bcl.Numerics/src/Microsoft.Bcl.Numerics.csproj
index 0ab1a5b2cab2e7..2e4e315246222f 100644
--- a/src/libraries/Microsoft.Bcl.Numerics/src/Microsoft.Bcl.Numerics.csproj
+++ b/src/libraries/Microsoft.Bcl.Numerics/src/Microsoft.Bcl.Numerics.csproj
@@ -2,6 +2,9 @@
netstandard2.0;$(NetFrameworkMinimum);netstandard2.1
+
+ true
true
true
diff --git a/src/libraries/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj b/src/libraries/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj
index a05c036040c043..8d12915d4b28ac 100644
--- a/src/libraries/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj
+++ b/src/libraries/Microsoft.XmlSerializer.Generator/src/Microsoft.XmlSerializer.Generator.csproj
@@ -17,6 +17,7 @@
false
false
+ false
false
diff --git a/src/libraries/System.ComponentModel.Composition/Directory.Build.props b/src/libraries/System.ComponentModel.Composition/Directory.Build.props
index db56d69d6c8b7d..02acc6dae411d7 100644
--- a/src/libraries/System.ComponentModel.Composition/Directory.Build.props
+++ b/src/libraries/System.ComponentModel.Composition/Directory.Build.props
@@ -4,5 +4,7 @@
ECMA
false
false
+
+ true
diff --git a/src/libraries/System.Composition.Hosting/src/System.Composition.Hosting.csproj b/src/libraries/System.Composition.Hosting/src/System.Composition.Hosting.csproj
index c41c4876ca85ed..0dd13746d7199f 100644
--- a/src/libraries/System.Composition.Hosting/src/System.Composition.Hosting.csproj
+++ b/src/libraries/System.Composition.Hosting/src/System.Composition.Hosting.csproj
@@ -4,6 +4,8 @@
$(NetCoreAppCurrent);$(NetCoreAppPrevious);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum)
false
false
+
+ true
Microsoft
false
true
diff --git a/src/libraries/System.Composition.TypedParts/src/System.Composition.TypedParts.csproj b/src/libraries/System.Composition.TypedParts/src/System.Composition.TypedParts.csproj
index 318ec32b398045..d57922042773a2 100644
--- a/src/libraries/System.Composition.TypedParts/src/System.Composition.TypedParts.csproj
+++ b/src/libraries/System.Composition.TypedParts/src/System.Composition.TypedParts.csproj
@@ -5,6 +5,8 @@
System.Composition
false
false
+
+ true
Microsoft
false
true
diff --git a/src/libraries/System.Configuration.ConfigurationManager/Directory.Build.props b/src/libraries/System.Configuration.ConfigurationManager/Directory.Build.props
index c23e70d0e2d061..9c41bc51359726 100644
--- a/src/libraries/System.Configuration.ConfigurationManager/Directory.Build.props
+++ b/src/libraries/System.Configuration.ConfigurationManager/Directory.Build.props
@@ -6,5 +6,7 @@
false
false
+
+ true
\ No newline at end of file
diff --git a/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj b/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj
index b5ca42ec6522b9..332f6c44c048f6 100644
--- a/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj
+++ b/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj
@@ -1,6 +1,9 @@
netstandard2.0
+
+ false
+ false
disable
EventLogMessages.res
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs
index 93f64da6c31d1f..dc27e9c228c586 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs
@@ -5,6 +5,7 @@
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text.Encodings.Web;
@@ -523,7 +524,7 @@ private static EnumFieldInfo[] ResolveEnumFields(JsonNamingPolicy? namingPolicy)
Debug.Assert(names.Length == values.Length);
Dictionary? enumMemberAttributes = null;
- foreach (FieldInfo field in typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static))
+ foreach (FieldInfo field in GetFields())
{
if (field.GetCustomAttribute() is { } attribute)
{
@@ -561,6 +562,12 @@ private static EnumFieldInfo[] ResolveEnumFields(JsonNamingPolicy? namingPolicy)
}
return enumFields;
+
+#if !NET9_0_OR_GREATER
+ [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2090:UnrecognizedReflectionPattern",
+ Justification = "Enum fields are always preserved by trimming.")]
+#endif
+ static IEnumerable GetFields() => typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static);
}
private static string ResolveAndValidateJsonName(string name, JsonNamingPolicy? namingPolicy, EnumFieldNameKind kind)
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverterFactory.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverterFactory.cs
index 138df8a5d42839..47885274828540 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverterFactory.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverterFactory.cs
@@ -25,7 +25,13 @@ public override JsonConverter CreateConverter(Type type, JsonSerializerOptions o
return Create(type, EnumConverterOptions.AllowNumbers, namingPolicy: null, options);
}
- [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2071:UnrecognizedReflectionPattern",
+ [UnconditionalSuppressMessage(
+ "ReflectionAnalysis",
+#if NET9_0_OR_GREATER
+ "IL2071:UnrecognizedReflectionPattern",
+#else
+ "IL2070:UnrecognizedReflectionPattern",
+#endif
Justification = "'EnumConverter where T : struct' implies 'T : new()', so the trimmer is warning calling MakeGenericType here because enumType's constructors are not annotated. " +
"But EnumConverter doesn't call new T(), so this is safe.")]
public static JsonConverter Create(Type enumType, EnumConverterOptions converterOptions, JsonNamingPolicy? namingPolicy, JsonSerializerOptions options)
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/NullableConverterFactory.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/NullableConverterFactory.cs
index 2d93b693340361..78ed6516b894bc 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/NullableConverterFactory.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/NullableConverterFactory.cs
@@ -43,7 +43,13 @@ public static JsonConverter CreateValueConverter(Type valueTypeToConvert, JsonCo
culture: null)!;
}
- [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2071:UnrecognizedReflectionPattern",
+ [UnconditionalSuppressMessage(
+ "ReflectionAnalysis",
+#if NET9_0_OR_GREATER
+ "IL2071:UnrecognizedReflectionPattern",
+#else
+ "IL2070:UnrecognizedReflectionPattern",
+#endif
Justification = "'NullableConverter where T : struct' implies 'T : new()', so the trimmer is warning calling MakeGenericType here because valueTypeToConvert's constructors are not annotated. " +
"But NullableConverter doesn't call new T(), so this is safe.")]
[return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)]
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionEmitMemberAccessor.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionEmitMemberAccessor.cs
index 05f453ef7181a5..156dc813eb9364 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionEmitMemberAccessor.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionEmitMemberAccessor.cs
@@ -153,6 +153,10 @@ public override JsonTypeInfo.ParameterizedConstructorDelegate CreateAddMethodDelegate<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] TCollection>() =>
CreateDelegate>(CreateAddMethodDelegate(typeof(TCollection)));
diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionMemberAccessor.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionMemberAccessor.cs
index 6740825cbbba79..dee01f0f22f428 100644
--- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionMemberAccessor.cs
+++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/ReflectionMemberAccessor.cs
@@ -112,6 +112,10 @@ public override JsonTypeInfo.ParameterizedConstructorDelegate CreateAddMethodDelegate<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] TCollection>()
{
Type collectionType = typeof(TCollection);
diff --git a/src/libraries/oob-trim.proj b/src/libraries/oob-trim.proj
index b17f8e920129a9..0404a78083905f 100644
--- a/src/libraries/oob-trim.proj
+++ b/src/libraries/oob-trim.proj
@@ -3,7 +3,7 @@
$(NetCoreAppCurrent)-$(TargetOS)
- true
+ true
diff --git a/src/libraries/sfx-finish.proj b/src/libraries/sfx-finish.proj
index 742bafb20541d6..decdf15be282ad 100644
--- a/src/libraries/sfx-finish.proj
+++ b/src/libraries/sfx-finish.proj
@@ -7,7 +7,7 @@
true
$(MicrosoftNetCoreAppRefPackDataDir)FrameworkList.xml
- true
+ true
$(InstallerProjectRoot)pkg\sfx\Microsoft.NETCore.App\PackageOverrides.txt
$(MicrosoftNetCoreAppRefPackDataDir)PackageOverrides.txt