Не удалось загрузить файл или сборку 'Microsoft.Extensions.DependencyInjection.Abstractions с использованием COM - PullRequest
6 голосов
/ 14 февраля 2020

[Недавнее примечание]

Если бы не видимый аспект, этот вопрос был бы дубликатом этого вопроса о привязке сборки . Я боролся в течение нескольких дней, потому что я не понимал, что мне нужно изменить свой проект модульного тестирования, а также проект видимого ком. Если вы не хотите читать мою борьбу, осознавая это, перейдите к последнему обновлению.

[Pre-amble]

Я боялся, что это может быть мостом к дальней попытке доступа к сделать tnet стандартную библиотеку 2.0 из VB6 через библиотеку COM Visible Framework 4.7.2, но хотел попробовать.

Hello World работает. (т.е. вызывая простую функцию, которая возвращает строку)

Однако я получаю эту ошибку, когда пытаюсь запустить программу VB6 через IDE или как .EXE.

Сообщение об ошибке указывает на Проблема возникает в коде библиотеки c# do tnet standard2.0.

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.<>c__DisplayClass4_0.<GetOrAdd>g__BuildServiceProvider|3()
at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.<GetOrAdd>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)

Код библиотеки, в которой возникает ошибка:

public static ApiDbContext MakeContext(string connectionString)
{
       var optionsBuilder = new DbContextOptionsBuilder<ApiDbContext>();
       optionsBuilder.UseSqlServer(connectionString );
       var options = optionsBuilder.Options;
       return new ApiDbContext(options); // Error occurs here
}

Контекстный класс содержит

public class ApiDbContext : DbContext
{
    public ApiDbContext(DbContextOptions<ApiDbContext> options)
        : base(options)
    {
    }
 // etc

Мне удалось обойти эту проблему, создав exe для консоли Framework, а затем запустив в него vb6.

Dim num As Long
num = ShellSync(cmd, vbMinimizedNoFocus)

Где код для шеллсина c в модуле

Option Explicit
Private Const INFINITE = &HFFFFFFFF
Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_QUERY_INFORMATION = &H400&

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 <> 0 Then
        lngHandle = OpenProcess(SYNCHRONIZE _
                             Or PROCESS_QUERY_INFORMATION, 0, lngPid)
        If lngHandle <> 0 Then
            WaitForSingleObject lngHandle, INFINITE
            If GetExitCodeProcess(lngHandle, lngExitCode) <> 0 Then
                ShellSync = lngExitCode
                CloseHandle lngHandle
            Else
                CloseHandle lngHandle
                Err.Raise &H8004AA00, "ShellSync", _
                          "Failed to retrieve exit code, error " _
                        & CStr(Err.LastDllError)
            End If
        Else
            Err.Raise &H8004AA01, "ShellSync", _
                      "Failed to open child process"
        End If
    Else
        Err.Raise &H8004AA02, "ShellSync", _
                  "Failed to Shell child process"
    End If
End Function

Интересно, если я вызову shell вместо shellsyn c Я получу ошибку

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, 

[Update]

Я добавил следующее в мой код в видимой библиотеке com

    [DispId(2)]
    [ComVisible(true)]
    public string ReferenceCheck()
    {
        var factory = new Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory();
        return "";
    }

но это не помогло.

Я пытался использовать Fuslogvw , но программа просмотра журнала пуста, даже после изменения настройки для входа в текст исключения и попытки устранения неполадок

I tri Я использовал Procmon и могу видеть следующее: VB6.exe No more entrires

Я также пытался найти окно «Модули» в меню «Отладка», но не вижу его. Debug menu

Проверка Эта ссылка

[Обновление]

Я заметил, что запись привязки сборки отключена. Assembly binding logging is turned off

Но когда я смотрю в RegEdit, это уже 1

EnableLog is 1

[Обновление]

После прочтения комментария Ханса Пассанта В видимой библиотеке я добавил некоторый код для разрешения сборок

Мой метод тестирования в видимой библиотеке ком показывает следующую информацию об ошибке.

System.TypeInitializationException: 
The type initializer for 'Microsoft.Data.SqlClient.TdsParser' 
threw an exception. ---> 
System.TypeInitializationException: 
The type initializer for 'Microsoft.Data.SqlClient.SNILoadHandle' threw an exception. 
---> System.TypeInitializationException: 
The type initializer for 'Microsoft.Data.SqlClient.SNINativeMethodWrapper' threw an exception. ---> 
System.ComponentModel.Win32Exception: Failed to load C:\Dev2\UnitTestProjectStandard\bin\Debug\x86\SNI.dll ---> 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& connection) line 1411
    DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) line 1310
    DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& 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)

[Обновление]

Эта проблема на GitHub, похоже, связана

Я попытался переустановить c** распространяемый

[Обновить]

Я наконец-то заставил Fuslogvw работать с с помощью этого вопроса

Here is the log

Какие ссылки 2 версии библиотеки проблем.

Я также заметил, что в моей стандартной библиотеке есть анализатор, жалующийся

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.

EF1001

[Обновление ]

Если я сделаю .exe в моем видимом ком-проекте фреймворка и запустлю его, проблем не будет. Проблема возникает, если я пытаюсь выполнить модульный тест.

Журнал Fusion показывает следующее

assembly binding log

   *** 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.

Я отмечаю некоторые различия в версиях !

different versions

Я попытался запустить тест на другом компьютере с VS 16.4.4 на случай, если это была проблема с предварительной версией Visual Studio, однако проблема была повторена.

В моем тестовом проекте фреймворка я попытался установить версию 3.1.1 Microsoft.Extensions.DependencyInjectionAbstractions и заметил предупреждение

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 -> SBD.CombridgeVivadStd -> SBDSTD.Standard 1.0.0-CI-20200301-211054 -> Microsoft.EntityFrameworkCore 3.1.2 -> Microsoft.Extensions.DependencyInjection 3.1.2 -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.2) 
 UnitTestProject1 -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.1)   UnitTestProject1    C:\Dev2\Combridge\SBD.ComBridge\UnitTestProject1\UnitTestProject1.csproj    1   

Я повторил совет Саймона по установке microsoft.data.sqlclient.sni вручную microsoft.data.sqlclient.sni

, но все равно получил ошибку

Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0

Я также попытался загрузить 1.1. 1 версия microsoft.data.sqlclient.sni

[Обновить] Я решил попробовать откатить каркас сущностей в проекте .netstandard2.0, чтобы использовать

 <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
 <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" />

Теперь, когда я тестирую модуль с com видимым проектом рамки я получаю

 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.<>c.<TryAddCoreServices>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.<>c__DisplayClass1_0.<RealizeService>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)

This c также использует мой exe.

Затем я попробовал 3.1. 0 версия EFCore Теперь я получаю следующее в рамках тестового проекта

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.<>c__DisplayClass4_0.<GetOrAdd>g__BuildServiceProvider|3()
   at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.<GetOrAdd>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)

, также происходящего в .exe

Интересно, если этот вопрос о entityframework.core связан, но я могу найти только Microsoft.EntityFrameworkCore на Nuget.

[Обновление модульного теста теперь работает]

У меня теперь работает мой модульный тест. Мне нужно было включить следующее в верхней части модульного теста проекта

   <PropertyGroup>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>    
   </PropertyGroup>

Как обсуждалось в этом вопросе о привязке сборки

Однако Мне все еще нужно обойти, чтобы использовать мою видимую библиотеку в VB6

...