web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly Microsoft.Extensions.DependencyInjection.Abstractions, Version = 1.1.0.0

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.

24
Robert N. Dean

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.

38
Martin Ullrich