Cómo: Hacer referencia a un ensamblado con nombre seguro
Actualización: noviembre 2007
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 del ensamblado>
En este comando, comando del compilador es el comando del compilador para el lenguaje utilizado y nombre del ensamblado es el nombre del ensamblado de 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 mediante los métodos Assembly.Load o Assembly.GetType, es necesario utilizar el nombre para mostrar del ensamblado con nombre seguro al que se hace referencia. La sintaxis de un nombre para mostrar es:
<nombre del ensamblado>, <número de versión>, <referencia cultural>, <símbolo de clave pública>
Por ejemplo:
myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33
En este ejemplo, PublicKeyToken es la forma hexadecimal del símbolo de la clave pública. Si no hay ningún valor de referencia cultural, utilice Culture=neutral.
En el ejemplo de código siguiente se muestra cómo se utiliza esta información con el método Assembly.Load.
Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1")
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 símbolo de la clave pública de un ensamblado concreto mediante el siguiente comando de la herramienta Nombre seguro (Sn.exe):
sn -Tp <ensamblado>
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 <ensamblado>