Tengo un archivo EXE que hace referencia a un archivo DLL - para este ejemplo lo llamaré TestDLL.dll.
El EXE está escrito en C# y el archivo DLL está escrito en VB .Net.Ensamblado de enlace y redirección
Creé una versión de ensamblaje de demostración de la DLL, por ejemplo, TestDLL.dll versión 1.0.0.0.
Quiero compilar el EXE con una referencia a la versión de demostración DLL (1.0.0.0). Después: quiero que el EXE use la misma DLL, pero la que pondré en el GAC, de cualquier versión.
Con el fin de hacer eso, me puse la "Copia Local" característica de referencia de la DLL para FALSO.
Mi objetivo es, por ejemplo, que después de la compilación, coloque el TestDLL.dll de GAC con la versión de ensamblaje 2.1.6.0, y el EXE lo encontrará utilizando el ensamblado de redirección de ensamblaje. Para eso, utilicé un archivo de configuración. He utilizado este enlace para crearla:
http://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.71).aspx
Así que mi archivo de configuración se ve más o menos así:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<!-- Assembly versions can be redirected in application, publisher policy, or machine configuration files. -->
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.1.6.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
El problema es que después de hacer todo esto, corro el EXE y cuando se accede a la DLL, Obtengo el famoso error: System.IO.FileNotFoundException: No se pudo cargar el archivo o ensamblado 'TestDLL, Versión = 1.0.0.0, Cultura = neutro, PublicKeyToken = 9d8162944bd6fdc7' o una de sus dependencias. El sistema no puede encontrar el archivo especificado. Nombre del archivo: 'testdll, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 9d8162944bd6fdc7'
Significado, el EXE no puede encontrar el archivo DLL original de hice referencia a. Sé que puedo simplemente "hacer referencia" al GAC o usar el reflejo, pero no quiero, ya que se supone que este EXE solo funciona de esta manera.
¿Alguien sabe cuál es el problema y cómo solucionarlo?
Gracias
¿Ha establecido la propiedad "Versión específica" de la referencia en falso? –
¿Podría publicar el archivo .config? – Xharze
Claro, también configuré la propiedad "Versión específica" de la referencia como falsa. –