2014-02-06 46 views
0

我有一個強有力的命名程序集AssemblyA。我想引用沒有強命名的AssemmblyB。做這個的最好方式是什麼?從簽名程序集動態加載未簽名的程序集

我看到了一些關於將AssemblyB加載到單獨的AppDomain中的例子,但我遇到了一些麻煩。下面是我試過的(這個代碼來自AssemblyA內部):

var domain = AppDomain.CreateDomain("NewDomainName"); 
var pathToDll = @"\\myDLLs\AssemblyB.dll"; 
var tmp = domain.CreateInstanceFromAndUnwrap(pathToDll, TYPE_NAME); 

現在,我不確定要爲TYPE_NAME使用什麼。我想能夠使用AssemblyB中的多種不同類型,所以我非常肯定我在這裏錯了。

另一件事是,我甚至不能從AssemblyA中引用AssemblyB,因爲一旦我這樣做,由於強名稱/沒有強名稱不匹配,AssemblyA將無法生成。

我是否需要以某種方式從新的未簽名項目中引用AssemblyB?

基本上我們的目標是有權訪問AssemblyB,因爲它只是直接引用它。

謝謝。

+0

1)確保調用應用程序允許未簽名的程序集運行。可能的話,您可以在運行時執行此操作,然後只在應用程序確定時動態加載AssemblyB。請參見Assembly.Load():http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load%28v=vs.110%29.aspx – 2014-02-06 20:33:34

回答

0
  1. 想要跨AppDomain訪問的任何TYPE_NAME應該是遠程的。檢查AppDomain.CreateInstanceAndUnwrap

  2. 不允許從簽署的程序集引用未簽名的程序集。否則,它會超過首次簽署大會A的目的。