更新到新程序包Microsoft.EntityFrameworkCore.SqlServer 1.1.2后,try 创建DBContext时出错:

发生System.IO.FileLoadException HResult=0x80131040
消息=无法加载文件或程序集 ‘Microsoft.Extensions.DependencyInjection.Abstractions, 版本=1.1.0.0,区域性=中性,PublicKeyToken=adb9793829ddae60‘或 它的一个依赖项.找到的程序集的 list 定义 与程序集引用不匹配.(HRESULT例外: 0x80131040)来源=Microsoft.EntityFrameworkCore StackTrace:at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions 选项)位于 Services.Infrastructure.Data.SqlServerDbContext..ctor(DatabaseOptions 数据库选项)中 C:\src\backend\Packages\Services.Infrastructure\Data\SqlServerDbContext.cs:line 16在 Translations.Api.Data.TranslationsDbContext..ctor(DatabaseOptions 数据库选项)中 C:\src\backend\Modules\Translations\Translations.Api\Data\TranslationsDbContext.cs:line 16个

我的基本数据库上下文

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 framework库中,自动生成的绑定重定向存在问题(可能会在即将到来的15.3更新/2.0.net core CLI中解决).要解决这个问题,请将其添加到cpsroj文件中(最好在.targets文件的任何<Import>元素之前,如果存在的话):

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

这将强制MSBuild创建/更新包含必要绑定重定向的YourProject.dll.config文件.

.net相关问答推荐

如何运行大量阻塞/同步 I/O 操作

EFCore.DbSet.Update 方法添加新行而不是更新它

无法实例化类的代理:System.Net.HttpWebRequest.找不到无参数构造函数

在 C# 中输入按键

为什么不能使用 null 作为 Dictionary 的键?

生产代码中的 System.Diagnostics.Debug.WriteLine

.NET 4.0 中有内置的二叉搜索树吗?

使用多个 MemoryCache 实例

序列化私有成员数据

什么是 project.lock.json?

属性应该与其类型同名吗?

如何正确停止BackgroundWorker

如何判断对象是否是某种类型的数组?

在安全处理异常时避免首次机会异常消息

创建多个线程并等待所有线程完成

测试没有预期的异常

string.Empty vs null.你用哪一个?

Windows 服务在哪个目录中运行?

有没有一种简单的方法来判断 .NET Framework 版本?

判断数据表中是否包含空值的最佳方法