TypeLoadException is thrown when using third party exporter
Author: filzrevCreated Apr 13, 2026Updated May 4, 2026
When using latest master branch code.
BenchmarkDotNet.Samples project throw following exception.
Unhandled exception. System.TypeLoadException: Method 'ExportAsync' in type 'VSDiagnosticsExporter' from assembly 'VSDiagnostics.BenchmarkDotNet, Version=18.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' does not have an implementation.
at Microsoft.VSDiagnostics.VSDiagnosticsDiagnoser.get_Exporters()
at BenchmarkDotNet.Configs.ImmutableConfigBuilder.GetExporters(IEnumerable`1 exporters, ImmutableHashSet`1 uniqueDiagnosers, IList`1 configAnalyse) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Configs\ImmutableConfigBuilder.cs:line 129
at BenchmarkDotNet.Configs.ImmutableConfigBuilder.Create(IConfig source) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Configs\ImmutableConfigBuilder.cs:line 46
at BenchmarkDotNet.Running.BenchmarkConverter.GetFullTypeConfig(Type type, IConfig config) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\BenchmarkConverter.cs:line 98
at BenchmarkDotNet.Running.BenchmarkConverter.MethodsToBenchmarksWithFullConfig(Type type, MethodInfo[] benchmarkMethods, IConfig config) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\BenchmarkConverter.cs:line 44
at BenchmarkDotNet.Running.BenchmarkConverter.TypeToBenchmarks(Type type, IConfig config) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\BenchmarkConverter.cs:line 26
at BenchmarkDotNet.Running.TypeFilter.<>c__DisplayClass1_0.<Filter>b__0(Type type) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\TypeFilter.cs:line 65
at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.ToArray()
at BenchmarkDotNet.Running.TypeFilter.Filter(IConfig effectiveConfig, IEnumerable`1 types) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\TypeFilter.cs:line 64
at BenchmarkDotNet.Running.BenchmarkSwitcher.RunWithDirtyAssemblyResolveHelper(String[] args, IConfig config, Boolean askUserForInput, CancellationToken cancellationToken) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\BenchmarkSwitcher.cs:line 162
at BenchmarkDotNet.Running.BenchmarkSwitcher.RunAsync(String[] args, IConfig config, CancellationToken cancellationToken) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\BenchmarkSwitcher.cs:line 111
at BenchmarkDotNet.Engines.BenchmarkDotNetSynchronizationContext.ExecuteUntilComplete[T](ValueTask`1 valueTask) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Engines\BenchmarkSynchronizationContext.cs:line 101
at BenchmarkDotNet.Engines.BenchmarkSynchronizationContext.ExecuteUntilComplete[T](ValueTask`1 valueTask) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Engines\BenchmarkSynchronizationContext.cs:line 29
at BenchmarkDotNet.Running.BenchmarkSwitcher.Run(String[] args, IConfig config) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\src\BenchmarkDotNet\Running\BenchmarkSwitcher.cs:line 73
at BenchmarkDotNet.Samples.Program.Main(String[] args) in C:\Projects\GitHub\thirdparty\BenchmarkDotNet\samples\BenchmarkDotNet.Samples\Program.cs:line 27It seems be occurred because IExporter interface has breaking changes on recent commit.
Is it able to keep interface backward compatibility?
Otherwise, third party exporter dependency needs updated after BenchmarkDotNet 0.16.x is released.
Source: dotnet/BenchmarkDotNet