Compartir a través de


Cómo: Crear ensamblados de confianza firmados

Actualización: noviembre 2007

En este ejemplo se muestra cómo usar los ensamblados de confianza con ensamblados que tienen nombres seguros. Ambos ensamblados deben tener nombres seguros. Aunque los dos ensamblados de este ejemplo utilizan las mismas claves, se pueden usar claves diferentes para dos ensamblados.

Para crear un ensamblado firmado y un ensamblado de confianza en Visual Studio

  1. Abra un símbolo del sistema de Visual Studio.

  2. Utilice la secuencia de comandos siguiente con la herramienta de nombre seguro para generar un archivo de claves y mostrar su clave pública. Para obtener más información, vea Herramienta de nombre seguro (Sn.exe).

    1. Genere una clave de nombre seguro para este ejemplo y almacénela en el archivo FriendAssemblies.snk:

      sn -k FriendAssemblies.snk

    2. Extraiga la clave pública de FriendAssemblies.snk y colóquela en FriendAssemblies.publickey:

      sn -p FriendAssemblies.snk FriendAssemblies.publickey

    3. Muestre la clave pública almacenada en el archivo FriendAssemblies.publickey:

      sn -tp FriendAssemblies.publickey

  3. Cree un nuevo archivo de Visual Basic llamado FriendAssembliesSnA.vb que contenga el código siguiente. El código utiliza el atributo InternalsVisibleToAttribute para declarar FriendAssembliesSnB como ensamblado de confianza.

    La herramienta de nombre seguro genera una nueva clave pública cada vez que se ejecuta. Por consiguiente, debe reemplazar la clave pública del código siguiente por la clave pública que acaba de generar, como se muestra en el ejemplo siguiente.

    ' FriendAssembliesSnA.vb.
    ' Compile with: 
    ' Vbc.exe /target:library /keyfile:FriendAssemblies.snk FriendAssembliesSnA.vb
    Imports System.Runtime.CompilerServices
    
    ' Replace the value of PublicKey with your public key.
    <Assembly: InternalsVisibleTo("FriendAssembliesSnB, PublicKey=" & _
    "002400000480000094000000060200000024000052534131000400000100010065364c" & _
    "640a04ab7c4f06313779601ffb5d1284b381393ad2ede92b4bf91384bbfdb0f9b7ecf6" & _
    "a387b7f9348fc59366987429db41ee061c1a808eb408c4ebd9aebd0d4b19b721121a0d" & _
    "c66949f12878c4e2add5489f6208f49e67ddee4d0bb72fa6860a775b7e2232209efe8b" & _
    "4566ea8bd9319a4b8feb3ef4911e7a7d2e957a92")> 
    
    ' Friend class.
    Friend Class FriendAssembliesSnA
        Public Sub Test()
            MsgBox("Friend Assemblies Sample")
        End Sub
    End Class
    
  4. Compile y firme FriendAssembliesSnA.vb:

    Vbc.exe /target:library /keyfile:FriendAssemblies.snk FriendAssembliesSnA.vb

  5. Cree un nuevo archivo de Visual Basic llamado FriendAssembliesSnB.vb que contenga el código siguiente. Dado que en FriendAssembliesSnA se especificó FriendAssembliesSnB como ensamblado de confianza, el código en FriendAssembliesSnB puede tener acceso a los miembros y tipos Friend de FriendAssembliesSnA.

    ' FriendAssembliesSnB.vb.
    ' Compile with: 
    ' Vbc.exe /keyfile:FriendAssemblies.snk /r:FriendAssembliesSnA.dll FriendAssembliesSnB.vb
    Module FriendAssembliesSnB
        Public Sub Main()
            ' Access a Friend class.
            Dim friendTest As New FriendAssembliesSnA
            friendTest.Test()
        End Sub
    End Module
    
  6. Compile y firme FriendAssembliesSnB.vb:

    Vbc.exe /keyfile:FriendAssemblies.snk /r:FriendAssembliesSnA.dll FriendAssembliesSnB.vb

    El nombre del ensamblado generado por el compilador debe coincidir con el nombre del ensamblado de confianza pasado al atributo InternalsVisibleToAttribute. Puede establecer explícitamente el ensamblado utilizando la opción del compilador /out. Para obtener más información, vea /out (Visual Basic).

  7. Ejecute FriendAssembliesSnB.exe.

    El programa muestra un cuadro de mensaje que contiene la cadena "Friend Assemblies Sample".

Seguridad

Hay similitudes entre el atributo InternalsVisibleToAttribute y la clase StrongNameIdentityPermission. La diferencia principal es que StrongNameIdentityPermission puede exigir los permisos de seguridad para ejecutar una sección de código determinada, mientras que el atributo InternalsVisibleToAttribute controla la visibilidad de los miembros y tipos Friend.

Vea también

Tareas

Cómo: Crear ensamblados de confianza no firmados

Conceptos

Ensamblados Friend (Visual Basic)

Referencia

InternalsVisibleToAttribute

/keyfile

Herramienta de nombre seguro (Sn.exe)

Otros recursos

Crear y utilizar ensamblados con nombre seguro