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
Abra um aviso de comando do Visual Studio.
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).
Gerar uma chave de nome forte para esse exemplo e armazená-lo no arquivo FriendAssemblies.snk:
FriendAssemblies.snk sn -k
Extraia a chave pública do FriendAssemblies.snk e colocá-lo em FriendAssemblies.publickey:
sn -p FriendAssemblies.snk FriendAssemblies.publickey
Exiba a chave pública armazenada no arquivo FriendAssemblies.publickey:
sn - tp FriendAssemblies.publickey
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
Compilar e assinar FriendAssembliesSnA.vb:
Vbc.exe /destino:biblioteca /keyfile:FriendAssemblies.snk FriendAssembliesSnA.vb
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
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).
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
Ferramenta Strong Name (Sn.exe)