从本地目录而不是GAC加载程序集

时间:2015-11-04 16:16:53

标签: c# .net assemblies gac

我正在努力写一个'#hello world'应用程序依赖于CAD软件的程序集(SpaceClaim)。我将程序集SpaceClaim.Api.V12.dll添加到我的引用并构建没有问题。当我尝试运行应用程序时,出现以下错误:

  

未处理的异常:System.IO.FileLoadException:无法加载文件   或装配' SpaceClaim.Api.V12,Version = 12.1.11373.0,   Culture = neutral,PublicKeyToken = 7210645d4d5e3a39'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)   文件名:' SpaceClaim.Api.V12,Version = 12.1.11373.0,Culture = neutral,   公钥= 7210645d4d5e3a39'   ---> System.IO.FileLoadException:无法加载文件或程序集' SpaceClaim.Api.V12,Version = 12.1.8703.0,Culture = neutral,   公钥= 7210645d4d5e3a39'或其中一个依赖项。该   定位程序集的清单定义与程序集不匹配   参考。 (来自HRESULT的异常:0x80131040)文件名:   ' SpaceClaim.Api.V12,Version = 12.1.8703.0,Culture = neutral,   公钥= 7210645d4d5e3a39'

(此错误消息也在讨论here

检查GAC后,我可以看到有一个具有相同强名称的程序集与我引用的程序集(版本= 12.1.8703.0)。然而,当我用反汇编程序(ILSpy)打开这两个时,我发现它们针对不同的运行时,我引用的是.NET 2.0和GAC .NET 4.0中的运行时。

我想忽略GAC中的那个,并从本地目录中选择一个针对.NET 2.0的目录。显然,仅仅将其复制到与可执行文件相同的文件夹是不够的。根据我目前所阅读的herehere,为了做到这一点,我们需要删除签名'从集会。我对.NET没有多少经验,所以我想知道,这是我可以用第三方组装做的事情,如果是的话怎么样?或者我还有其他选择吗?这两个程序集具有相同的强名称,因此根据我的理解,将它们放在GAC中并不是一个选项。

谢谢

0 个答案:

没有答案