Skip to content

Commit 64bc826

Browse files
Drop usage of .All in Microsoft.Extensions (#117707)
The existing usage is a leftover from when we didn't have the binding source generation and the guidance was to suppress warning and preserve everything manually. We had a similar thing for S.T.Json in the past that we also deleted/dropped in favor of the source generation. All the updated places are already marked RUC.
1 parent 7cb94d1 commit 64bc826

16 files changed

+327
-44
lines changed

src/libraries/Microsoft.Extensions.Configuration.Binder/ref/Microsoft.Extensions.Configuration.Binder.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,22 @@ public static void Bind(this Microsoft.Extensions.Configuration.IConfiguration c
2828
public static object? Get(this Microsoft.Extensions.Configuration.IConfiguration configuration, System.Type type) { throw null; }
2929
[System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute("Binding strongly typed objects to configuration values requires generating dynamic code at runtime, for example instantiating generic types.")]
3030
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("In case the type is non-primitive, the trimmer cannot statically analyze the object's type so its members may be trimmed.")]
31-
public static object? Get(this Microsoft.Extensions.Configuration.IConfiguration configuration, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type type, System.Action<Microsoft.Extensions.Configuration.BinderOptions>? configureOptions) { throw null; }
31+
public static object? Get(this Microsoft.Extensions.Configuration.IConfiguration configuration, System.Type type, System.Action<Microsoft.Extensions.Configuration.BinderOptions>? configureOptions) { throw null; }
3232
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("In case the type is non-primitive, the trimmer cannot statically analyze the object's type so its members may be trimmed.")]
33-
public static object? GetValue(this Microsoft.Extensions.Configuration.IConfiguration configuration, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type type, string key) { throw null; }
33+
public static object? GetValue(this Microsoft.Extensions.Configuration.IConfiguration configuration, System.Type type, string key) { throw null; }
3434
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("In case the type is non-primitive, the trimmer cannot statically analyze the object's type so its members may be trimmed.")]
3535
[return: System.Diagnostics.CodeAnalysis.NotNullIfNotNull(nameof(defaultValue))]
36-
public static object? GetValue(this Microsoft.Extensions.Configuration.IConfiguration configuration, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type type, string key, object? defaultValue) { throw null; }
36+
public static object? GetValue(this Microsoft.Extensions.Configuration.IConfiguration configuration, System.Type type, string key, object? defaultValue) { throw null; }
3737
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("In case the type is non-primitive, the trimmer cannot statically analyze the object's type so its members may be trimmed.")]
38-
public static T? GetValue<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] T>(this Microsoft.Extensions.Configuration.IConfiguration configuration, string key) { throw null; }
38+
public static T? GetValue<T>(this Microsoft.Extensions.Configuration.IConfiguration configuration, string key) { throw null; }
3939
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("In case the type is non-primitive, the trimmer cannot statically analyze the object's type so its members may be trimmed.")]
4040
[return: System.Diagnostics.CodeAnalysis.NotNullIfNotNull(nameof(defaultValue))]
41-
public static T? GetValue<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] T>(this Microsoft.Extensions.Configuration.IConfiguration configuration, string key, T defaultValue) { throw null; }
41+
public static T? GetValue<T>(this Microsoft.Extensions.Configuration.IConfiguration configuration, string key, T defaultValue) { throw null; }
4242
[System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute("Binding strongly typed objects to configuration values requires generating dynamic code at runtime, for example instantiating generic types.")]
4343
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("In case the type is non-primitive, the trimmer cannot statically analyze the object's type so its members may be trimmed.")]
44-
public static T? Get<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] T>(this Microsoft.Extensions.Configuration.IConfiguration configuration) { throw null; }
44+
public static T? Get<T>(this Microsoft.Extensions.Configuration.IConfiguration configuration) { throw null; }
4545
[System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute("Binding strongly typed objects to configuration values requires generating dynamic code at runtime, for example instantiating generic types.")]
4646
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("In case the type is non-primitive, the trimmer cannot statically analyze the object's type so its members may be trimmed.")]
47-
public static T? Get<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] T>(this Microsoft.Extensions.Configuration.IConfiguration configuration, System.Action<Microsoft.Extensions.Configuration.BinderOptions>? configureOptions) { throw null; }
47+
public static T? Get<T>(this Microsoft.Extensions.Configuration.IConfiguration configuration, System.Action<Microsoft.Extensions.Configuration.BinderOptions>? configureOptions) { throw null; }
4848
}
4949
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids -->
3+
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
4+
<Suppression>
5+
<DiagnosticId>CP0014</DiagnosticId>
6+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.Get(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.Action{Microsoft.Extensions.Configuration.BinderOptions})$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
7+
<Left>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
8+
<Right>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
9+
<IsBaselineSuppression>true</IsBaselineSuppression>
10+
</Suppression>
11+
<Suppression>
12+
<DiagnosticId>CP0014</DiagnosticId>
13+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.Get``1(Microsoft.Extensions.Configuration.IConfiguration,System.Action{Microsoft.Extensions.Configuration.BinderOptions})&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
14+
<Left>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
15+
<Right>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
16+
<IsBaselineSuppression>true</IsBaselineSuppression>
17+
</Suppression>
18+
<Suppression>
19+
<DiagnosticId>CP0014</DiagnosticId>
20+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.Get``1(Microsoft.Extensions.Configuration.IConfiguration)&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
21+
<Left>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
22+
<Right>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
23+
<IsBaselineSuppression>true</IsBaselineSuppression>
24+
</Suppression>
25+
<Suppression>
26+
<DiagnosticId>CP0014</DiagnosticId>
27+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String,System.Object)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
28+
<Left>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
29+
<Right>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
30+
<IsBaselineSuppression>true</IsBaselineSuppression>
31+
</Suppression>
32+
<Suppression>
33+
<DiagnosticId>CP0014</DiagnosticId>
34+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
35+
<Left>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
36+
<Right>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
37+
<IsBaselineSuppression>true</IsBaselineSuppression>
38+
</Suppression>
39+
<Suppression>
40+
<DiagnosticId>CP0014</DiagnosticId>
41+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue``1(Microsoft.Extensions.Configuration.IConfiguration,System.String,``0)&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
42+
<Left>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
43+
<Right>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
44+
<IsBaselineSuppression>true</IsBaselineSuppression>
45+
</Suppression>
46+
<Suppression>
47+
<DiagnosticId>CP0014</DiagnosticId>
48+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue``1(Microsoft.Extensions.Configuration.IConfiguration,System.String)&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
49+
<Left>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
50+
<Right>lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
51+
<IsBaselineSuppression>true</IsBaselineSuppression>
52+
</Suppression>
53+
<Suppression>
54+
<DiagnosticId>CP0014</DiagnosticId>
55+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.Get(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.Action{Microsoft.Extensions.Configuration.BinderOptions})$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
56+
<Left>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
57+
<Right>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
58+
<IsBaselineSuppression>true</IsBaselineSuppression>
59+
</Suppression>
60+
<Suppression>
61+
<DiagnosticId>CP0014</DiagnosticId>
62+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.Get``1(Microsoft.Extensions.Configuration.IConfiguration,System.Action{Microsoft.Extensions.Configuration.BinderOptions})&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
63+
<Left>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
64+
<Right>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
65+
<IsBaselineSuppression>true</IsBaselineSuppression>
66+
</Suppression>
67+
<Suppression>
68+
<DiagnosticId>CP0014</DiagnosticId>
69+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.Get``1(Microsoft.Extensions.Configuration.IConfiguration)&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
70+
<Left>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
71+
<Right>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
72+
<IsBaselineSuppression>true</IsBaselineSuppression>
73+
</Suppression>
74+
<Suppression>
75+
<DiagnosticId>CP0014</DiagnosticId>
76+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String,System.Object)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
77+
<Left>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
78+
<Right>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
79+
<IsBaselineSuppression>true</IsBaselineSuppression>
80+
</Suppression>
81+
<Suppression>
82+
<DiagnosticId>CP0014</DiagnosticId>
83+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
84+
<Left>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
85+
<Right>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
86+
<IsBaselineSuppression>true</IsBaselineSuppression>
87+
</Suppression>
88+
<Suppression>
89+
<DiagnosticId>CP0014</DiagnosticId>
90+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue``1(Microsoft.Extensions.Configuration.IConfiguration,System.String,``0)&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
91+
<Left>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
92+
<Right>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
93+
<IsBaselineSuppression>true</IsBaselineSuppression>
94+
</Suppression>
95+
<Suppression>
96+
<DiagnosticId>CP0014</DiagnosticId>
97+
<Target>M:Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue``1(Microsoft.Extensions.Configuration.IConfiguration,System.String)&lt;0&gt;:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
98+
<Left>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Left>
99+
<Right>lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll</Right>
100+
<IsBaselineSuppression>true</IsBaselineSuppression>
101+
</Suppression>
102+
</Suppressions>

src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static class ConfigurationBinder
3434
/// <returns>The new instance of T if successful, default(T) otherwise.</returns>
3535
[RequiresDynamicCode(DynamicCodeWarningMessage)]
3636
[RequiresUnreferencedCode(TrimmingWarningMessage)]
37-
public static T? Get<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(this IConfiguration configuration)
37+
public static T? Get<T>(this IConfiguration configuration)
3838
=> configuration.Get<T>(null);
3939

4040
/// <summary>
@@ -48,7 +48,7 @@ public static class ConfigurationBinder
4848
/// <returns>The new instance of T if successful, default(T) otherwise.</returns>
4949
[RequiresDynamicCode(DynamicCodeWarningMessage)]
5050
[RequiresUnreferencedCode(TrimmingWarningMessage)]
51-
public static T? Get<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(this IConfiguration configuration, Action<BinderOptions>? configureOptions)
51+
public static T? Get<T>(this IConfiguration configuration, Action<BinderOptions>? configureOptions)
5252
{
5353
ArgumentNullException.ThrowIfNull(configuration);
5454

@@ -86,7 +86,6 @@ public static class ConfigurationBinder
8686
[RequiresUnreferencedCode(TrimmingWarningMessage)]
8787
public static object? Get(
8888
this IConfiguration configuration,
89-
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
9089
Type type,
9190
Action<BinderOptions>? configureOptions)
9291
{
@@ -153,7 +152,7 @@ public static void Bind(this IConfiguration configuration, object? instance, Act
153152
/// <param name="key">The key of the configuration section's value to convert.</param>
154153
/// <returns>The converted value.</returns>
155154
[RequiresUnreferencedCode(TrimmingWarningMessage)]
156-
public static T? GetValue<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(this IConfiguration configuration, string key)
155+
public static T? GetValue<T>(this IConfiguration configuration, string key)
157156
{
158157
return GetValue(configuration, key, default(T));
159158
}
@@ -168,7 +167,7 @@ public static void Bind(this IConfiguration configuration, object? instance, Act
168167
/// <returns>The converted value.</returns>
169168
[RequiresUnreferencedCode(TrimmingWarningMessage)]
170169
[return: NotNullIfNotNull(nameof(defaultValue))]
171-
public static T? GetValue<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(this IConfiguration configuration, string key, T defaultValue)
170+
public static T? GetValue<T>(this IConfiguration configuration, string key, T defaultValue)
172171
{
173172
return (T?)GetValue(configuration, typeof(T), key, defaultValue);
174173
}
@@ -183,7 +182,6 @@ public static void Bind(this IConfiguration configuration, object? instance, Act
183182
[RequiresUnreferencedCode(TrimmingWarningMessage)]
184183
public static object? GetValue(
185184
this IConfiguration configuration,
186-
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
187185
Type type,
188186
string key)
189187
{
@@ -202,7 +200,6 @@ public static void Bind(this IConfiguration configuration, object? instance, Act
202200
[return: NotNullIfNotNull(nameof(defaultValue))]
203201
public static object? GetValue(
204202
this IConfiguration configuration,
205-
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
206203
Type type, string key,
207204
object? defaultValue)
208205
{
@@ -321,7 +318,7 @@ private static void BindProperty(PropertyInfo property, object instance, IConfig
321318
[RequiresDynamicCode(DynamicCodeWarningMessage)]
322319
[RequiresUnreferencedCode(TrimmingWarningMessage)]
323320
private static void BindInstance(
324-
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type,
321+
Type type,
325322
BindingPoint bindingPoint,
326323
IConfiguration config,
327324
BinderOptions options,
@@ -971,7 +968,6 @@ private static Array BindArray(Type type, IEnumerable? source, IConfiguration co
971968

972969
[RequiresUnreferencedCode(TrimmingWarningMessage)]
973970
private static bool TryConvertValue(
974-
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
975971
Type type,
976972
string? value, string? path, out object? result, out Exception? error)
977973
{
@@ -1030,7 +1026,6 @@ private static bool TryConvertValue(
10301026

10311027
[RequiresUnreferencedCode(TrimmingWarningMessage)]
10321028
private static object? ConvertValue(
1033-
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
10341029
Type type,
10351030
string value, string? path)
10361031
{
@@ -1096,7 +1091,13 @@ private static bool TypeIsASetInterface(Type type)
10961091
return null;
10971092
}
10981093

1099-
private static List<PropertyInfo> GetAllProperties([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type)
1094+
private static List<PropertyInfo> GetAllProperties(
1095+
#if NET10_0_OR_GREATER
1096+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.AllProperties)]
1097+
#else
1098+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
1099+
#endif
1100+
Type type)
11001101
{
11011102
var allProperties = new List<PropertyInfo>();
11021103

src/libraries/Microsoft.Extensions.Logging.Configuration/ref/Microsoft.Extensions.Logging.Configuration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public static partial class LoggerProviderOptions
2525
{
2626
[System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute("Binding TOptions to configuration values may require generating dynamic code at runtime.")]
2727
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("TOptions's dependent types may have their members trimmed. Ensure all required members are preserved.")]
28-
public static void RegisterProviderOptions<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] TOptions, TProvider>(Microsoft.Extensions.DependencyInjection.IServiceCollection services) where TOptions : class { }
28+
public static void RegisterProviderOptions<TOptions, TProvider>(Microsoft.Extensions.DependencyInjection.IServiceCollection services) where TOptions : class { }
2929
}
3030
public partial class LoggerProviderOptionsChangeTokenSource<TOptions, TProvider> : Microsoft.Extensions.Options.ConfigurationChangeTokenSource<TOptions>
3131
{

0 commit comments

Comments
 (0)