Paso 1: Examinar los archivos de configuración

Actualización: noviembre 2007

El comportamiento de los enlaces del ensamblado puede configurarse en diferentes niveles, que se basan en tres archivos XML:

  • Archivo de configuración de la aplicación

  • Archivo de directivas del editor

  • Archivo de configuración del equipo

Estos archivos obedecen a la misma sintaxis y proporcionan información sobre las redirecciones de enlaces, la ubicación de código y los modos de enlace de ensamblados concretos, por ejemplo. Cada archivo de configuración puede contener un elemento <assemblyBinding> que redirige el proceso de enlace. Entre los elementos secundarios del elemento <assemblyBinding> se incluye el elemento <dependentAssembly>. Entre los elementos secundarios del elemento <dependentAssembly> se incluyen el elemento <assemblyIdentity>, el elemento <bindingRedirect> y el elemento <codeBase>.

Nota:

Los datos de configuración pueden encontrarse en los tres archivos de configuración; no todos los elementos son válidos para todos los archivos de configuración. Por ejemplo, los datos sobre el modo de enlace y la ruta de acceso privada sólo pueden encontrarse en el archivo de configuración de la aplicación. Para obtener una lista completa de la información incluida en cada archivo, vea Configurar aplicaciones.

Archivo de configuración de la aplicación

En primer lugar, Common Language Runtime comprueba el archivo de configuración de la aplicación para ver si hay información que reemplaza la información de la versión almacenada en el manifiesto del ensamblado que ha realizado la llamada. El archivo de configuración de la aplicación puede implementarse con una aplicación, pero no es imprescindible para la ejecución de la aplicación. Normalmente, la recuperación de este archivo es casi instantánea, pero cuando la base de la aplicación se encuentra en un equipo remoto, como un escenario basado en Web de Internet Explorer, el archivo de configuración debe estar descargado.

En el caso de los archivos ejecutables de cliente, el archivo de configuración de la aplicación reside en el mismo directorio que el archivo ejecutable de la aplicación y tiene el mismo nombre base que el archivo ejecutable, con la extensión .config. Por ejemplo, el archivo de configuración para C:\Program Files\Myapp\Myapp.exe es C:\Program Files\Myapp\Myapp.exe.config. En un escenario basado en el explorador, el archivo HTML debe utilizar el elemento <link> para apuntar explícitamente al archivo de configuración.

En el código siguiente se proporciona un ejemplo sencillo de un archivo de configuración de la aplicación. En este ejemplo se agrega un elemento TextWriterTraceListener a la colección Listeners para permitir que se registre información de depuración en un archivo.

<configuration>
   <system.diagnostics>
      <trace useGlobalLock="false" autoflush="true" indentsize="0">
         <listeners>
            <add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
         </listeners>
      </trace>
   </system.diagnostics>
</configuration>

Archivo de directivas del editor

En segundo lugar, el motor en tiempo de ejecución examina el archivo de directivas del editor, si es que existe. Un editor de componentes, como una corrección o actualización distribuye los archivos de directivas del editor en un componente compartido. Estos archivos contienen información sobre compatibilidad, emitida por el editor del componente compartido, que dirige una referencia del ensamblado hacia una nueva versión. A diferencia de los archivos de configuración de la aplicación y del equipo, los archivos de directivas del editor están contenidos en su propio ensamblado, que debe estar instalado en la caché de ensamblados global.

A continuación, se muestra un ejemplo de un archivo de configuración de la directiva de edición:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

            <dependentAssembly>
                <assemblyIdentity name="asm6" publicKeyToken="c0305c36380ba429" /> 
                <bindingRedirect oldVersion="3.0.0.0" newVersion="2.0.0.0"/>  
            </dependentAssembly>

        </assemblyBinding>
    </runtime>
</configuration>

Para crear un ensamblado, puede utilizar la herramienta Herramienta Assembly Linker (Al.exe) con un comando como el siguiente:

Al.exe /link:asm6.exe.config /out:policy.3.0.asm6.dll /keyfile: compatkey.dat /v:3.0.0.0

compatkey.dat es un archivo de clave de nombre seguro. Este comando crea un ensamblado con nombre seguro que se puede situar en la memoria caché de ensamblados global.

Nota:

La directiva del editor afecta a todas las aplicaciones que utilizan componentes compartidos.

El archivo de configuración de directivas del editor reemplaza la información de versión que procede de la aplicación (es decir, del manifiesto del ensamblado o del archivo de configuración de la aplicación). Si en el archivo de configuración de la aplicación no aparecen instrucciones para redirigir la versión especificada en el manifiesto del ensamblado, el archivo de directivas del editor reemplaza la versión especificada en el manifiesto del ensamblado. Sin embargo, si hay una instrucción de redirección en el archivo de configuración de la aplicación, la directiva del editor reemplaza esta versión en lugar de la versión especificada en el manifiesto.

El archivo de directivas del editor se utiliza cuando se actualiza un componente compartido, y todas las aplicaciones que lo utilizan deben recoger la nueva versión del mismo. Los valores del archivo de directivas del editor reemplazan los valores del archivo de configuración de la aplicación, a menos que el archivo de configuración de la aplicación aplique el modo a prueba de errores.

Modo a prueba de errores

Los archivos de directivas del editor suelen instalarse explícitamente como parte de un Service Pack o de una actualización de programa. Si se produce algún problema con el componente compartido actualizado, se pueden pasar por alto los reemplazos realizados en el archivo de directivas del editor utilizando el modo a prueba de errores. El modo a prueba de errores viene determinado por el elemento <publisherPolicy apply="yes|no"/>, que sólo se encuentra en el archivo de configuración de la aplicación. Especifica si la información de configuración de directivas del editor debe quitarse del proceso de enlace.

El modo a prueba de errores puede establecerse para la aplicación en su totalidad o para los ensamblados seleccionados. Es decir, la directiva puede desactivarse para todos los ensamblados que forman la aplicación o puede activarse únicamente para algunos ensamblados pero no para otros. Para aplicar de forma selectiva la directiva del editor a los ensamblados que forman una aplicación, hay que establecer <publisherPolicy apply=no/> y especificar aquellos ensamblados a los que va a afectar la directiva utilizando el elemento <dependentAssembly>. Para aplicar la directiva del editor a todos los ensamblados que forman la aplicación, hay que establecer <publisherPolicy apply=no/> sin elementos de ensamblado dependientes. Para obtener más información sobre configuración, vea Archivos de configuración de la aplicación.

Archivo de configuración del equipo.

En tercer lugar, el motor en tiempo de ejecución examina el archivo de configuración del equipo. Este archivo, denominado Machine.config, reside en el equipo local del subdirectorio Config del directorio raíz donde está instalado el motor en tiempo de ejecución. Los administradores pueden utilizar este archivo para especificar las restricciones de enlace de ensamblado locales para ese equipo. Los valores del archivo de configuración del equipo tienen prioridad sobre el resto de valores de configuración; sin embargo, esto no significa que haya que colocar dentro de este archivo todos los valores de configuración. La versión que viene determinada por el archivo de directivas del administrador es definitiva, y no puede reemplazarse. Los reemplazos especificados en el archivo Machine.config afectan a todas las aplicaciones. Para obtener más información sobre los archivos de configuración, vea Archivos de configuración.

Vea también

Conceptos

Cómo el motor en tiempo de ejecución ubica ensamblados

Escenarios de implementación de aplicaciones de .NET Framework

Paso 2: Comprobar los ensamblados a los que se hizo referencia previamente

Paso 3: Comprobar la Caché de ensamblados global

Paso 4: Ubicar el ensamblado a través de códigos base o sondeos

Referencias parciales a ensamblados