Compartilhar via


Como: Criar assinado Friend Assemblies

Este exemplo mostra como usar conjuntos de módulos de amigo com assemblies com nomes fortes.Os dois assemblies devem ser um nome de alta segurança.Embora os dois assemblies neste exemplo usar as mesmas chaves, você poderia usar chaves diferentes para os dois assemblies.

Para criar um assembly assinado e um assembly do amigo no Visual Studio

  1. Abra um aviso de comando do Visual Studio.

  2. Use a seguinte sequência de comandos com a ferramenta nome forte para gerar uma chave de arquivo e para exibir sua chave pública.Para obter mais informações, consulte Ferramenta Strong Name (Sn.exe).

    1. Gerar uma chave de nome forte para esse exemplo e armazená-lo no arquivo FriendAssemblies.snk:

      FriendAssemblies.snk sn -k

    2. Extraia a chave pública do FriendAssemblies.snk e colocá-lo em FriendAssemblies.publickey:

      sn -p FriendAssemblies.snk FriendAssemblies.publickey

    3. Exiba a chave pública armazenada no arquivo FriendAssemblies.publickey:

      sn - tp FriendAssemblies.publickey

  3. Crie um novo arquivo do Visual Basic chamado FriendAssembliesSnA.vb e contém o seguinte código.O código usa o InternalsVisibleToAttribute atributo declarar FriendAssembliesSnB sistema autônomo um assembly do amigo.

    A ferramenta nome forte gera uma nova chave pública sempre que ele é executado.Portanto, você deve substituir a chave pública no código a seguir com a chave pública, que você apenas gerado, conforme mostrado no exemplo a seguir.

    ' 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. Compilar e assinar FriendAssembliesSnA.vb:

    Vbc.exe /destino:biblioteca /keyfile:FriendAssemblies.snk FriendAssembliesSnA.vb

  5. Crie um novo arquivo do Visual Basic chamado FriendAssembliesSnB.vb e contém o seguinte código.sistema autônomo FriendAssembliesSnA especificado FriendAssembliesSnB sistema autônomo um amigo assembly, o código no FriendAssembliesSnB pode acessar Friend tipos e membros 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. Compilar e assinar FriendAssembliesSnB.vb:

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

    O nome do assembly gerado pelo compilador deve corresponder ao nome de assembly amigo passado para o InternalsVisibleToAttribute atributo. Você pode conjunto explicitamente o assembly usando o /out opção do compilador. Para obter mais informações, consulte /out (Visual Basic).

  7. Execute FriendAssembliesSnB.exe.

    O programa exibe uma caixa de mensagem que contém a seqüência de caracteres "Friend Assemblies Sample".

Segurança

Há semelhanças entre o atributo InternalsVisibleToAttribute e a classe StrongNameIdentityPermission.A principal diferença é que StrongNameIdentityPermission pode solicitar permissões de segurança para executar uma determinada seção de código, enquanto o atributo InternalsVisibleToAttribute controla a visibilidade dos tipos e membros Friend.

Consulte também

Tarefas

Como: Criar Friend Assemblies não assinado

Conceitos

Assemblies Autorizados (Visual Basic)

Referência

InternalsVisibleToAttribute

/keyfile

Ferramenta Strong Name (Sn.exe)

Outros recursos

Criando e usando Assemblies de Nome Forte