No se pudo cargar el archivo o ensamblado o una de sus dependencias

Estoy teniendo otro de estos problemas “No se pudo cargar el archivo o el ensamblaje o uno de sus dependencias”.

Información adicional: No se pudo cargar el archivo o ensamblado ‘Microsoft.Practices.Unity, Version = 1.2.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’ o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)

No tengo idea de qué está causando esto o cómo podría depurarlo para encontrar la causa.

He hecho una búsqueda en mis catálogos de soluciones .csproj, y donde tengo Unity tengo:

Referencia Incluir = “Microsoft.Practices.Unity, Version = 2.0.414.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL”

No puedo encontrar ninguna referencia en ningún lado que vaya en contra de 1.2.0.0 en ninguno de mis proyectos.

¿Alguna idea de cómo debería resolver esto?

También agradecería consejos sobre cómo depurar problemas como este en general.

  1. Compruebe si está haciendo referencia a un conjunto que a su vez hace referencia a una versión anterior de unity. Por ejemplo, digamos que tiene un ensamblado llamado ServiceLocator.dll que necesita una versión anterior del ensamblado de Unity, ahora cuando hace referencia al ServiceLocator debe proporcionarle la versión anterior de Unity, y eso crea el problema.

  2. Puede ser la carpeta de salida donde todos los proyectos crean sus ensamblajes, tiene una versión anterior de unity.

Puede usar FusLogVw para averiguar quién carga los ensamblajes antiguos, solo defina una ruta para el registro y ejecute su solución, luego verifique (en FusLogvw) la primera línea donde se carga el ensamblaje de Unity, haga doble clic y vea las llamadas asamblea, y aquí tienes.

Abra el Administrador de IIS

Seleccionar grupos de aplicaciones

luego selecciona el grupo que estás usando

ve a la configuración avanzada (en el lado derecho)

Cambie el indicador de Habilitar la aplicación de 32 bits falso a verdadero.

Para mí, ninguna de las otras soluciones funcionó (incluida la estrategia de limpieza / reconstrucción). Encontré otra solución alternativa que es cerrar y volver a abrir Visual Studio .

Supongo que esto obliga a Visual Studio a volver a cargar la solución y todos los proyectos, volviendo a verificar las dependencias en el proceso.

Intenta limpiar las carpetas de depuración y liberación en tu solución. Luego remueva y agregue la unidad nuevamente.

Lo siguiente funcionó para mí.

  • Eliminar archivos temporales C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Archivos temporales ASP.NET
  • Cerrar VSTS y abrir nuevamente
  • Elimine y agregue las mismas DLL (Nota: agrega las mismas versiones que coinciden)

Microsoft Enterprise Library (referenciado por .NetTiers) era nuestro problema, que a su vez hacía referencia a una versión anterior de Unity. Para resolver el problema, utilizamos la siguiente redirección de enlace en web.config:

               

Alternativamente, es posible que desee actualizar la biblioteca de la empresa a la última versión.

¡Al 99%, el problema de la carga de archivos o ensamblajes o uno de sus dependencias es causado por dependencias! Te sugiero que sigas estos pasos:

  1. Descargue Dependency Walker desde http://www.dependencywalker.com/

  2. Inicie Dependency Walker y abra el dll (en mi caso NativeInterfaces.dll )

  3. Puede ver uno o más dll con el error en rojo Error al abrir el archivo …

  4. Significa que este dll falta en tu sistema; en mi caso, el nombre dll es MSVCR71.DLL

  5. Puede descargar las descargas dll de google y copiarlas en el camino correcto (en mi caso c:\windows\system32 )

  6. En este punto, debe registrar el nuevo dll en el GAC (Global Assembly Cache): abra un terminal de DOS y escriba:

     cd \Windows\System32 regsvr32 /i msvcr71.dll 
  7. ¡Reinicia tu aplicación!

A pesar de que la pregunta original fue publicada hace 5 años, el problema aún persiste y es bastante molesto.

La solución general es un análisis exhaustivo de todas las asambleas a las que se hace referencia para comprender qué está pasando mal. Para facilitar esta tarea, creé una herramienta (una extensión de Visual Studio) que permite seleccionar un conjunto .Net (archivo .ddl o .exe) y obtener un gráfico de todos los ensamblados a los que se hace referencia con referencias falsas conflictivas o perdidas.

La herramienta está disponible en Visual Studio Gallery: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734

Ejemplo de salida: enter image description here

Compruebe el archivo Web.config / App.config en su proyecto. Vea si los números de versión son correctos.

  

Esto funcionó para mí.

Tuve un problema similar. ** La respuesta de Juntos es correcta ** ¡pero debes tener en cuenta un consejo importante!

Para la unidad 2.1.505.2 se especifican diferentes AssemblyVersion y AssemblyFileVersion :

enter image description here

AssemblyFileVersion es utilizado por nuget pero CLR no se preocupa por eso. ¡CLR solo usará AssemblyVersion !

Por lo tanto, los redireccionamientos deben aplicarse a una versión especificada en AssemblyVersion: 2.1.505.0

      

Ver también: ¿Cuáles son las diferencias entre AssemblyVersion, AssemblyFileVersion y AssemblyInformationalVersion?

captura de pantalla En el explorador de soluciones, haga clic derecho en el proyecto (no en la solución), en la pestaña de comstackción elija el objective de la plataforma: “Cualquier CPU”.

  • Ir a: Solución -> Paquete
  • Haga clic en la pestaña Avanzado (Buscar debajo de la página)
  • Agregue su dll a ensamblajes adicionales (de esta manera podemos agregar dlls externos en sharepoint).

También obtuve este terrible error y encontré una solución para esto …

  1. Haga clic derecho en el nombre de la solución
  2. Haga clic en Clean Solution
  3. Reiniciar Visual Studio
  4. Ir al proyecto Propiedades >> Construir
  5. Cambiar la configuración para liberar
  6. Comience a depurar (F5)

1), 2)

Haga clic derecho en el nombre de la solución

4), 5)

Cambiar la configuración para liberar

Espero que esto te ayude también.

No estoy seguro si esto podría ayudar.

Compruebe que coincidan el nombre del ensamblado y el espacio de nombres predeterminado en los Properies de sus ensambles. Esto resolvió mi problema que produjo el mismo error.

Gracias Riddhi M. Siguientes funcionó para mí.

Eliminar archivos temporales C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Archivos temporales ASP.NET Cerrar VSTS y abrir nuevamente Eliminar y agregar los mismos archivos DLL (Nota: agrega las mismas versiones que coinciden)

En mi caso, en la carpeta bin estaba un dll no de referencia llamado Unity.MVC3, intenté buscar cualquier referencia a esto en Visual Studio sin éxito, por lo que mi solución fue tan fácil como eliminar ese dll de la carpeta bin.

Dice que tiene muchos proyectos en su solución … bueno, comience con uno cerca de la parte superior del orden de comstackción. Consígalo para construir y una vez que lo resuelva puede aplicar la misma solución al rest de ellos.

Honestamente, probablemente solo necesites actualizar tu referencia. Parece que actualizaste tu versión y no actualizaste las referencias, o es un problema de ruta relativa si mantienes tu solución en control de fuente. Simplemente verifique sus suposiciones y vuelva a agregar la referencia.

Este problema me ocurrió cuando una de mis bibliotecas dependientes comstackba una DLL con “Cualquier CPU” cuando la biblioteca principal esperaba una comstackción de “x64”.

Tienes que eliminar tu archivo appname.dll de tu carpeta de salida. Limpieza de las carpetas de depuración y liberación. Reconstruya y copie en la carpeta de salida el archivo dll regenerado.

“Establecí como proyecto de inicio” la biblioteca / proyecto descargado / no encontrado.

Luego lo desplegó.

¡Funcionó!

Creo que no pudo encontrar el .dll porque al principio no estaba en la asamblea.

Otra posible causa: asegúrese de no haber otorgado accidentalmente a ambos proyectos el mismo nombre de ensamblaje en las propiedades del proyecto.

Lo siguiente funcionó para mí.

  • Eliminar archivos temporales C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Archivos temporales ASP.NET
    • a continuación, haga clic derecho en Archivos Asp.net temporales> propiedades> seguridad y otorgue acceso de control total a IIS y a todos los usuarios que ejecutan mi proyecto

Mi solución para .NET 4.0, utilizando Enterprise Library 5, era agregar una referencia a:

Microsoft.Practices.Unity.Interception.dll

Cuidado con las referencias conflictivas. Incluso después de una limpieza y reconstrucción, las referencias conflictivas aún causarán un problema. Mi problema fue entre AForge y Accord. Quité ambas referencias y volví a agregar las referencias para volver a elegir la referencia en particular (en particular en mi caso, solo en Accord).

Para mí, reconstruir el juego de la unidad sin Unity C # Proects Checkmark funcionó.

En mi caso, ninguna de las respuestas propuestas funcionó.

Esto es lo que funcionó para mí:

  1. Eliminar la referencia
  2. Cambiar el nombre de la DLL
  3. Importar la referencia nuevamente

El segundo paso fue importante aparentemente ya que no funcionó sin él.

Intente comprobar si la propiedad “Copiar a Local” para la referencia se establece en verdadero y la versión específica se establece en verdadero. Esto es relevante para las aplicaciones en Visual Studio.

Tuve esto hoy, y en mi caso el problema fue muy extraño:

     0. 

Tenga en cuenta los caracteres extraviados al final del XML: de alguna manera, se movieron desde el número de versión hasta el final de este bloque de XML.

      

Cambiado a lo de arriba y ¡voila! Todo funcionó de nuevo.

Si recibe este mensaje de error abriendo una aplicación en Windows XP, significa que primero ha instalado esa aplicación porque no funciona sin net framework 4 y service pack 3. instalaste ambas y de nuevo recibes este error, por lo que debes volver a instalar esa aplicación, pero primero desinstala desde agregar y quitar

si esto no funciona, por favor no abuse de mí. también soy un junior

Bueno, esto puede sonar muy estúpido, pero aquí está cómo resolví el problema después de probar cualquier otra solución y pasar una noche en esta estúpida cosa.

Obtuve el mismo error con algunas DLL que faltan en la Carpeta de Bin. Intenté eliminar, volver a subir todo desde Team Foundation Server pero no funcionó. Conseguí una copia de la carpeta Bin de mi máquina de oficina y la reemplacé. Tampoco funcionó. Por fin, manualmente FTPed servidor, obtuve la copia de DLL que se mostraba como faltante, y luego comenzó a aparecer que falta el siguiente archivo en la secuencia de la lista de archivos.

Así que me puse en el servidor Tengo toda la Carpeta Bin, reemplazó manualmente cada archivo uno por uno. (No Ctrl + All y replace … Lo intenté: no funcionó.) Y de alguna manera funcionó …