2010-12-03 38 views
1
  1. 我已經創建了一個測試項目,其輸出將是強命名的程序集。我在'項目 - >屬性 - >簽名'部分中指定了SNK文件名,這樣程序集就會被強制命名。 我添加了未簽名或強名稱的程序集的引用。我期待着我的項目完全不會構建,因爲它引用了未簽名的程序集。但是,它的內置,我也可以在GAC中安裝程序集!爲什麼這樣? (我正在使用.NEt 4.0,它是gacutil.exe) 注意:我確保被引用的程序集不是強命名的。反射和強有力的命名程序集

  2. 我可以在我的程序中以編程方式加載'unsigned'(即非強名)程序集,該程序的輸出將會是強命名的程序集?如果是,爲什麼在另一方面允許這樣做,.NET不允許添加對未簽名程序集的引用?

  3. 如果我在GAC中有多個版本的相同程序集。在我的配置文件中,如果我只指定程序集的名稱,哪個版本將從GAC加載?它會每次都是最新版本嗎?哪個API會有用?我在Assembly類中發現了許多標記爲「已棄用」的方法。

回答

0
  1. 有在簽名的程序集引用一個無符號的組合沒有問題。它可以完成,簽署的程序集可以是GAC。

  2. 是的,你可以加載。

  3. 如何通過名稱指定程序集?只有一個API LoadWithPartialName,並且由於許多原因而被棄用。您需要版本,文化和公鑰標記來唯一標識程序集。

+0

感謝您的回覆。但是,如果您遵循http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx鏈接,甚至MSDN都會說「強名稱程序集只能引用其他強名稱程序集」。所以我仍然對第一點感到困惑。如果你對問題2的回答是'是',那麼你能否回答我的問題,爲什麼允許(考慮我在指定鏈接處的文章)?再次感謝。 – Learner 2010-12-03 05:17:19

1

您可以從簽名的程序集中引用VS.Net中的未簽名程序集。但是如果你調用從簽名到無符號的任何東西,構建將失敗。

相關問題