title: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions using COM
body: <p>[Recent Note]</p>
  
  <p>If it were not for the com-visible aspect, this question would be a duplicate of <a href="https://stackoverflow.com/questions/43995432/could-not-load-file-or-assembly-microsoft-extensions-dependencyinjection-abstrac?rq=1">this question on assembly binding</a>. I had struggled for days because I did not realize that I needed to alter my unit test project as well as the com visible project. If you don't want to read through my struggles realizing this, skip to the last update.</p>
  
  <p>[Pre-amble]</p>
  
  <p>I feared it may be a bridge to far trying to access a dotnet standard 2.0 library from VB6 via a COM Visible Framework 4.7.2 library, but wanted to try.</p>
  
  <p>Hello World does work. ( i.e calling a simple function that returns a string )</p>
  
  <p>However I get this error when I try and run the VB6 program via the IDE or as a .EXE.</p>
  
  <p>The error message indicates the problem is occuring in the code of the c# dotnet standard2.0 library.</p>
  
  <pre><code>System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, 
  Version=3.1.0.0, Culture=neutral, 
  PublicKeyToken=adb9793829ddae60' or one of its dependencies. 
  The system cannot find the file specified.
  File name: 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0,
  Culture=neutral, PublicKeyToken=adb9793829ddae60'
  at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.&lt;&gt;c__DisplayClass4_0.&lt;GetOrAdd&gt;g__BuildServiceProvider|3()
  at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.&lt;&gt;c__DisplayClass4_0.&lt;GetOrAdd&gt;b__2(Int64 k)
  at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
  at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, Boolean providerRequired)
  at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options)
  at SBDSTD.Standard.Entities.ApiDbContext..ctor(DbContextOptions options)
  at SBDSTD.Standard.Services.Helper.MakeContext(String connectionString)
  </code></pre>
  
  <p>The library code where the error is occurs is</p>
  
  <pre><code>public static ApiDbContext MakeContext(string connectionString)
  {
         var optionsBuilder = new DbContextOptionsBuilder&lt;ApiDbContext&gt;();
         optionsBuilder.UseSqlServer(connectionString );
         var options = optionsBuilder.Options;
         return new ApiDbContext(options); // Error occurs here
  }
  </code></pre>
  
  <p>The context class contains</p>
  
  <pre><code>public class ApiDbContext : DbContext
  {
      public ApiDbContext(DbContextOptions&lt;ApiDbContext&gt; options)
          : base(options)
      {
      }
   // etc
  </code></pre>
  
  <p>I managed to work around the issue by creating a Framework console exe , then getting vb6 to shell out to it.</p>
  
  <pre><code>Dim num As Long
  num = ShellSync(cmd, vbMinimizedNoFocus)
  </code></pre>
  
  <p>Where code for shellsync is in a module</p>
  
  <pre><code>Option Explicit
  Private Const INFINITE = &amp;HFFFFFFFF
  Private Const SYNCHRONIZE = &amp;H100000
  Private Const PROCESS_QUERY_INFORMATION = &amp;H400&amp;
  
  Private Declare Function CloseHandle Lib "kernel32" ( _
      ByVal hObject As Long) As Long
  
  Private Declare Function GetExitCodeProcess Lib "kernel32" ( _
      ByVal hProcess As Long, _
      lpExitCode As Long) As Long
  
  Private Declare Function OpenProcess Lib "kernel32" ( _
      ByVal dwDesiredAccess As Long, _
      ByVal bInheritHandle As Long, _
      ByVal dwProcessId As Long) As Long
  
  Private Declare Function WaitForSingleObject Lib "kernel32" ( _
      ByVal hHandle As Long, _
      ByVal dwMilliseconds As Long) As Long
  
  Public Function ShellSync( _
      ByVal PathName As String, _
      ByVal WindowStyle As VbAppWinStyle) As Long
      'Shell and wait.  Return exit code result, raise an
      'exception on any error.
      Dim lngPid As Long
      Dim lngHandle As Long
      Dim lngExitCode As Long
  
      lngPid = Shell(PathName, WindowStyle)
      If lngPid &lt;&gt; 0 Then
          lngHandle = OpenProcess(SYNCHRONIZE _
                               Or PROCESS_QUERY_INFORMATION, 0, lngPid)
          If lngHandle &lt;&gt; 0 Then
              WaitForSingleObject lngHandle, INFINITE
              If GetExitCodeProcess(lngHandle, lngExitCode) &lt;&gt; 0 Then
                  ShellSync = lngExitCode
                  CloseHandle lngHandle
              Else
                  CloseHandle lngHandle
                  Err.Raise &amp;H8004AA00, "ShellSync", _
                            "Failed to retrieve exit code, error " _
                          &amp; CStr(Err.LastDllError)
              End If
          Else
              Err.Raise &amp;H8004AA01, "ShellSync", _
                        "Failed to open child process"
          End If
      Else
          Err.Raise &amp;H8004AA02, "ShellSync", _
                    "Failed to Shell child process"
      End If
  End Function
  </code></pre>
  
  <p>Interestingly if I call shell instead of shellsync I get the error</p>
  
  <pre><code>System.Exception: kg1System.IO.FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.
  File name: 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
     at SBDSTD.Standard.Helpers.LogHelper.LogMessage(String message, 
  </code></pre>
  
  <p>[Update]</p>
  
  <p>I added the following to my code to the com visible library</p>
  
  <pre><code>    [DispId(2)]
      [ComVisible(true)]
      public string ReferenceCheck()
      {
          var factory = new Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory();
          return "";
      }
  </code></pre>
  
  <p>but it did not help.</p>
  
  <p>I tried to use <a href="https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/e74a18c4(v=vs.100)?redirectedfrom=MSDN" rel="nofollow noreferrer">Fuslogvw</a> but the log viewer is empty, even after I change the settings to Log in exception text and <a href="https://stackoverflow.com/questions/3240278/assembly-binding-log-viewer-fuslogvw-not-logging-any-bindings">attempt to troubleshoot</a></p>
  
  <p>I tried using Procmon and can see the following sort of thing 
  <a href="https://i.stack.imgur.com/9yoC2.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9yoC2.png" alt="VB6.exe No more entrires"></a></p>
  
  <p>I also tried to find the Modules window from the Debug menu but dont see it.
  <a href="https://i.stack.imgur.com/6RA1U.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6RA1U.png" alt="Debug menu"></a></p>
  
  <p>Checking <a href="https://www.benday.com/2017/08/17/another-workaround-for-the-ef-core-fileloadexception-system-diagnostics-diagnosticsource-problem/" rel="nofollow noreferrer">This link</a></p>
  
  <p>[Update]</p>
  
  <p>I notice I have assembly binding logging turned off.
  <a href="https://i.stack.imgur.com/ixPGk.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ixPGk.png" alt="Assembly binding logging is turned off"></a></p>
  
  <p>But when I look in RegEdit it is already 1</p>
  
  <p><a href="https://i.stack.imgur.com/k1RRh.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/k1RRh.png" alt="EnableLog is 1"></a></p>
  
  <p>[Update]</p>
  
  <p>After reading Hans Passant's comment 
  In the com visible library I added <a href="https://docs.microsoft.com/en-us/dotnet/api/system.appdomain.assemblyresolve?view=netframework-4.8" rel="nofollow noreferrer">some code to resolve assemblies</a></p>
  
  <p>My test method in the com visible library shows the following error information.</p>
  
  <pre><code>System.TypeInitializationException: 
  The type initializer for 'Microsoft.Data.SqlClient.TdsParser' 
  threw an exception. ---&gt; 
  System.TypeInitializationException: 
  The type initializer for 'Microsoft.Data.SqlClient.SNILoadHandle' threw an exception. 
  ---&gt; System.TypeInitializationException: 
  The type initializer for 'Microsoft.Data.SqlClient.SNINativeMethodWrapper' threw an exception. ---&gt; 
  System.ComponentModel.Win32Exception: Failed to load C:\Dev2\UnitTestProjectStandard\bin\Debug\x86\SNI.dll ---&gt; System.ComponentModel.Win32Exception: 
  The specified module could not be found
    Stack Trace: 
      SNINativeMethodWrapper.cctor() line 64
      --- End of inner exception stack trace ---
      SNINativeMethodWrapper.SNIInitialize()
      SNILoadHandle.ctor() line 36
      SNILoadHandle.cctor() line 17
      --- End of inner exception stack trace ---
      TdsParser.cctor() line 166
      --- End of inner exception stack trace ---
      DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal&amp; connection) line 1411
      DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal&amp; connection) line 1310
      DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal&amp; connection) line 357
      DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) line 773
      DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) line 72
      SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) line 1860
      SqlConnection.TryOpen(TaskCompletionSource`1 retry) line 1853
      SqlConnection.Open() line 1421
      RelationalConnection.OpenDbConnection(Boolean errorsExpected)
      RelationalConnection.Open(Boolean errorsExpected)
      RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
      Enumerator.InitializeReader(DbContext _, Boolean result)
      SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
      Enumerator.MoveNext()
      Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
      lambda_method(Closure , QueryContext )
      QueryCompiler.Execute[TResult](Expression query)
      EntityQueryProvider.Execute[TResult](Expression expression)
      Queryable.FirstOrDefault[TSource](IQueryable`1 source)
  </code></pre>
  
  <p>[Update]</p>
  
  <p><a href="https://github.com/dotnet/SqlClient/issues/211" rel="nofollow noreferrer">This issue on GitHub seems related</a></p>
  
  <p>I tried reinstalling the c** redistributable</p>
  
  <p>[Update]</p>
  
  <p>I finally got Fuslogvw to work with <a href="https://stackoverflow.com/questions/255669/how-to-enable-assembly-bind-failure-logging-fusion-in-net">the help of this question</a></p>
  
  <p><a href="https://i.stack.imgur.com/GXMhD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/GXMhD.png" alt="Here is the log"></a></p>
  
  <p>Which references 2 versions of the problem library.</p>
  
  <p>I also noticed that my standard library has an analyzer complaining </p>
  
  <pre><code>0} is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release.
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/ReL0h.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ReL0h.png" alt="EF1001"></a></p>
  
  <p>[Update]</p>
  
  <p>If I make a .exe in my com visible framework project, and run it , there is no problem. The problem occurs if I try a unit test.</p>
  
  <p>Fusion log shows the following</p>
  
  <p><a href="https://i.stack.imgur.com/RmpyH.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RmpyH.png" alt="assembly binding log"></a></p>
  
  <pre><code>   *** Assembly Binder Log Entry  (02-Mar-20 @ 7:54:23 AM) ***
  
  The operation failed.
  Bind result: hr = 0x80131040. No description available.
  
  Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
  Running under executable  C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\TestPlatform\testhost.x86.exe
  --- A detailed error log follows. 
  
  === Pre-bind state information ===
  LOG: DisplayName = Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
   (Fully-specified)
  LOG: Appbase = file:///C:/Dev2/Combridge/SBD.ComBridge/UnitTestProject1/bin/Debug
  LOG: Initial PrivatePath = NULL
  LOG: Dynamic Base = NULL
  LOG: Cache Base = NULL
  LOG: AppName = NULL
  Calling assembly : Microsoft.Extensions.DependencyInjection, Version=3.1.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60.
  ===
  LOG: This bind starts in default load context.
  LOG: Using application configuration file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\TestPlatform\testhost.x86.exe.Config
  LOG: Using host configuration file: 
  LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
  LOG: Post-policy reference: Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
  LOG: GAC Lookup was unsuccessful.
  LOG: Attempting download of new URL file:///C:/Dev2/Combridge/SBD.ComBridge/UnitTestProject1/bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.DLL.
  LOG: Assembly download was successful. Attempting setup of file: C:\Dev2\Combridge\SBD.ComBridge\UnitTestProject1\bin\Debug\Microsoft.Extensions.DependencyInjection.Abstractions.dll
  LOG: Entering run-from-source setup phase.
  LOG: Assembly Name is: Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
  WRN: Comparing the assembly name resulted in the mismatch: Build Number
  ERR: The assembly reference did not match the assembly definition found.
  ERR: Run-from-source setup phase failed with hr = 0x80131040.
  ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
  
  *** Assembly Binder Log Entry  (02-Mar-20 @ 7:54:23 AM) ***
  
  The operation failed.
  Bind result: hr = 0x80131040. No description available.
  
  Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
  Running under executable  C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\TestPlatform\testhost.x86.exe
  --- A detailed error log follows. 
  
  === Pre-bind state information ===
  LOG: DisplayName = Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
   (Fully-specified)
  LOG: Appbase = file:///C:/Dev2/Combridge/SBD.ComBridge/UnitTestProject1/bin/Debug
  LOG: Initial PrivatePath = NULL
  LOG: Dynamic Base = NULL
  LOG: Cache Base = NULL
  LOG: AppName = NULL
  Calling assembly : Microsoft.Extensions.DependencyInjection, Version=3.1.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60.
  ===
  LOG: This bind starts in default load context.
  LOG: Using application configuration file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\TestPlatform\testhost.x86.exe.Config
  LOG: Using host configuration file: 
  LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
  LOG: Post-policy reference: Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
  LOG: GAC Lookup was unsuccessful.
  LOG: Attempting download of new URL file:///C:/Dev2/Combridge/SBD.ComBridge/UnitTestProject1/bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.DLL.
  LOG: Assembly download was successful. Attempting setup of file: C:\Dev2\Combridge\SBD.ComBridge\UnitTestProject1\bin\Debug\Microsoft.Extensions.DependencyInjection.Abstractions.dll
  LOG: Entering run-from-source setup phase.
  LOG: Assembly Name is: Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
  WRN: Comparing the assembly name resulted in the mismatch: Build Number
  ERR: The assembly reference did not match the assembly definition found.
  ERR: Run-from-source setup phase failed with hr = 0x80131040.
  ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
  </code></pre>
  
  <p>I note some version differences!</p>
  
  <p><a href="https://i.stack.imgur.com/5l3FR.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/5l3FR.png" alt="different versions"></a></p>
  
  <p>I tried running the test on a different machine with VS 16.4.4 in case it was an issue with the Preview version of Visual Studio, however the problem was repeated.</p>
  
  <p>In my framework test project I tried <a href="https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection.Abstractions/" rel="nofollow noreferrer">installing the 3.1.1 version</a> of Microsoft.Extensions.DependencyInjectionAbstractions and noticed a warning</p>
  
  <pre><code>Severity    Code    Description Project File    Line    Suppression State
  Warning NU1605  Detected package downgrade: Microsoft.Extensions.DependencyInjection.Abstractions from 3.1.2 to 3.1.1. Reference the package directly from the project to select a different version. 
   UnitTestProject1 -&gt; SBD.CombridgeVivadStd -&gt; SBDSTD.Standard 1.0.0-CI-20200301-211054 -&gt; Microsoft.EntityFrameworkCore 3.1.2 -&gt; Microsoft.Extensions.DependencyInjection 3.1.2 -&gt; Microsoft.Extensions.DependencyInjection.Abstractions (&gt;= 3.1.2) 
   UnitTestProject1 -&gt; Microsoft.Extensions.DependencyInjection.Abstractions (&gt;= 3.1.1)   UnitTestProject1    C:\Dev2\Combridge\SBD.ComBridge\UnitTestProject1\UnitTestProject1.csproj    1   
  </code></pre>
  
  <p>I retried Simon's advice to install microsoft.data.sqlclient.sni manually
  <a href="https://i.stack.imgur.com/vK0fe.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vK0fe.png" alt="microsoft.data.sqlclient.sni"></a></p>
  
  <p>but still got the error</p>
  
  <pre><code>Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0
  </code></pre>
  
  <p>I also tried downloading the 1.1.1 version of microsoft.data.sqlclient.sni</p>
  
  <p>[Update]
  I decided to try rolling back entity framework in the .netstandard2.0 project to use</p>
  
  <pre><code> &lt;PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" /&gt;
   &lt;PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" /&gt;
  </code></pre>
  
  <p>Now when I unit test with the com visible framework project I get</p>
  
  <pre><code> System.Exception: vivadbridgestd:GetValidCarriers line: 20 error:System.Exception: kg1System.IO.FileLoadException: Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
      File name: 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
         at Microsoft.EntityFrameworkCore.Metadata.Conventions.Infrastructure.RelationalConventionSetBuilder.CreateConventionSet()
         at Microsoft.EntityFrameworkCore.Metadata.Conventions.SqlServerConventionSetBuilder.CreateConventionSet()
         at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RuntimeConventionSetBuilder.CreateConventionSet()
         at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder)
         at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext context, IConventionSetBuilder conventionSetBuilder)
         at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
         at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
         at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.&lt;&gt;c.&lt;TryAddCoreServices&gt;b__7_3(IServiceProvider p)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.&lt;&gt;c__DisplayClass1_0.&lt;RealizeService&gt;b__0(ServiceProviderEngineScope scope)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
         at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
         at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
         at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
         at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
         at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
         at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
         at Microsoft.EntityFrameworkCore.DbContext.get_Model()
         at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityType()
         at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityQueryable()
         at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.System.Linq.IQueryable.get_Provider()
         at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)
         at SBDSTD.Standard.Helpers.LogHelper.InnerLogMessage(String message, JobHeaderLogInfo logInfo, Boolean sendEmail, ApiDbContext connect)
  </code></pre>
  
  <p>This causes my exe to fail as well.</p>
  
  <p>Then I tried the 3.1.0 version of EFCore
  I now get the following in the framework test project</p>
  
  <pre><code>Test method UnitTestProject1.UnitTest1.T225_ValidCarriers threw exception: 
  System.Exception: vivadbridgestd:GetValidCarriers line: 20 error:System.Exception: kg1System.Exception: Line 53 System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
  File name: 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
     at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.&lt;&gt;c__DisplayClass4_0.&lt;GetOrAdd&gt;g__BuildServiceProvider|3()
     at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.&lt;&gt;c__DisplayClass4_0.&lt;GetOrAdd&gt;b__2(Int64 k)
     at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
     at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, Boolean providerRequired)
     at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options)
     at SBDSTD.Standard.Entities.ApiDbContext..ctor(DbContextOptions`1 options)
     at SBDSTD.Standard.Services.Helper.MakeContext(String connectionString)
  
  Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
  Running under executable  C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\TestPlatform\testhost.x86.exe
  --- A detailed error log follows. 
  
  === Pre-bind state information ===
  LOG: DisplayName = Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
   (Fully-specified)
  LOG: Appbase = file:///C:/Dev2/Combridge/SBD.ComBridge/UnitTestProject1/bin/Debug
  LOG: Initial PrivatePath = NULL
  Calling assembly : Microsoft.Extensions.DependencyInjection, Version=3.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60.
  ===
  LOG: This bind starts in default load context.
  LOG: Using application configuration file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\TestPlatform\testhost.x86.exe.Config
  LOG: Using host configuration file: 
  LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
  LOG: Post-policy reference: Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
  LOG: Attempting download of new URL file:///C:/Dev2/Combridge/SBD.ComBridge/UnitTestProject1/bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.DLL.
  WRN: Comparing the assembly name resulted in the mismatch: Build Number
  ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
  
     at SBDSTD.Standard.Services.Helper.MakeContext(String connectionString)
  </code></pre>
  
  <p>also happening in the .exe</p>
  
  <p>I wondered if <a href="https://stackoverflow.com/questions/38435613/could-not-load-type-microsoft-extensions-dependencyinjection-serviceproviderext?rq=1">this question about entityframework.core</a> is related but I can only find Microsoft.EntityFrameworkCore on Nuget.</p>
  
  <p>[Update unit test now works]</p>
  
  <p>I now have my unit test working.
  I needed to include the following near the top of the <strong>unit test</strong> project</p>
  
  <pre><code>   &lt;PropertyGroup&gt;
      &lt;AutoGenerateBindingRedirects&gt;true&lt;/AutoGenerateBindingRedirects&gt;
      &lt;GenerateBindingRedirectsOutputType&gt;true&lt;/GenerateBindingRedirectsOutputType&gt;    
     &lt;/PropertyGroup&gt;
  </code></pre>
  
  <p>As discussed <a href="https://stackoverflow.com/questions/43995432/could-not-load-file-or-assembly-microsoft-extensions-dependencyinjection-abstrac?rq=1">in this question on assembly binding</a></p>
  
  <p>However I still need to a work around to use my com visible library in VB6</p>