Skip to content

Commit 26c73fe

Browse files
Attempt to resolve native AoT warnings
Attempt to enable native AoT compatibility by using `[DynamicDependency]` to have the trimmer retain the static methods that are called. Not yet tested in an actual native AoT application.
1 parent 74b996f commit 26c73fe

22 files changed

+102
-2
lines changed

src/Grafana.OpenTelemetry.Base/Grafana.OpenTelemetry.Base.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,8 @@
4747
</AssemblyAttribute>
4848
</ItemGroup>
4949

50-
<!-- Not supported due to extensive use of reflection https://github.com/grafana/grafana-opentelemetry-dotnet/issues/97 -->
5150
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
52-
<IsAotCompatible>false</IsAotCompatible>
51+
<IsAotCompatible>true</IsAotCompatible>
5352
</PropertyGroup>
5453

5554
</Project>

src/Grafana.OpenTelemetry.Base/Instrumentations/AWSInitializer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ internal sealed class AWSInitializer : InstrumentationInitializer
1111
{
1212
public override Instrumentation Id { get; } = Instrumentation.AWS;
1313

14+
#if NET8_0_OR_GREATER
15+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AWS")]
16+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
17+
#endif
1418
protected override void InitializeTracing(TracerProviderBuilder builder)
1519
{
1620
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/AWSLambdaInitializer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ internal sealed class AWSLambdaInitializer : InstrumentationInitializer
1111
{
1212
public override Instrumentation Id { get; } = Instrumentation.AWSLambda;
1313

14+
#if NET8_0_OR_GREATER
15+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Instrumentation.AWSLambda.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AWSLambda")]
16+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
17+
#endif
1418
protected override void InitializeTracing(TracerProviderBuilder builder)
1519
{
1620
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetCoreInitializer.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ internal sealed class AspNetCoreInitializer : InstrumentationInitializer
1212
{
1313
public override Instrumentation Id { get; } = Instrumentation.AspNetCore;
1414

15+
#if NET8_0_OR_GREATER
16+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.AspNetCoreInstrumentationTracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNetCore")]
17+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
18+
#endif
1519
protected override void InitializeTracing(TracerProviderBuilder builder)
1620
{
1721
ReflectionHelper.CallStaticMethod(
@@ -21,6 +25,10 @@ protected override void InitializeTracing(TracerProviderBuilder builder)
2125
[builder]);
2226
}
2327

28+
#if NET8_0_OR_GREATER
29+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Metrics.AspNetCoreInstrumentationMeterProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNetCore")]
30+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
31+
#endif
2432
protected override void InitializeMetrics(MeterProviderBuilder builder)
2533
{
2634
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/AspNetInitializer.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ internal sealed class AspNetInitializer : InstrumentationInitializer
1212
{
1313
public override Instrumentation Id { get; } = Instrumentation.AspNet;
1414

15+
#if NET8_0_OR_GREATER
16+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNet")]
17+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
18+
#endif
1519
protected override void InitializeTracing(TracerProviderBuilder builder)
1620
{
1721
ReflectionHelper.CallStaticMethod(
@@ -21,6 +25,10 @@ protected override void InitializeTracing(TracerProviderBuilder builder)
2125
[builder]);
2226
}
2327

28+
#if NET8_0_OR_GREATER
29+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Metrics.MeterProviderBuilderExtensions", "OpenTelemetry.Instrumentation.AspNet")]
30+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
31+
#endif
2432
protected override void InitializeMetrics(MeterProviderBuilder builder)
2533
{
2634
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/CassandraInitializer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ internal sealed class CassandraInitializer : InstrumentationInitializer
1212
{
1313
public override Instrumentation Id { get; } = Instrumentation.Cassandra;
1414

15+
#if NET8_0_OR_GREATER
16+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Metrics.MeterProviderBuilderExtensions", "OpenTelemetry.Instrumentation.Cassandra")]
17+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
18+
#endif
1519
protected override void InitializeMetrics(MeterProviderBuilder builder)
1620
{
1721
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/ElasticsearchClientInitializer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ internal sealed class ElasticsearchClientInitializer : InstrumentationInitialize
1111
{
1212
public override Instrumentation Id { get; } = Instrumentation.ElasticsearchClient;
1313

14+
#if NET8_0_OR_GREATER
15+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.ElasticsearchClient")]
16+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
17+
#endif
1418
protected override void InitializeTracing(TracerProviderBuilder builder)
1519
{
1620
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/EntityFrameworkCoreInitializer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ internal sealed class EntityFrameworkCoreInitializer : InstrumentationInitialize
1111
{
1212
public override Instrumentation Id { get; } = Instrumentation.EntityFrameworkCore;
1313

14+
#if NET8_0_OR_GREATER
15+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.EntityFrameworkCore")]
16+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
17+
#endif
1418
protected override void InitializeTracing(TracerProviderBuilder builder)
1519
{
1620
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/HangfireInitializer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ internal sealed class HangfireInitializer : InstrumentationInitializer
1111
{
1212
public override Instrumentation Id { get; } = Instrumentation.Hangfire;
1313

14+
#if NET8_0_OR_GREATER
15+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "OpenTelemetry.Instrumentation.Hangfire")]
16+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
17+
#endif
1418
protected override void InitializeTracing(TracerProviderBuilder builder)
1519
{
1620
ReflectionHelper.CallStaticMethod(

src/Grafana.OpenTelemetry.Base/Instrumentations/MySqlDataInitializer.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ internal sealed class MySqlDataInitializer : InstrumentationInitializer
1111
{
1212
public override Instrumentation Id { get; } = Instrumentation.MySqlData;
1313

14+
#if NET8_0_OR_GREATER
15+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Instrumentation.MySqlData", "OpenTelemetry.Instrumentation.MySqlData")]
16+
[System.Diagnostics.CodeAnalysis.DynamicDependency(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All, "OpenTelemetry.Trace.TracerProviderBuilderExtensions", "MySQL.Data.OpenTelemetry")]
17+
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimWarnings.Category, TrimWarnings.CheckId, Justification = TrimWarnings.Justification)]
18+
#endif
1419
protected override void InitializeTracing(TracerProviderBuilder builder)
1520
{
1621
// MySQL.Data.OpenTelemetry

0 commit comments

Comments
 (0)