在運行時引用具有強名稱的程序集

引用強名稱程序集中的類型或資源的過程通常是透明的。您可以在編譯時(事先綁定)或在運行時進行引用。

當您向編譯器表明程序集顯式引用另一程序集時,發生編譯時引用。使用編譯時引用時,編譯器會自動獲取定爲目標的強名稱程序集的公鑰,並將其放在正在編譯的程序集的程序集引用中。

注意

具有強名稱的程序集只能使用其他具有強名稱的程序集的類型。否則會危及具有強名稱的程序集的安全。

對強名稱程序集進行編譯時引用

  • 在命令提示處,鍵入下列命令:

    <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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章