【发布时间】:2017-10-15 04:18:31
【问题描述】:
更新到新包 Microsoft.EntityFrameworkCore.SqlServer 1.1.2 后尝试创建 DBContext 时出错:
System.IO.FileLoadException 发生 HResult=0x80131040
消息=无法加载文件或程序集 'Microsoft.Extensions.DependencyInjection.Abstractions, 版本=1.1.0.0,文化=中性,PublicKeyToken=adb9793829ddae60' 或 它的依赖项之一。定位程序集的清单定义 与程序集引用不匹配。 (HRESULT 的例外情况: 0x80131040)来源=Microsoft.EntityFrameworkCore StackTrace:在 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
我的基础 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 标准/.net 框架库/控制台/Web 应用程序?
-
@MartinUllrich .net 框架库和 .net461
-
FWIW - 如果您尝试升级 NuGet,然后决定使用源控制工具恢复到“工作”项目(恢复 packages.config 和 .csproj 文件),则可能会发生这种情况然后忘了从 web.config 中恢复绑定重定向
-
如果此错误包含有用的信息(例如不兼容的软件包)以及至少更清晰的错误消息,那就太好了。
标签: c# .net entity-framework .net-core entity-framework-core