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


Практическое руководство. Создание ссылки на сборку со строгим именем

Процесс использования ссылок на типы или ресурсы, находящиеся в сборке со строгим именем, обычно понятен. Создать ссылку можно в момент компиляции (ранние связки) или же во время выполнения.

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

ПримечаниеПримечание

Сборки со строгим именем могут использовать типы только из других сборок со строгими именами.В противном случае безопасность сборки со строгим именем будет под угрозой.

Чтобы создать ссылку на сборку со строгим именем в момент компиляции

  • В командной строке введите следующую команду:

    <команда_компилятора> /reference:<имя_сборки>

    В этой команде команда компилятора является командой компилятору для используемого языка, а имя сборки является именем сборки со строгим именем, на которую и создается ссылка. Кроме того, можно использовать другие параметры компилятора, такие как параметр /t:library, позволяющий создать библиотечную сборку.

В следующем примере создается сборка, названная myAssembly.dll, которая ссылается на сборку со строгим именем myLibAssembly.dll из модуля кода с именем myAssembly.cs.

csc /t:library myAssembly.cs /reference:myLibAssembly.dll

Чтобы создать ссылку на сборку со строгим именем во время выполнения

  • Необходимо использовать отображаемое имя сборки со строгим именем, на которую указывает ссылка, если вы создаете ссылку на сборку со строгим именем во время выполнения (например, с помощью метода Assembly.Load или Assembly.GetType). Отображаемое имя имеет следующий синтаксис:

    <имя_сборки>, <номер_версии>, <язык_и_региональные_параметры>, <токен_открытого_ключа>

    Примеры.

    myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33 
    

    В данном примере PublicKeyToken представляет собой шестнадцатеричную форму лексемы открытого ключа. Если значение языка и региональных параметров отсутствует, используйте Culture=neutral.

В следующем примере кода показан способ использования этих данных с методом Assembly.Load.

Dim myDll As Assembly = _
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")
Assembly myDll =
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly^ myDll =
    Assembly::Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");

Распечатать в шестнадцатеричном формате открытый ключ и токен открытого ключа для определенной сборки можно с помощью следующей команды строгого имени (Sn.exe):

sn -Tp <сборка>

Если же имеется файл открытого ключа, то вместо этого можно использовать следующую команду (обратите внимание на разный регистр символов в опции командной строки):

sn -tp <сборка>

См. также

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

Создание и использование сборок со строгими именами