我有三個.NET 4.0的第三方組件:簽名的程序集似乎加載未簽名(不使用反射)
Assembly.One
是無符號並參照簽署Assembly.Two
和無符號Assembly.Three
。Assembly.Two
參考文獻a signedAssembly.Three
。
我已經使用反射器驗證了上述情況。
我已經提供了一個無符號Assembly.One
,簽署Assembly.Two
和無符號Assembly.Three
。
我預計這將在部署爲有符號的Assembly.Two
時發生崩潰,肯定無法加載未簽名的Assembly.Three
,因爲它特別從其引用中查找簽名版本?然而,令我驚訝的是它的工作原理。
Assembly.Two
有參考Assembly.Three
在它的清單,所以它必須使用它,否則編譯器會剝離出來?我已經檢查過服務器上沒有Assembly.Three
的簽名版本,並且使用FUSLOGVW它確實正在加載未簽名的版本。
FUSLOGVW中有兩個條目用於加載未簽名的Assembly.Three
,其中一個用於(Unknown)的調用程序集,顯示以下內容。
從應用程序 目錄中成功部分指定的程序集綁定成功。需要重新申請政策
難道還有一個潛在的「責任鏈」(由於沒有一個更好的描述),它允許這一點,我不知道,因爲始發Assembly.One
具有的一個參考無符號的Assembly.Three
?