Skip to content

Commit 7ef8164

Browse files
authored
Enable AOT Compatibility (#2144)
Add IsAotCompatible=true to Yarp.ReverseProxy, which enables trimming and AOT analyzers. Address the current warnings.
1 parent ad6ee6a commit 7ef8164

File tree

4 files changed

+13
-3
lines changed

4 files changed

+13
-3
lines changed

src/ReverseProxy/Forwarder/ForwarderTelemetry.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Diagnostics;
6+
using System.Diagnostics.CodeAnalysis;
67
using System.Diagnostics.Tracing;
78
using System.Threading;
89

@@ -122,6 +123,8 @@ protected override void OnEventCommand(EventCommandEventArgs command)
122123
}
123124

124125

126+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode",
127+
Justification = "Parameters to this method are primitive and are trimmer safe.")]
125128
[NonEvent]
126129
private unsafe void WriteEvent(int eventId, bool arg1, long arg2, long arg3, long arg4, long arg5)
127130
{
@@ -157,6 +160,8 @@ private unsafe void WriteEvent(int eventId, bool arg1, long arg2, long arg3, lon
157160
WriteEventCore(eventId, NumEventDatas, descrs);
158161
}
159162

163+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode",
164+
Justification = "Parameters to this method are primitive and are trimmer safe.")]
160165
[NonEvent]
161166
private unsafe void WriteEvent(int eventId, bool arg1, long arg2, long arg3, long arg4, long arg5, long arg6)
162167
{

src/ReverseProxy/Management/ReverseProxyServiceCollectionExtensions.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT License.
33

44
using System;
5+
using System.Diagnostics.CodeAnalysis;
56
using System.Linq;
67
using System.Net.Http;
78
using Microsoft.Extensions.Configuration;
@@ -87,7 +88,7 @@ public static IReverseProxyBuilder LoadFromConfig(this IReverseProxyBuilder buil
8788
/// Registers a singleton IProxyConfigFilter service. Multiple filters are allowed and they will be run in registration order.
8889
/// </summary>
8990
/// <typeparam name="TService">A class that implements IProxyConfigFilter.</typeparam>
90-
public static IReverseProxyBuilder AddConfigFilter<TService>(this IReverseProxyBuilder builder) where TService : class, IProxyConfigFilter
91+
public static IReverseProxyBuilder AddConfigFilter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IReverseProxyBuilder builder) where TService : class, IProxyConfigFilter
9192
{
9293
if (builder is null)
9394
{
@@ -118,7 +119,7 @@ public static IReverseProxyBuilder AddTransforms(this IReverseProxyBuilder build
118119
/// Provides a <see cref="ITransformProvider"/> implementation that will be run for each route to conditionally add transforms.
119120
/// <see cref="AddTransforms{T}(IReverseProxyBuilder)"/> can be called multiple times to provide multiple distinct types.
120121
/// </summary>
121-
public static IReverseProxyBuilder AddTransforms<T>(this IReverseProxyBuilder builder) where T : class, ITransformProvider
122+
public static IReverseProxyBuilder AddTransforms<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>(this IReverseProxyBuilder builder) where T : class, ITransformProvider
122123
{
123124
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ITransformProvider, T>());
124125
return builder;
@@ -129,7 +130,7 @@ public static IReverseProxyBuilder AddTransforms<T>(this IReverseProxyBuilder bu
129130
/// the associated transform actions. <see cref="AddTransformFactory{T}(IReverseProxyBuilder)"/> can be called multiple
130131
/// times to provide multiple distinct types.
131132
/// </summary>
132-
public static IReverseProxyBuilder AddTransformFactory<T>(this IReverseProxyBuilder builder) where T : class, ITransformFactory
133+
public static IReverseProxyBuilder AddTransformFactory<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>(this IReverseProxyBuilder builder) where T : class, ITransformFactory
133134
{
134135
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ITransformFactory, T>());
135136
return builder;

src/ReverseProxy/WebSocketsTelemetry/WebSocketsTelemetry.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT License.
33

4+
using System.Diagnostics.CodeAnalysis;
45
using System.Diagnostics.Tracing;
56

67
namespace Yarp.ReverseProxy.WebSocketsTelemetry;
@@ -10,6 +11,8 @@ internal sealed class WebSocketsTelemetry : EventSource
1011
{
1112
public static readonly WebSocketsTelemetry Log = new();
1213

14+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode",
15+
Justification = "Parameters to this method are primitive and are trimmer safe.")]
1316
[Event(1, Level = EventLevel.Informational)]
1417
public void WebSocketClosed(long establishedTime, WebSocketCloseReason closeReason, long messagesRead, long messagesWritten)
1518
{

src/ReverseProxy/Yarp.ReverseProxy.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<RootNamespace>Yarp.ReverseProxy</RootNamespace>
88
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
99
<Nullable>enable</Nullable>
10+
<IsAotCompatible>true</IsAotCompatible>
1011
<PackageReadmeFile>README.md</PackageReadmeFile>
1112
</PropertyGroup>
1213

0 commit comments

Comments
 (0)