2011-02-02 14 views
13

que estoy recibiendo este error cuando ejecuto mi aplicación (no en tiempo de compilación):¿Cómo encontrar lo que depende de una versión específica de una dependencia específica?

¿No podía cargar el archivo o ensamblado 'Castle.Windsor, Version = 2.1.0.0, Culture = neutral , PublicKeyToken = 407dd0808d44fbdc 'o una de sus dependencias. La definición del manifiesto del conjunto ubicado no coincide con la referencia del ensamblado. (Excepción de HRESULT: 0x80131040)

Mi solución tiene muchos proyectos, utilizando las referencias del proyecto, cuando sea posible, pero algunos de esos proyectos tienen montaje referencias a las dependencias externas.

¿Cómo puedo averiguar fácilmente qué proyecto está buscando esta versión específica de Castle.Windsor.dll? No tengo esa versión y estoy tratando de usar 2.5.2 (último), así que quiero encontrar el culpable y actualizarlo para usar el último.

Muchas gracias de antemano.

ACTUALIZACIÓN
He añadido un registro de Fusión desinfectada a continuación. Parece que me está diciendo que Caliburn.Castle requiere Castle.Windsor, Version=2.1.0.0 (lo que sería un error ya que estoy usando 2.5), pero en su lugar Fusion Assembly indaga como encontrar realmente Castle.Windsor, Version=2.5.1.0.

¿Lo he entendido bien?

=== Pre-bind state information === 
LOG: User = Barney\neil 
LOG: DisplayName = Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc 
(Fully-specified) 
LOG: Appbase = file:///[Debug folder of my exe] 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = [Filename of my exe] 
Calling assembly : Caliburn.Castle, Version=1.1.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: [Config file for my exe] 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc 
LOG: GAC Lookup was unsuccessful. 
LOG: Attempting download of new URL file:///[Debug folder of my exe]/Castle.Windsor.DLL. 
LOG: Assembly download was successful. Attempting setup of file: [Debug folder of my exe]\Castle.Windsor.dll 
LOG: Entering run-from-source setup phase. 
LOG: Assembly Name is: Castle.Windsor, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc 
WRN: Comparing the assembly name resulted in the mismatch: Minor Version 
ERR: The assembly reference did not match the assembly definition found. 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 
+0

Tiene razón, se encuentra una versión más reciente de Castle.Windsor, pero Caliburn.Castle quiere una versión anterior. – Pedro

+0

@Pedro Sí, desde entonces he usado Reflector para mirar Caliburn.Castle.dll, y encontré que requiere 2.1 de Castle.Windsor.dll (a pesar de que reconstruyo desde la fuente). Voy a intentar construir Caliburn.Castle.dll con un Castle actualizado y volver a intentarlo. :) –

Respuesta

1

¿Ha mirado el visor de registro de encuadernación ensamblado (Fuslogvw.exe)?

Esto debería proporcionar toda la información necesaria.

Ver en MSDN.

1

FusionLog tool es la mejor herramienta para cosas como esa, pero a veces solo indicará su código. Intente aumentar la verbosidad para MSBuild y podrá rastrearlo hasta donde está la compilación cuando falla.

Cuestiones relacionadas