Практическое руководство. Создание ссылки на сборку со строгим именем
Обновлен: Ноябрь 2007
Процесс использования ссылок на типы или ресурсы, находящиеся в сборке со строгим именем, обычно понятен. Создать ссылку можно в момент компиляции (ранние связки) или же во время выполнения.
Во время компиляции создание ссылки происходит, когда компилятору указывается, что текущая сборка явно ссылается на другую сборку. При создании ссылок в момент компиляции, компилятор автоматически получает открытый ключ нужной сборки со строгим именем и помещает его в ссылку компилируемой сборки.
Примечание. |
---|
Сборки со строгим именем могут использовать типы только из других сборок со строгими именами. В противном случае безопасность сборки со строгим именем будет под угрозой. |
Чтобы создать ссылку на сборку со строгим именем в момент компиляции
В командной строке введите следующую команду:
<команда компилятора> /ссылка:<имя сборки>
В этой команде команда компилятора является командой компилятору для используемого языка, а имя сборки является именем сборки со строгим именем, на которую и создается ссылка. Кроме того, можно использовать другие параметры компилятора, такие как параметр /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 <сборка>