Après la mise à jour du nouveau package Microsoft.EntityFrameworkCore.SqlServer 1.1.2, une erreur s'est produite lors de la tentative de création de DBContext:
System.IO.FileLoadException s'est produite HResult = 0x80131040
Message = Impossible de charger le fichier ou l'assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version = 1.1.0.0, Culture = neutre, PublicKeyToken = adb9793829ddae60' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040) Source = Microsoft.EntityFrameworkCore StackTrace: à Microsoft.EntityFrameworkCore.DbContext..ctor (options DbContextOptions) à Services.Infrastructure.Data.SqlServerDbContext..ctor (base de données); Packages\Services.Infrastructure\Data\SqlServerDbContext.cs: ligne 16 dans Translations.Api.Data.TranslationsDbContext..ctor (DatabaseOptions databaseOptions) dans C:\src\backend\Modules\Translations\Translations.Api\Data\TranslationsDbContext.cs : ligne 16
Ma base 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);
}
}
Options de base de données que j'utilise
public class DatabaseOptions
{
public string ConnectionString { get; set; }
}
Lieu où je crée une instance de contexte
var dbOptions = new DatabaseOptions { ConnectionString = _connectionString };
DbContext = (TContext) Activator.CreateInstance(typeof(TContext), dbOptions);
// where TContext is derived class from SqlServerDbContext
Tous mes colis sont mis à jour. Visual Studio 2017 15.2 (26430.6). Avant de passer à la version 1.1.2, tout fonctionne bien. S'il vous plaît aider à résoudre le problème.
Comme vous utilisez le projet dans une bibliothèque .net Framework, il existe un problème avec les redirections de liaison générées automatiquement (peut être résolu dans la prochaine ligne de commande 15.3 update/2.0 .net). Pour le contourner, ajoutez ceci dans votre fichier cpsroj
(de préférence avant tout fichier <Import>
élément pour un .targets
fichier si présent):
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
Cela devrait obliger MSBuild à créer/mettre à jour un fichier YourProject.dll.config
fichier contenant les redirections de liaison nécessaires.