Compartilhar via


Assemblies Autorizados (Visual Basic)

Um assembly autorizado é um assembly que tem permissão de acessar outro conjunto de tipos e membros Friend .(Para obter mais informações, consulte Amigo (Visual Basic).) Se você identificar um assembly como um assembly autorizado, você não precisará mais marcar tipos e membros como público na ordem para que eles sejam acessados por outros assemblies.Isso é conveniente principalmente nas seguintes situações:

  • Durante testes de unidade, quando o código de teste é executado em um assembly separado mas requer acesso a membros no assembly que está sendo testado e que é marcado como Friend.

  • Quando você estiver desenvolvendo um biblioteca de classes e adições à biblioteca estão contidas em conjuntos separados, mas precisam acessar os membros existentes conjuntos de assemblies que estejam marcados como Friend.

Comentários

Você pode usar o atributo InternalsVisibleToAttribute para identificar um ou mais assemblies autorizados para um determinado assembly.Por exemplo, se você incluiu o atributo InternalsVisibleToAttribute no assembly A e especificar assembly B como um assembly autorizado, assembly B terá acesso a todos os tipos e membros no assembly A que estejam marcados como Friend, conforme mostrado no exemplo o seguir.

Imports System.Runtime.CompilerServices

<Assembly: InternalsVisibleTo("FriendAssembliesB")> 

' Friend class.
Friend Class FriendAssembliesA
    Public Sub Test()
        MsgBox("Friend Assemblies Sample Class")
    End Sub
End Class

' Public class with a Friend method.
Public Class FriendAssembliesClassA
    Friend Sub Test()
        MsgBox("Friend Assemblies Sample Method")
    End Sub
End Class

Apenas assemblies que você especificar explicitamente como autorizados podem acessar tipos e membros Friend.Por exemplo, se assembly B é um amigo do assemblyA e assembly C refere-se ao assembly B , C não tem acesso a tipos Friend em A.

O compilador executa algumas validações básicas do nome do assembly autorizado passado para o atributo InternalsVisibleToAttribute.Se assembly A declara B como uma assembly autorizado, as regras de validação são como a seguir:

  • Se assembly A for nomeado forte, assembly B deve também ser nomeado forte.O nome do assembly autorizado que é passado ao atributo deve consistir do nome do assembly e da chave pública da chave do nome forte que é usada para sinalizar assembly B .

    O nome do assembly amigo que é passado para o InternalsVisibleToAttribute atributo não pode ser o nome forte do assembly B: não inclua a versão do assembly, cultura, arquitetura ou token de chave pública.

  • Se assembly A não for nomeado forte, o nome do assembly autorizado deve consistir somente o nome do assembly.Para obter mais informações, consulte Como: Criar Friend Assemblies não assinado.

  • Se assembly B for nomeado forte, especifique a chave de nome fortee para assembly B usando a configuração do projeto ou a linha de comando opção de compilador /keyfile.Para obter mais informações, consulte Como: Criar assinado Friend Assemblies.

Para obter informações sobre como acessar um assembly Friend tipos e métodos de um arquivo de módulo (um arquivo com o. extensão netmodule), consulte /moduleassemblyname.

Observação de segurança:

Existem semelhanças entre as InternalsVisibleToAttribute atributo e o StrongNameIdentityPermission classe. 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

Como: Criar assinado Friend Assemblies

Conceitos

Conjuntos de Módulos (Assemblies)

Referência

InternalsVisibleToAttribute

Vinculador do conjunto (AL.exe) 

/addmodule

Outros recursos

Compilador do Visual Basic