Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrennan <brecon@microsoft.com>2021-11-13 02:24:26 +0300
committerBrennan <brecon@microsoft.com>2021-11-13 02:24:26 +0300
commit50714234b9ebace519b4db641a1b197ca6accd06 (patch)
tree3901434942a538ee487786975c8396157b190844
parent3592b6e11d506f994cbce306b5745019f41297e4 (diff)
-rw-r--r--src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsLoader.cs4
-rw-r--r--src/Http/Routing/src/DefaultInlineConstraintResolver.cs4
-rw-r--r--src/Http/Routing/src/DefaultParameterPolicyFactory.cs4
-rw-r--r--src/Shared/StackTrace/StackFrame/StackTraceHelper.cs12
-rw-r--r--src/Shared/StaticWebAssets/ManifestStaticWebAssetFileProvider.cs7
5 files changed, 22 insertions, 9 deletions
diff --git a/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsLoader.cs b/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsLoader.cs
index 6bb7e36a8f..ebcd0a78dc 100644
--- a/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsLoader.cs
+++ b/src/Hosting/Hosting/src/StaticWebAssets/StaticWebAssetsLoader.cs
@@ -3,6 +3,7 @@
#nullable enable
+using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Reflection;
@@ -44,13 +45,12 @@ public class StaticWebAssetsLoader
environment.WebRootFileProvider = new CompositeFileProvider(new[] { provider, environment.WebRootFileProvider });
}
+ [UnconditionalSuppressMessage("Trimming", "IL2026:RequiresUnreferencedCodeAttribute", Justification = "string should not be trimmed away and thus is safe to use")]
internal static Stream? ResolveManifest(IWebHostEnvironment environment, IConfiguration configuration)
{
try
{
-#pragma warning disable IL2026 // RequiresUnreferencedCodeAttribute: string should not be trimmed away and thus is safe to use
var candidate = configuration.GetValue<string>(WebHostDefaults.StaticWebAssetsKey) ?? ResolveRelativeToAssembly(environment);
-#pragma warning restore IL2026
if (candidate != null && File.Exists(candidate))
{
return File.OpenRead(candidate);
diff --git a/src/Http/Routing/src/DefaultInlineConstraintResolver.cs b/src/Http/Routing/src/DefaultInlineConstraintResolver.cs
index c10ba88070..3c5b12e36e 100644
--- a/src/Http/Routing/src/DefaultInlineConstraintResolver.cs
+++ b/src/Http/Routing/src/DefaultInlineConstraintResolver.cs
@@ -5,6 +5,7 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.Options;
namespace Microsoft.AspNetCore.Routing;
@@ -24,6 +25,7 @@ public class DefaultInlineConstraintResolver : IInlineConstraintResolver
/// </summary>
/// <param name="routeOptions">Accessor for <see cref="RouteOptions"/> containing the constraints of interest.</param>
/// <param name="serviceProvider">The <see cref="IServiceProvider"/> to get service arguments from.</param>
+ [UnconditionalSuppressMessage("Trimming", "IL2026:RequiresUnreferencedCodeAttribute", Justification = "ConstraintMap is safe to use if it's only used for reading/deleting constraints")]
public DefaultInlineConstraintResolver(IOptions<RouteOptions> routeOptions, IServiceProvider serviceProvider)
{
if (routeOptions == null)
@@ -36,9 +38,7 @@ public class DefaultInlineConstraintResolver : IInlineConstraintResolver
throw new ArgumentNullException(nameof(serviceProvider));
}
-#pragma warning disable IL2026 // RequiresUnreferencedCodeAttribute: ConstraintMap is safe to use if it's only used for reading/deleting constraints
_inlineConstraintMap = routeOptions.Value.ConstraintMap;
-#pragma warning restore IL2026
_serviceProvider = serviceProvider;
}
diff --git a/src/Http/Routing/src/DefaultParameterPolicyFactory.cs b/src/Http/Routing/src/DefaultParameterPolicyFactory.cs
index 363fa4b4e7..d9c9b0e626 100644
--- a/src/Http/Routing/src/DefaultParameterPolicyFactory.cs
+++ b/src/Http/Routing/src/DefaultParameterPolicyFactory.cs
@@ -2,6 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System;
+using System.Diagnostics.CodeAnalysis;
using Microsoft.AspNetCore.Routing.Constraints;
using Microsoft.AspNetCore.Routing.Patterns;
using Microsoft.Extensions.Options;
@@ -36,6 +37,7 @@ internal class DefaultParameterPolicyFactory : ParameterPolicyFactory
return parameterPolicy;
}
+ [UnconditionalSuppressMessage("Trimming", "IL2026:RequiresUnreferencedCodeAttribute", Justification = "ConstraintMap is safe to use if it's only used for reading/deleting constraints")]
public override IParameterPolicy Create(RoutePatternParameterPart? parameter, string inlineText)
{
if (inlineText == null)
@@ -44,9 +46,7 @@ internal class DefaultParameterPolicyFactory : ParameterPolicyFactory
}
var parameterPolicy = ParameterPolicyActivator.ResolveParameterPolicy<IParameterPolicy>(
-#pragma warning disable IL2026 // RequiresUnreferencedCodeAttribute: ConstraintMap is safe to use if it's only used for reading/deleting constraints
_options.ConstraintMap,
-#pragma warning restore IL2026
_serviceProvider,
inlineText,
out var parameterPolicyKey);
diff --git a/src/Shared/StackTrace/StackFrame/StackTraceHelper.cs b/src/Shared/StackTrace/StackFrame/StackTraceHelper.cs
index 4234b811f3..9393bd79e2 100644
--- a/src/Shared/StackTrace/StackFrame/StackTraceHelper.cs
+++ b/src/Shared/StackTrace/StackFrame/StackTraceHelper.cs
@@ -17,7 +17,6 @@ namespace Microsoft.Extensions.StackTrace.Sources;
internal class StackTraceHelper
{
- [UnconditionalSuppressMessage("Trimming", "IL2026:RequiresUnreferencedCode", Justification = "StackFrame.GetMethod() is best effort to display helpful information.")]
public static IList<StackFrameInfo> GetFrames(Exception exception, out AggregateException? error)
{
if (exception == null)
@@ -43,7 +42,7 @@ internal class StackTraceHelper
for (var i = 0; i < stackFrames.Length; i++)
{
var frame = stackFrames[i];
- var method = frame.GetMethod();
+ var method = GetStackFrameMethod(frame);
// Always show last stackFrame
if (!ShowInStackTrace(method) && i < stackFrames.Length - 1)
@@ -51,7 +50,7 @@ internal class StackTraceHelper
continue;
}
- var stackFrame = new StackFrameInfo(frame.GetFileLineNumber(), frame.GetFileName(), frame, GetMethodDisplayString(frame.GetMethod()));
+ var stackFrame = new StackFrameInfo(frame.GetFileLineNumber(), frame.GetFileName(), frame, GetMethodDisplayString(GetStackFrameMethod(frame)));
frames.Add(stackFrame);
}
@@ -65,6 +64,13 @@ internal class StackTraceHelper
return frames;
}
+ [UnconditionalSuppressMessage("Trimming", "IL2026:RequiresUnreferencedCodeAttribute", Justification = "StackFrame.GetMethod() is best effort to display helpful information.")]
+ // Separate method so we don't potentially hide any more linker warnings in the calling method
+ private static MethodBase? GetStackFrameMethod(StackFrame frame)
+ {
+ return frame.GetMethod();
+ }
+
internal static MethodDisplayInfo? GetMethodDisplayString(MethodBase? method)
{
// Special case: no method available
diff --git a/src/Shared/StaticWebAssets/ManifestStaticWebAssetFileProvider.cs b/src/Shared/StaticWebAssets/ManifestStaticWebAssetFileProvider.cs
index 0b89d28b30..3d00f6a0f3 100644
--- a/src/Shared/StaticWebAssets/ManifestStaticWebAssetFileProvider.cs
+++ b/src/Shared/StaticWebAssets/ManifestStaticWebAssetFileProvider.cs
@@ -325,6 +325,9 @@ internal sealed class ManifestStaticWebAssetFileProvider : IFileProvider
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Public properties preserved with DynamicDependency")]
[DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetManifest))]
+ [DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetNode))]
+ [DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetMatch))]
+ [DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetPattern))]
internal static StaticWebAssetManifest Parse(Stream manifest)
{
return JsonSerializer.Deserialize<StaticWebAssetManifest>(manifest)!;
@@ -371,6 +374,8 @@ internal sealed class ManifestStaticWebAssetFileProvider : IFileProvider
{
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Public properties preserved with DynamicDependency")]
[DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetNode))]
+ [DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetMatch))]
+ [DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetPattern))]
public override Dictionary<string, StaticWebAssetNode> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var parsed = JsonSerializer.Deserialize<IDictionary<string, StaticWebAssetNode>>(ref reader, options)!;
@@ -429,6 +434,8 @@ internal sealed class ManifestStaticWebAssetFileProvider : IFileProvider
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Public properties preserved with DynamicDependency")]
[DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetNode))]
+ [DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetMatch))]
+ [DynamicDependency(JsonSerializerSettings, typeof(StaticWebAssetPattern))]
public override void Write(Utf8JsonWriter writer, Dictionary<string, StaticWebAssetNode> value, JsonSerializerOptions options)
{
JsonSerializer.Serialize(writer, value, options);