引用強名稱程序集中的類型或資源的過程通常是透明的。您可以在編譯時(事先綁定)或在運行時進行引用。
當您向編譯器表明程序集顯式引用另一程序集時,發生編譯時引用。使用編譯時引用時,編譯器會自動獲取定爲目標的強名稱程序集的公鑰,並將其放在正在編譯的程序集的程序集引用中。
注意 |
---|
具有強名稱的程序集只能使用其他具有強名稱的程序集的類型。否則會危及具有強名稱的程序集的安全。 |
對強名稱程序集進行編譯時引用
-
在命令提示處,鍵入下列命令:
<compiler command> /reference:<assembly name>
在此命令中,compiler command 是您所用語言的編譯器命令,assembly name 是引用的強名稱程序集的名稱。您也可以使用其他編譯器選項(例如 /t:library 選項)創建庫程序集。
下面的示例創建名爲 myAssembly.dll
的程序集,該程序集從名爲 myAssembly.cs
的代碼模塊中引用名爲 myLibAssembly.dll
的強名稱程序集。
複製代碼 | |
---|---|
csc /t:library myAssembly.cs /reference:myLibAssembly.dll |
在運行時引用具有強名稱的程序集
-
要在運行時通過使用 Assembly.Load 或 Assembly.GetType 之類的方法引用具有強名稱的程序集,必須使用引用的強名稱程序集的顯示名稱。顯示名稱的語法如下:
<assembly name>, <version number>, <culture>, <public key token>
例如:
複製代碼 | |
---|---|
myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33 |
在此示例中,PublicKeyToken 是公鑰標記的十六進制形式。如果沒有區域性值,請使用 Culture=neutral。
下面的代碼示例說明如何以 Assembly.Load 方法使用該信息。
Visual Basic | 複製代碼 |
---|---|
Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1") |
C# | 複製代碼 |
---|---|
Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1"); |
您可以使用下面的強名稱工具 (Sn.exe) 命令,爲特定程序集輸出十六進制格式的公鑰和公鑰標記:
sn -Tp <assembly>
如果您有公鑰文件,則可改用以下命令(請注意命令行選項中大小寫的區別):
sn -tp <assembly>