Después de actualizar el nuevo paquete Microsoft.EntityFrameworkCore.SqlServer 1.1.2, recibí un error al intentar crear DBContext:
System.IO.FileLoadException ocurrió HResult=0x80131040
Message=No se pudo cargar el archivo o ensamblado 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' o una de sus dependencias. La definición del manifiesto del ensamblado ubicado no coincide con la referencia del ensamblado. (Excepción de HRESULT: 0x80131040) Fuente=Microsoft.EntityFrameworkCore StackTrace: en Microsoft.EntityFrameworkCore.DbContext..ctor(opciones de DbContextOptions) en Services.Infrastructure.Data.SqlServerDbContext..ctor(DatabaseOptions databaseOptions) en C:\src\backend\ Packages\Services.Infrastructure\Data\SqlServerDbContext.cs:línea 16 en Translations.Api.Data.TranslationsDbContext..ctor(DatabaseOptions databaseOptions) en C:\src\backend\Modules\Translations\Translations.Api\Data\TranslationsDbContext.cs :línea 16
Mi 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); } }Opciones de base de datos que uso
public class DatabaseOptions { public string ConnectionString { get; set; } }Lugar donde creo instancia de contexto
var dbOptions = new DatabaseOptions { ConnectionString = _connectionString }; DbContext = (TContext) Activator.CreateInstance(typeof(TContext), dbOptions); // where TContext is derived class from SqlServerDbContextTodos mis paquetes están actualizados. Estudio visual 2017 15.2 (26430.6). Antes de actualizar a 1.1.2 todo funciona bien. Por favor ayuda a resolver el problema.
Para mí, lo que hizo fue degradar todos los paquetes compatibles con .Net Standard a 2.2.0 desde 3.xx. Supongo que los paquetes 3.x son relevantes para una versión diferente de .Net estándar que no es compatible con net framework.
Aquí algunas soluciones:
1-Actualicé mis paquetes de NuGet a la última versión y funcionando al 100%.
2- haz estas ediciones en config:
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> </PropertyGroup>3-Elimine todas las carpetas bin y objct, luego limpie la solución y finalmente ejecute, espero que esto funcione.
Estaba teniendo este problema. Pero el paquete era Microsoft.Extensions.Primitives. En mi caso lo instalé en mi Project y en mi Project test de nuget. Tal vez podría ayudar a alguien.
Este es un hilo antiguo, pero tuve un problema similar después de actualizar mi función de Azure de dotnet core versión 3 a 3.1.
Mensaje de error: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.9.0
En este caso, debe actualizar la versión de la función de Azure a 'v3' en el archivo .proj.
Busqué en Google mi excepción a continuación, y me llevó a esta publicación de stakoverflow.
System.IO.FileNotFoundException: 'No se pudo cargar el archivo o ensamblado 'Microsoft.Extensions.OptionsModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.'
Tenía los redireccionamientos de enlace relevantes, pero si elimino todas las carpetas bin/obj , funcionó bien después.
Si está trabajando con Azure Functions en .NET Core, esto funcionará
Si no está utilizando la biblioteca de .net framework, sino la biblioteca de .net core, la solución aceptada no funcionará porque " no debería establecer la propiedad AutoGenerateBindingRedirects en un proyecto de netcoreapp ya que las redirecciones vinculantes ni siquiera son una cosa en netcoreapp, son solo un concepto en .NET Framework " (fuente: https://github.com/microsoft/ApplicationInsights-dotnet/issues/1699#issuecomment-592693436 ).
Prueba esto:
Aunque esto parece una solución radical, funciona porque la biblioteca ya está instalada indirectamente a través de Microsoft.Azure.Functions.Extensions:
Importante : no intente resolver este problema actualizando .NET Core de 3.1 a 5.0. Las funciones de Azure aún no se admiten en .NET 5.0. Llegará un parche a principios de 2021: https://github.com/Azure/azure-functions-host/issues/6674#issuecomment-712596112
EDITAR : las funciones de Azure ahora son compatibles con .NET Core (a menos que esté usando entidades duraderas, en ese caso tendrá que esperar a .NET 6.0):
Hoy (3/10/2021), anunciamos compatibilidad para ejecutar aplicaciones de producción .NET 5 en Azure Functions. https://techcommunity.microsoft.com/t5/apps-on-azure/net-on-azure-functions-roadmap/ba-p/2197916
Si la solución de Luis Gouveia no funciona para usted, intente degradar otras dependencias incluidas en el proyecto. Hay algunos problemas de compatibilidad con el estándar .NET.
Referencia: https://github.com/Azure/Azure-Functions/issues/1729
Tuve el mismo problema y finalmente lo solucioné con la siguiente solución.
Instale "System.ComponentModel.Annotations" versión 4.4.1 en un proyecto temporal para obtener el archivo de "System.ComponentModel.Annotations.dll", luego copie este archivo en su proyecto real y luego cambie la referencia de su proyecto para señalar este archivo en su lugar. de la ruta NuGet original
Luego, en su web.config, agregue el siguiente código que redirija
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <publisherPolicy apply="no" /> <dependentAssembly> <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.2.1.0" /> </dependentAssembly> </assemblyBinding>He tenido un problema similar al usar las funciones de Azure 3.0.13
Seguía recibiendo el error System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Extensions.Options, Version=6.0.0.0
Agregué una referencia directa al paquete a través de NuGet y luego tuve que agregar esto a mi archivo project.csproj para que todo funcionara. No puedo atribuirme el mérito de esta solución. Lo encontré en otro lugar hace un tiempo, pero no recuerdo de dónde.
<PropertyGroup> <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput> </PropertyGroup>Tuve el mismo problema con un sitio web de .Net Framework que incluía un ensamblado usando EFCore 3.1.22. Resolví el problema colocando las redirecciones de ensamblaje en web.config.
Estaba trabajando en mi aplicación de consola .Net 5.0 simple y mientras modificaba el espacio de nombres de mi proyecto, la "instalación automática" agregó solo Microsoft.Extensions.DependencyInjection.Abstraction , no el paquete nuget Microsoft.Extensions.DependencyInjection
Me tomó un tiempo darme cuenta de que...
Es una cosa loca, pero para mí lo que realmente funcionó fue actualizar todos los paquetes que comienzan con Microsoft, ya que actualicé mi proyecto para que se ejecutara sobre .Net 4.7.2, luego simplemente hice clic derecho en Solución y Limpiar y compilar nuevamente.
Dado que está utilizando el proyecto en una biblioteca de .NET Framework, hay un problema con los redireccionamientos de enlaces generados automáticamente (podría resolverse en la próxima actualización 15.3 / 2.0 .NET Core CLI). Para evitarlo, agregue esto en su archivo cpsroj (preferiblemente antes de cualquier elemento <Import> para un archivo .targets si está presente):
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> Esto debería obligar a MSBuild a crear/actualizar un archivo YourProject.dll.config que contenga las redirecciones de enlace necesarias.