índice de Visual Studio 2005 y .NET Framework 2.0 Cómo... en .NET

Usar una versión distinta de un ensamblado DLL usado para compilar un ejecutable


Aquí te explico cómo puedes usar un ensamblado DLL (firmado con nombre seguro) que tiene una versión diferente al usado para compilar un ejecutable (EXE), sin necesidad de recompilar la aplicación. Para ello crearemos un fichero manifiesto (.config) para indicar la versión esperada y la que usaremos.
Lo aquí explicado es válido para cualquier versión de .NET Framework.

 
Publicado el 20/May/2006
Actualizado el 20/May/2006
Autor: Guillermo 'guille' Som

 

 

Introducción:

Como es tarde, simplemente te mostraré el contenido del fichero .config que habría que crear para indicar que usaremos una versión diferente de una DLL usada para generar un EXE que se compiló con la versión 1.0.0.0 de la DLL.
La DLL se firmó con nombre seguro (strong name), ya que si no se firma con nombre seguro se puede usar cualquier versión, siempre y cuando siga teniendo los elementos usados en el ejecutable.

Nota:
Lo aquí explicado es válido para cualquier versión de .NET Framework

 

El contenido del manifiesto, el cual debe llamarse como la aplicación y añadiendo al final .config.
Por ejemplo: appWindows_StrongName.exe.config

 

<?xml version="1.0"?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="ClassLibrary_StrongName" publicKeyToken="13f3f68e45f3942e" />
                <publisherPolicy apply="yes" />
                <bindingRedirect oldVersion="1.0.0.0" newVersion="1.1.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

 

En assemblyIdentity hay que indicar la DLL que usa el ejecutable, y en publicKeyToken indicamos la clave pública de nuestro fichero de nombre seguro.

En oldVersion indicaremos la versión con la que se compiló el ejecutable y en newVersion la versión actual de la DLL que tendrá que estar en el mismo directorio del ejecutable o en el GAC (Global Assembly Cache).

Nota:
Si la DLL con la versión indicada en newVersion no existe (o no está accesible) se producirá un error indicando que no se ha encontrado esa versión de la DLL.

 

Otro día con más tiempo pondré cómo crear un ejemplo de prueba (con Visual Basic 2005 y C# 2005) y los pasos que habría que dar para hacer la prueba.

 

Nos vemos.
Guillermo

 


Ir al índice principal de el Guille