2010-02-17 137 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