De repente, después de agregar algunos paquetes de NuGet (en su mayoría, relacionados con ASPNET Identity), comenzó a mostrar este error:
FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Tengo como objetivo .Net Framework 4.7.1. Intenté instalar el paquete NuGet System.Runtime 4.3.0, no ayudó. El archivo web.config tiene una referencia:
<dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/> </dependentAssembly>
No hay System.Runtime.dll en la carpeta bin.
¿Algunas ideas?
Uso Visual Studio 2017 15.5.5.
ACTUALIZAR:
Uso las entradas de PackageReference en el archivo .csproj, por lo que no es el problema con los paquetes.config.
Parece que algunas dependencias no están cargadas.
No hay System.Runtime.dll en la carpeta bin.
Se hace referencia al paquete System.Runtime pero es necesario instalarlo .
En el menú de Visual Studio, vaya a Herramienta > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución...
En la ventana NuGet - Solución activa, vaya a la pestaña Instalado, navegue hasta System.Runtime by Microsoft. Seleccione con un solo clic y mire en la ventana lateral si existe una versión para el proyecto. De lo contrario, seleccione el proyecto y haga clic en Instalar.
Construir solución.
Tuve esto recientemente al actualizar un proyecto de net462 a net471, el problema en mi caso fueron algunas redirecciones de ensamblaje que fueron requeridas por la versión net462 pero confundieron gravemente a net471.
La solución fue eliminar todas las entradas de redirección de ensamblaje en web.config y dejar que Visual Studio las vuelva a calcular; aparecerán como una advertencia en la que se puede hacer clic para volver a agregarlas a web.config.
Mi proyecto ASP.NET ya estaba en net471 en VS 15.8.4 cuando esto comenzó a suceder. Cuando intentaba actualizar mis paquetes NuGet existentes a las últimas versiones, recibía este error al iniciar el proyecto en IIS Express.
BadImageFormatException: no se pudo cargar el archivo o ensamblado 'System.Runtime' o una de sus dependencias.
Pude resolver este problema modificando el archivo web.config de mi proyecto.
<dependentAssembly> <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.3.0" /> </dependentAssembly>
La eliminación de las líneas bindingRedirect para ambas dependencias de System.Runtime resolvió este problema en mi proyecto, dejándome con esto en mi web.config.
<dependentAssembly> <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> </dependentAssembly>
El enlace de ensamblaje podría estar equivocado.
ELIMINAR las secciones de enlace de ensamblaje app.config o web.config. Luego ejecute este BindingRedirect en la ventana del Administrador de paquetes:
Get-Project –All | Add-BindingRedirect
Opcional: si actualiza la versión del marco de trabajo de todos los proyectos, deberá volver a instalar todos los paquetes de Nuget para todos los proyectos. Para hacer eso fácilmente, use este script de administradores de paquetes:
Get-Project –All | % { Get-Package -ProjectName $_.ProjectName | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies } }
Luego ejecute el código de redirección vinculante anterior.
Tuve este problema y me tomó un tiempo llegar al fondo. Alguien más puede tener una configuración similar a la mía y, por lo tanto, tener este problema.
Estaba ejecutando una aplicación .NET Framework v4.8 en IIS (Servicio WCF). Funcionaba bien hasta que accidentalmente copié una DLL de .NET Core 3.1 en el directorio bin. IIS obviamente estaba tratando de alojar la DLL de .NET Core y los tiempos de ejecución no existían. Una vez que eliminé el archivo DLL, lo hice con todo lujo de detalles. Espero que esto ayude a alguien más :)