2011-12-08 59 views
10

He buscado en Google esto y no he podido encontrar la solución al problema.No se pudo cargar el archivo o ensamblado 'Microsoft.Practices.EnterpriseLibrary.Common' o una de sus dependencias

Mi sitio web hace referencia a DAL (dll personalizado) que hace referencia a Enterprise Library Data Access Components.

He añadido la Biblioteca de la Empresa NuGet Package Manager y cuando intento de construir el sitio web de este error de compilación aparece:

Error 44 No se pudo cargar el archivo o ensamblado 'Microsoft.Practices.EnterpriseLibrary.Common' o una de sus dependencias. definición de manifiesto del ensamblado ubicado no coincide con la referencia de ensamblado

He intentado fijar la Copy Local = True en el DAL para la Enterprise Library dlls y los archivos DLL se transfiere al directorio bin de la página web, junto con DAL dll, pero aún así los estallidos de error arriba.

Puede alguien me guía en este ....

+0

Asegúrese de que todos los dlls de EL estén en la carpeta, incluido el .Common. –

+1

También he mencionado anteriormente, que los dlls ya están copiados en la carpeta de bin del sitio web –

+0

¿Es esta issuse cuando el proyecto se establece en el perfil de cliente de .net framework intenta cambiarlo a full dot net? Sory si es incorrecta, responde – adopilot

Respuesta

8

El problema es que la DLL que está utilizando y la que se hace referencia en su proyecto son diferentes. No estoy seguro de cuál es la diferencia en el manifiesto, pero podría ser una versión y/o clave pública.

usted tiene un par de cosas para probar:

  1. Abra las propiedades de la referencia de archivo DLL en su proyecto y configurar la versión específico en false.

  2. Elimine la referencia, elimine la DLL de la carpeta bin y vuelva a agregar la referencia.

  3. También podría tener una versión diferente/incorrecta en su GAC. Para asegurarse de que siempre utiliza una versión específica conocida, cree una carpeta de ensamblados relativa al directorio de su proyecto, copie el dll en ese directorio y agregue una referencia a la DLL en el directorio de ensamblajes en lugar de uno en GAC o en otro lugar. en tu máquina. Esto asegurará que solo se utilizará la versión específica que haya orientado para la aplicación en lugar de cualquier versión que se actualice en su equipo más adelante.

+1

Al configurar 'Version Specific = true' resolvió el problema. Creo que eso se debió a las múltiples versiones de 'EnterpriseLibrary' instaladas en mi sistema y la creación de otro directorio y colocar los dlls allí podría tener el mismo efecto ... –

+0

Para mí (2) funcionó. Eliminé las referencias que daban error y las volví a listar –

4

NuGet CommonServiceLocator

Install-Package CommonServiceLocator 
2

Esta DLL es probable que sea en el GAC en las máquinas de desarrolladores como parte de una instalación de la aplicación de Windows (mis mejores conjeturas son Visual Studio o SSMS). Es por eso que es probable que recibamos advertencias o errores en la máquina de compilación, que hacemos todo lo posible para mantener el GAC tan limpio como el servidor de producción.

Para descargar el archivo manualmente, se puede ir a https://servicelocation.codeplex.com/

Para fijar los avisos y errores de construcción, sólo hay que ejecutar un comando para instalar el NuGet CommonServiceLocation package. El paquete contiene solo este archivo dll. Microsoft ha lanzado solo 1 versión (1.0.0.0) de este archivo desde 2008. El archivo es totalmente compatible con todas las versiones .NET y todas las versiones de Unity.

0

Gracias por esta información

Tengo el mismo problema, he actualizado el Marco de 2,0 a 4,0, he intentado todo lo que usted ha mencionado, pero la solución era para establecer los valores publicKeyToken para cada uno de la referencia EnterpriseLibrary en el archivo Web.Config

0

¡El mismo problema! Acabo de limpiar la compilación y reconstruir el proyecto. Entonces, todas las cosas viejas se han ido y las versiones correctas han sido reemplazadas. Resuelto

0

que era capaz de resolver este problema mediante la eliminación de TODAS las referencias de registro en el archivo app.config ::

, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null 

es decir:

<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging, 
Version=6.0.0.0, Culture=neutral, PublicKeyToken=null" 
requirePermission="true" /> 

se convierte en:

 <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging" 
requirePermission="true" /> 

Esto no es ideal, pero funciona ...

Enterprise Library Configuration Tool, restablece los valores, por lo que debe vigilarlo. Sé que hay una forma de decirle al archivo de configuración que acepte estas configuraciones incorrectas, pero no estoy seguro de cómo.

Cuestiones relacionadas