新しいパッケージMicrosoft.EntityFrameworkCore.SqlServer 1.1.2への更新後、DBContextを作成しようとするとエラーが発生しました。
System.IO.FileLoadExceptionが発生しましたHResult = 0x80131040
Message =ファイルまたはアセンブリ「Microsoft.Extensions.DependencyInjection.Abstractions、バージョン= 1.1.0.0、Culture = neutral、PublicKeyToken = adb9793829ddae60」またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)Source = Microsoft.EntityFrameworkCore StackTrace:at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options)at Services.Infrastructure.Data.SqlServerDbContext..ctor(DatabaseOptions databaseOptions)in C:\ src\backend\Packages\Services.Infrastructure\Data\SqlServerDbContext.cs:C:\ src\backend\Modules\Translations\Translations.Api\Data\TranslationsDbContext.csのTranslations.Api.Data.TranslationsDbContext..ctor(DatabaseOptions databaseOptions)の16行目:行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
ファイルを強制的に作成/更新する必要があります。