無法加載文件或程序集Microsoft.Extensions.DependencyInjection.Abstractions,Version = 1.1.0.0

.net .net-core c# entity-framework entity-framework-core

更新到新包Microsoft.EntityFrameworkCore.SqlServer 1.1.2後,我嘗試創建DBContext時出錯:

System.IO.FileLoadException發生HResult = 0x80131040
消息=無法加載文件或程序集'Microsoft.Extensions.DependencyInjection.Abstractions,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'或其依賴項之一。定位的程序集的清單定義與程序集引用不匹配。 (來自HRESULT的異常:0x80131040)Source = Microsoft.EntityFrameworkCore StackTrace:位於C:\ src \ backend \中Services.Infrastructure.Data.SqlServerDbContext..ctor(DatabaseOptions databaseOptions)的Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions選項) Packages \ Services.Infrastructure \ Data \ SqlServerDbContext.cs:第16行,位於C:\ src \ backend \ Modules \ Translations \ Translations.Api \ Data \ TranslationsDbContext.cs中的Translations.Api.Data.TranslationsDbContext..ctor(DatabaseOptions databaseOptions) :第16行

我的基礎DbContext

public class SqlServerDbContext : DbContext
{
    private readonly DatabaseOptions _databaseOptions;

    protected SqlServerDbContext(DatabaseOptions databaseOptions)
    {
        if (string.IsNullOrEmpty(databaseOptions.ConnectionString))
            throw new Exception("Database connection string is missed.");

        _databaseOptions = databaseOptions;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(_databaseOptions.ConnectionString);
    }
}

我使用的數據庫選項

public class DatabaseOptions
{
    public string ConnectionString { get; set; }
}

我創建上下文實例的地方

 var dbOptions = new DatabaseOptions { ConnectionString = _connectionString };
 DbContext = (TContext) Activator.CreateInstance(typeof(TContext), dbOptions);
// where TContext is derived class from SqlServerDbContext

我的所有包都會更新。 Visual Studio 2017 15.2(26430.6)。在升級到1.1.2之前一切正常。請幫忙解決問題。

一般承認的答案

由於您在.net框架庫中使用該項目,因此自動生成的綁定重定向存在問題(可能會在即將發布的15.3更新/ 2.0 .net核心CLI中解決)。要解決它,在你添加此cpsroj文件(優選之前的任何<Import>要元件.targets文件如果存在的話):

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

這應該強制MSBuild創建/更新包含必要綁定重定向的YourProject.dll.config文件。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow