Estoy usando Visual Studio 2017 y estoy tratando de crear una biblioteca .Net Standard 1.5 y usarla en un proyecto de prueba .Net 4.6.2 nUnit.
Estoy teniendo el siguiente error...
No se pudo cargar el archivo o ensamblado 'System.Runtime, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.
He probado lo siguiente:
- Haga referencia a la biblioteca Std como referencia del proyecto. Error: me da el error anterior.
- Cree un paquete NuGet para mi biblioteca Std y haga referencia a eso. Error: el tipo es System.String, esperando System.String. Esto se debe a que System.Runtime terminó siendo referenciado por el proyecto y tiene definiciones para todos los tipos estándar.
- Consulte NuGet pkg NetStandard.Library. Error: dame el mismo error que # ("El tipo es System.String, esperando System.String"). NOTA: Antes de hacer esto, borré TODOS los paquetes NuGet del proyecto y luego agregué solo los paquetes nUnit y NetStandard.Library (que instalaron otros 45 paquetes).
¿Es esto un error? ¿Existe una solución alternativa? Se agradece cualquier ayuda.
[MSTest][Discovery] Failed to discover tests from assembly Reason:Could not load file or assembly 'System.Reflection, Version=4.1.1.0 etc
Este problema ocurre cuando hace referencia a un proyecto .NET Standard desde un proyecto .NET 4.x: ninguna de las referencias de paquetes nuget del proyecto .NET Standard se incluye como dependencias.
Para solucionar esto, debe asegurarse de que su archivo .NET 4.x csproj apunte a las herramientas de compilación actuales (al menos 14):
Lo siguiente ya no debería ser necesario, se corrigió alrededor de VS 15.3:
Hubo un error conocido en VS2017, específicamente en NuGet 4.0.
Para solucionar el error, deberá abrir el archivo .csproj para su proyecto .NET 4.xy agregar este fragmento:
NuGet 4.x trae consigo la "referencia del paquete", no más packages.config, pero la antigua canalización 4.x no se actualizó por completo en el momento del lanzamiento de VS2017. El fragmento anterior parece "despertar" el sistema de compilación para incluir correctamente las referencias de paquetes de las dependencias.
fuente
Encontré este problema recientemente y probé muchas cosas mencionadas en este hilo y en otros. Añadí referencia paquete para
"System.Runtime"
mediante el gestor de paquetes Nuget, ha solucionado el redicts de unión enapp.config
, y asegúrese de queapp.config
ypackage.config
tener la misma versión para el montaje. Sin embargo, el problema persistió.Finalmente, quité la
<dependentAssembly>
etiqueta para el montaje y el problema desapareció. Entonces, intente eliminar lo siguiente en suapp.config
.Editar: Después de actualizar .NET Framework a 4.7.2, el problema resurgió. Probé el truco anterior pero no funcionó. Después de perder muchas horas, me di cuenta de que el problema se debía a una
System.Linq
referencia antigua en app.config. Por lo tanto, elimine o actualice todas las referencias de Linq también para deshacerse de este problema.fuente
xunit System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0
después de actualizar mis proyectos a 4.7.2Créame, no estoy bromeando. Elimine todas las dependencias System.Runtime de su app.config y comenzará a funcionar.
fuente
Resolví ese error haciendo referencia a NetStandard.Library y al siguiente archivo app.config en NUnit-Project.
Editar
Si falta algo diferente a
System.Runtime
,System.Reflection
oSystem.Runtime.InteropServices
falta (por ejemploSystem.Linq
), simplemente agregue un nuevodependentAssembly
nodo.Editar 2
En las nuevas versiones de Visual Studio (creo que 2017 15.8) es posible que Studio cree el archivo app.config. Simplemente marque la casilla de verificación Generar automáticamente redirecciones de enlace en Propiedades del proyecto - Aplicación .
Editar 3
Las redirecciones de enlace de generación automática no funcionan bien con las bibliotecas de clases .NET. Agregar las siguientes líneas a los archivos csproj resuelve esto y se generará un archivo .config funcional para Classlibary.
fuente
<dependentAssembly>
nodos para System.Runtime ..Lo arreglé borrando mi
app.config
conentradas.
app.config
se agregó automáticamente (pero no es necesario) durante la refactorizaciónfuente
Este problema ocurre cuando hace referencia a un proyecto .NET Standard desde un proyecto .NET 4.x: ninguna de las referencias de paquetes nuget del proyecto .NET Standard se incluye como dependencias.
Lo resolví
4.3
agregando el paquete System.Runtime y NETStandard.Library y !! importante !! Utilizo la herramienta de refactorización para buscar la versión System.Runtime.dll,4.1.1.1
no lo es4.3
y luego agrego un bindingRedirect en .configfuente
es demasiado tarde, lo sé, sin embargo, no hay una respuesta satisfactoria. Encontré la respuesta en otro sitio web. Solucioné el problema cuando elimino la dependencia de ensamblado System.Runtime. Eliminé esto.
<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>
Atentamente
fuente
Tuve un problema con esto en un proyecto NUnit 2.6.4 dirigido a dotnet framework 4.6.2. Me encontré con ese
System.Runtime FileNotFound
error al intentar usar Humanizer .Arreglé mi error instalando NetStandard.Library en mi proyecto de prueba unitaria.
fuente
Hemos descubierto que
AutoGenerateBindingRedirects
podría estar causando este problema.Observado: el mismo objetivo del proyecto
net45
ynetstandard1.5
se construyó con éxito en una máquina y no se pudo construir en la otra. Las máquinas tenían diferentes versiones del framework instaladas (4.6.1 - éxito y 4.7.1 - fracaso). Después de actualizar el marco en la primera máquina a 4.7.1, la compilación también falló.Auto binding redirects
es una característica de.net 4.5.1
. Siempre que nuget detecte que el proyecto hace referencia transitiva a diferentes versiones del mismo ensamblado, generará automáticamente el archivo de configuración en el directorio de salida y redirigirá todas las versiones a la versión requerida más alta.En nuestro caso, se volvieron a unir todas las versiones de
System.Runtime
toVersion=4.1.0.0
..net 4.7.1
se envía con una4.3.0.0
versión de runtime. Por lo tanto, el enlace de redireccionamiento se asignaba a una versión que no estaba disponible en una versión contemporánea del marco.El problema se solucionó al deshabilitar las redirecciones de enlace automático para el objetivo 4.5 y dejarlo solo para .net core.
fuente
Este problema tiene muchas causas ... en mi caso, el problema fue que estaba en mi web.config una etiqueta agregando el ensamblado System.Runtime:
pero un paquete también agregó el mismo ensamblado como dependencia con otra versión:
eliminar la etiqueta "agregar ensamblaje" de mi web.config resolvió el problema.
fuente
Parece que el problema se produce cuando hay un conflicto de versiones entre packages.config y app.config. En app.config tiene redireccionamientos de enlace de ensamblaje generados automáticamente por algo llamado "AutoGenerateBindingRedirects". Cuando esté habilitado cada vez que descargue el paquete nuget, además de hacer una nueva entrada en packages.config, agregará esta información de redirección de enlace a app.config, cuál es el propósito de esto se explica aquí: Redireccionamiento de enlace de ensamblado: ¿Cómo y por qué?
Allí puede leer lo que escribió el usuario @Evk:
Entonces, CORRECCIÓN RÁPIDA: elimine todas las entradas en app.config.
En mi caso, con solo hacer que el programa comenzó a funcionar, pero probablemente funcionará solo si no tiene ningún conflicto de versiones del mismo ensamblado en tiempo de ejecución.
Si tiene tal conflicto, debe corregir estos números de versión en app.config para que coincidan con las versiones realmente utilizadas de los ensamblajes, pero el proceso manual es doloroso, por lo que sugiero generarlos automáticamente nuevamente abriendo la Consola del Administrador de paquetes y realizar la reinstalación de paquetes escribiendo
Update-Package -reinstall
fuente
Terminé en esta situación varias veces con mi sitio web .NET 4.6.1. Creé el problema cada vez que agregué una referencia a un proyecto de .NET Core separado. Al construir, Visual Studio me alertó correctamente de que tales referencias entre marcos no son válidas y eliminé rápidamente la referencia del proyecto. El proyecto se construyó bien después de eso, pero el error System.Runtime apareció al acceder al sitio web y se negó a desaparecer.
La solución cada vez fue poco convincente pero efectiva: eliminé el directorio del proyecto y lo volví a descargar desde el control de código fuente. Aunque no hubo diferencia entre el antes y el después, pude construir el proyecto y acceder a la página sin quejas.
fuente
Me encontré con esto hace un momento en un proyecto de prueba unitaria después de agregar MsTest V2 a través de Nuget. Cambiar el nombre de app.config (eliminarlo de manera tan efectiva) funcionó para mí.
Habiendo leído todas las publicaciones anteriores, todavía no estoy seguro de por qué, ¡lo siento!
fuente
Solucioné el problema quitando el paquete Nuget
System.Runtime
y luego reinstalándolofuente
En app.config o web.config agregue
fuente
Tuve un proyecto con el mismo problema, lo resolví cambiando la versión de dotnet core de 2.2 a 2.0, si su problema ha permanecido, pruebe esta solución
fuente
Antes de ejecutar las pruebas unitarias, simplemente elimine las etiquetas de tiempo de ejecución del archivo app.config. El problema se resolverá.
fuente
Tuve un problema similar en VS 2017 15.45: descubrí cuando verifiqué que, aunque el proyecto se compiló y ejecutó, surgió una excepción system.IO.FileNotFoundException con respecto a System.Runtime cuando intenté acceder a los objetos de TPL Dataflow.
Cuando verifiqué los proyectos en la solución, a uno de ellos (el superior) le faltaba el paquete System.Runtime utilizado por los proyectos subyacentes. Una vez que lo instalé desde Nuget, todo funcionó correctamente.
fuente
Probé todas las soluciones aquí, pero fue en vano. Finalmente, lo resolví abriendo el nuevo archivo csproj y agregué manualmente la siguiente sección:
fuente
Estoy usando ASP.Net CORE 2.1 y recibí este error cuando ejecuté seleccionando un .csproj de una lista de aproximadamente 40 en un gran repositorio. Cuando abrí el archivo csproj individualmente, se resolvió el error. Algo con la forma en que se inició el programa fue diferente cuando se abrió el csproj.
fuente
Resuelvo este problema cambiando de .NET 4.7.2 => .NET 4.5.2 y luego vuelvo a 472. Entonces, en algunos casos, este error ocurre porque el administrador de paquetes no puede resolver las dependencias
fuente
Si está funcionando anteriormente, entonces debería haber un cambio en App.config. Deshacer App.config funcionó para mí.
fuente
También pasé por este error y compartí cómo me deshice de él.
En mi caso, la siguiente línea existía en web.config del proyecto webapi pero no había una referencia de paquete en el archivo package.config.
Código en Web.config en Webapi Project
Código que agregué en el archivo packages.config en el proyecto web api antes de cerrar el elemento.
Otra solución funcionó en mi caso:
Otro corto seguro que puede funcionar en caso de que haya copiado el proyecto a otro sistema informático que puede tener pequeñas versiones de paquetes diferentes, puede intentar cambiar la versión de ensamblaje a la versión dada por error en el sitio web / webapi cuando lo ejecuta. Como en este caso, como se indica en la pregunta, la versión necesaria es '4.1.0.0', así que simplemente intente cambiar la versión actual en web.config a la versión que se muestra en el error como se muestra a continuación
Error:
fuente
Tuve este error al crear una función de Azure (con un disparador de cola, en caso de que haga una diferencia)
El problema en este caso fue porque
AzureFunctionsVersion
se configuró en v2 en lugar de v3. Para actualizarlo a través de VS2019, descargue el proyecto y luego edite el archivo csproj. Dentro delPropertyGroup
nodo, agregue / edite lo siguiente:fuente