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.
Nota |
---|
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>