2010-11-24 23 views
7

Mi proyecto hace referencia a Library1.dll y Library2.dll. Library2.dll tiene una dependencia en Library1.dll, pero se compiló para hacer referencia a ella por un nombre diferente, Library1.Net40.dll.¿Resolviendo una referencia de ensamblado .NET a un nombre diferente?

¿Hay una buena manera de decirle a mi solicitud para redirigir todas las referencias de Library1.Net40.dll para resolver a Library1.dll? Tal vez algo similar a la forma en que puede redirigir las versiones usando un <bindingRedirect>?

Tengo una solución que maneja el evento AppDomain.AssemblyResolve, pero es un poco complicado y espero que haya una mejor manera de hacerlo

Editar: Para tener una referencia de nadie, así es como terminé resolverlo mediante el AppDomain.AssemblyResolve event para redirigir a un montaje diferente.

Respuesta

4

¿Ha intentado jugar con el <codeBase> element?

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Library1.Net40" 
           publicKeyToken="..." 
           culture="neutral" /> 
      <codeBase version="2.0.0.0" 
         href="Library1.dll"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

(no probado; ni idea de si funciona.)

CF: estoy poniendo esta actualización aquí, porque es un poco largo para los comentarios :)

buena idea, gracias. Obtuve el redireccionamiento funcionando pero se queja porque los nombres son diferentes, aquí está el registro:

LOG: Attempting download of new URL file:///C:/Project/bin/Library1.dll. 
LOG: Assembly download was successful. Attempting setup of file: C:\Project\bin\Library1.dll 
LOG: Entering download cache setup phase. 
LOG: Assembly Name is: Library1, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed 
WRN: Comparing the assembly name resulted in the mismatch: NAME 
ERR: The assembly reference did not match the assembly definition found. 
ERR: Setup failed with hr = 0x80131040. 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
+0

Actualización agregada en línea –

Cuestiones relacionadas