Skip to content

AspNet Net 6.0: FileLoadException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=7.0.0.0 #4047

@ggallotti

Description

@ggallotti

Question

When using the latest version of the OpenTelemetry NuGet package (currently 1.4.0-rc.1) an AspNetCore Net6.0 fails to start because OTel has taken a dependency on System.Diagnostics.DiagnosticSource 7.0.0.

  <ItemGroup>
	  <PackageReference Include="OpenTelemetry.Api" Version="1.4.0-rc.1" NoWarn="NU5104" />
	  <PackageReference Include="OpenTelemetry" Version="1.4.0-rc.1" NoWarn="NU5104" />
	  <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.4.0-rc.1" NoWarn="NU5104" />
	  <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.4.0-rc.1" NoWarn="NU5104" />
	  <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.4.0-rc.1" NoWarn="NU5104" />
	  <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc9.10" NoWarn="NU5104" />
	  <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc9.10" NoWarn="NU5104" />
	  <PackageReference Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.0.0-rc9.10" NoWarn="NU5104" />	  
  </ItemGroup>

When running an ASP.NET NET6.0 App, an exception ocurrs:

System.TypeInitializationException
  HResult=0x80131534
  Message=The type initializer for 'OpenTelemetry.Sdk' threw an exception.
  Source=OpenTelemetry
  StackTrace:
   at OpenTelemetry.Sdk.get_SuppressInstrumentation()
   at Microsoft.Extensions.DependencyInjection.ProviderBuilderServiceCollectionExtensions.AddOpenTelemetrySharedProviderBuilderServices(IServiceCollection services)
   at OpenTelemetry.Trace.TracerProviderBuilderBase..ctor()
   at OpenTelemetry.Trace.TracerProviderBuilderHosting..ctor(IServiceCollection services)
   at Microsoft.Extensions.DependencyInjection.OpenTelemetryServicesExtensions.AddOpenTelemetryTracing(IServiceCollection services, Action`1 configure)
   at App.OpenTelemetry.OpenTelemetry.OpenTelemetryProvider.InstrumentAspNetCoreApplication(IServiceCollection services) in D:\DEV\git\DotNetClasses\dotnet\src\dotnetcore\Providers\OpenTelemetry\OpenTelemetry\OpenTelemetryProvider.cs:line 17
   at App.Services.OpenTelemetry.OpenTelemetryService.Setup(IServiceCollection services) in D:\DEV\git\DotNetClasses\dotnet\src\dotnetcore\GxClasses\Services\OpenTelemetry\OpenTelemetryService.cs:line 48
   at App.Application.Startup.ConfigureServices(IServiceCollection services) in D:\DEV\git\DotNetClasses\dotnet\src\dotnetcore\GxNetCoreStartup\Startup.cs:line 140
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.InvokeCore(Object instance, IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass9_0.<Invoke>g__Startup|0(IServiceCollection serviceCollection)
   at Microsoft.AspNetCore.Hosting.StartupLoader.ConfigureServicesDelegateBuilder`1.<>c__DisplayClass15_0.<BuildStartupServicesFilterPipeline>g__RunPipeline|0(IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass8_0.<Build>b__0(IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.StartupLoader.ConfigureServicesDelegateBuilder`1.<>c__DisplayClass14_0.<ConfigureServices>g__ConfigureServicesWithContainerConfiguration|0(IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services)

  This exception was originally thrown at this call stack:
    [External Code]
    GxClasses.Helpers.AssemblyLoader.LoadContext_Resolving(System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName) in CompatibilityExtensions.cs
    [External Code]

Inner Exception 1:
FileLoadException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Could not find or load a specific file. (0x80131621)

It seems that DiagnosticSource is not compatible with .NET6?
Seems to be related to this Issue: Azure/azure-functions-host#8938

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions