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


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

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

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

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

s1sx4kfb.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

    В этой команде команда компилятора является командой компилятору для используемого языка, а имя сборки является именем сборки со строгим именем, на которую и создается ссылка. Кроме того, можно использовать другие параметры компилятора, такие как параметр /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.

Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1")
Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1");

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

sn -Tp <сборка>

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

sn -tp <сборка>

См. также

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

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