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