2010-02-17 134 views
9

我有「mycomp.myassembly.dll」在GAC,但加載和LoadFrom拋出文件未發現異常和LoadWithPartialName返回null。我做了以下內容:C#:如何從GAC加載程序集?

AssemblyName name = new AssemblyName(); 
    name.Name = "mycomp.myassembly.dll"; 

    Assembly assembly = Assembly.Load(name); 

失敗,FileNotFound爲mycomp.myassembly.dll文件,

Assembly assembly = Assembly.Load("mycomp.myassembly.dll"); 

失敗完全一樣的消息。

我雙重檢查該程序集是在GAC(即使它再次做到GACUTIL /)和它在所有其他情況下的工作,我只是無法加載它自己。

我在這裏做錯了什麼? 我錯過了什麼嗎?

+1

你試過沒有擴展名「.dll文件」,以供應組件的名字嗎?組裝組件= Assembly.Load(「mycomp.myassembly」); – 2010-02-17 08:59:13

+0

可惜的是並沒有幫助 – Artem 2010-02-17 09:06:22

回答

19

您是否嘗試過使用完全限定的程序集名稱? (例如"ycomp.myassembly.dll, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"

+0

這幫助,謝謝! :) – Artem 2010-02-17 09:09:23

+0

雙引號是重要的人。 – 2017-03-02 15:03:18

1

儘量簡單loading with the full name

// You must supply a valid fully qualified assembly name.    
     Assembly SampleAssembly = Assembly.Load 
      ("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"); 

我平時可沒有版本,文化和公共密鑰加載。

+0

我認爲公鑰需要,沒有公鑰就被當作完全不同的程序集。 GAC中的所有程序集都將擁有一個公鑰。 – erikkallen 2010-02-17 21:00:20

+0

你是對的。我腦部放屁,想着加載本地程序集 – 2010-02-17 21:12:20