Поделиться через


Дружественные сборки (Visual Basic)

Обновлен: Ноябрь 2007

friend assembly является сборкой, для которой разрешен доступ типов и членов других Friend сборок. (Дополнительные сведения см. в разделе Friend (Visual Basic).) Если сборка определена как дружественная, больше нет необходимости помечать типы и члены как public для того, чтобы другие сборки имели к ним доступ. Это особенно удобно в следующих случаях:

  • Во время тестирования модулей тестируемый код выполняется в отдельной сборке, но необходим доступ к членам в тестируемой сборке, которые отмечены как Friend.

  • При разработке библиотеки классов и дополнений к библиотеке, содержащихся в отдельных сборках, требуется доступ к элементам в существующих сборках, которые помечены как Friend.

Примечания

Можно использовать атрибут InternalsVisibleToAttribute для идентификации одной или нескольких сборок дружественных для данной сборки. Например, если включить атрибут InternalsVisibleToAttribute в сборку A и указать сборку B как дружественную сборку, сборка B получит доступ ко всем типам и членам в сборке A, которые помечены как Friend, как показано в следующем примере.

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

Только сборки, которые явным образом указаны как дружественные, могут получить доступ к типам и членам Friend. Например, если сборка B дружественная для сборки A и сборка C ссылается на сборку B, C не имеет доступа к типам Friend в A.

Компилятор выполняет некоторые основные проверки имени дружественной сборки, передаваемой атрибуту InternalsVisibleToAttribute. Если сборка A объявляет B как дружественную сборку, правила проверки следующие:

  • В случае строгого имени сборки A сборка B также должна иметь строгое имя. Имя дружественной сборки, которая передается атрибуту, должно состоять из имени сборки и открытого ключа строгого имени, который используется для подписи сборки B.

    Имя дружественной сборки, которая передается атрибуту InternalsVisibleToAttribute не может быть строгим именем сборки B, за исключением версии сборки, языка и региональных параметров, архитектуры или маркера открытого ключа.

  • Если сборка A не имеет строгого имени, имя дружественной сборки должно состоять только из имени сборки. Дополнительные сведения см. в разделе Практическое руководство. Создание неподписанных дружественных сборок.

  • Если сборка B имеет строгое имя, необходимо указать ключ строгого имени для сборки B с помощью параметра проекта или параметра компилятора командной строки /keyfile. Дополнительные сведения см. в разделе Практическое руководство. Создание подписанных дружественных сборок.

Сведения о доступе к типам сборки Friend и методам из модуля файла (файл с расширением .netmodule) содержатся в разделе /moduleassemblyname.

Bb384772.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Существуют сходства между атрибутом InternalsVisibleToAttribute и классом StrongNameIdentityPermission. Главное различие состоит в том, что StrongNameIdentityPermission может потребовать разрешения безопасности для выполнения определенного раздела кода, тогда как атрибут InternalsVisibleToAttribute контролирует видимость Friend типов и членов.

См. также

Задачи

Практическое руководство. Создание неподписанных дружественных сборок

Практическое руководство. Создание подписанных дружественных сборок

Основные понятия

Сборки

Ссылки

InternalsVisibleToAttribute

Компоновщик сборок (Al.exe)

/addmodule

Другие ресурсы

Компилятор Visual Basic