Compartir a través de


Cómo: Hacer referencia a un ensamblado con nombre seguro

El proceso para hacer referencia a los tipos o recursos de un ensamblado de nombre seguro es, por lo general, transparente. La referencia se puede hacer en tiempo de compilación o en tiempo de ejecución para permitir el enlace.

Una referencia en tiempo de compilación se produce cuando se indica al compilador que el ensamblado haga referencia de forma explícita a otro ensamblado. Cuando se usa la referencia en tiempo de compilación, el compilador obtiene automáticamente la clave pública del ensamblado de nombre seguro de destino y la ubica en la referencia al ensamblado del ensamblado que se está compilando.

NotaNota

Un ensamblado con nombre seguro sólo puede utilizar tipos de otros ensamblados con nombre seguro.De lo contrario, se pondría en peligro la seguridad del ensamblado con nombre seguro.

Para hacer una referencia en tiempo de compilación a un ensamblado de nombre seguro

  • En el símbolo del sistema, escriba el siguiente comando:

    <comando del compilador> /reference:<nombre de ensamblado>

    En este comando, comando del compilador es el comando del compilador para el lenguaje que está usando y nombre de ensamblado es el nombre del ensamblado con nombre seguro al que se hace referencia. También se pueden usar otras opciones de compilador, por ejemplo la opción /t:library para crear un ensamblado de biblioteca.

En el ejemplo siguiente se crea un ensamblado denominado myAssembly.dll que hace referencia a un ensamblado de nombre seguro denominado myLibAssembly.dll desde un módulo de código denominado myAssembly.cs.

csc /t:library myAssembly.cs /reference:myLibAssembly.dll

Para hacer una referencia en tiempo de ejecución a un ensamblado de nombre seguro

  • Cuando se hace una referencia en tiempo de ejecución a un ensamblado con nombre seguro (por ejemplo, usando el método Assembly.Load o Assembly.GetType), es necesario usar el nombre para mostrar del ensamblado con nombre seguro al que se hace referencia. La sintaxis de un nombre para mostrar es:

    <nombre de ensamblado>, <número de versión>, <referencia cultural>, <token de clave pública>

    Por ejemplo:

    myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33 
    

    En este ejemplo, PublicKeyToken es el formato hexadecimal del token de clave pública. Si no hay ningún valor de referencia cultural, use Culture=neutral.

En el ejemplo de código siguiente se muestra cómo se usa esta información con el método Assembly.Load.

Dim myDll As Assembly = _
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")
Assembly myDll =
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly^ myDll =
    Assembly::Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");

Se puede imprimir el formato hexadecimal de la clave pública y del token de clave pública de un ensamblado concreto usando el siguiente comando de Nombre seguro (Sn.exe):

sn -Tp <assembly>

Si se tiene un archivo de clave pública, se puede utilizar el siguiente comando (advierta la diferencia entre mayúsculas y minúsculas en la opción de la línea de comandos):

sn -tp <assembly>

Vea también

Conceptos

Crear y utilizar ensamblados con nombre seguro