【发布时间】:2018-01-23 08:36:01
【问题描述】:
我必须在我的应用程序(C#、.NET 4.5)中使用 DLL 作为 API。我可以正常引用DLL。完全没有错误。但是如果我想使用这个 DLL 的任何类,我会得到以下编译错误:
错误 CS1705 程序集“Assembly_X”,标识为“Assembly_X”, 版本=12.3.0.0,文化=中性,PublicKeyToken=c878e80841e75d00' 使用'Assembly_YY,版本=65535.65535.65535.65535,文化=中性, PublicKeyToken=c878e80841e75d00' 版本高于 以标识“Assembly_YY”引用程序集“Assembly_YY”, 版本=12.3.0.0,文化=中性,PublicKeyToken=c878e80841e75d00'
然后我检查了 ILSpy 中的 DLL (Assembly_X)。 Assembly_X 有两个对 Assembly_YY 的引用:一个是 12.3.0.0 版本,一个是 65535.65535.65535.65535 版本。
我尝试了 App.config 中的“bindingRedirect”。但由于错误发生在编译时,这无济于事。
我没有 Assembly_X 或 Assembly_YY 的源代码。
如何使用或修复此 DLL?
更新
dll 的开发者终于响应了我的求助。他们知道的唯一解决方法是使用 Visual Studio 2013 而不是 Visual Studio 2015 或 2017。似乎 VS 2013 根本不受这些双重引用的困扰。
他们写道,错误是由 dll 的加密工具造成的。 谢谢大家的想法和帮助。
【问题讨论】:
-
你能用实际值更新 X 和 Y 吗?这将使我们能够为您提供帮助。
-
这些是来自另一家公司的 DLL,我无法发布 DLL 的名称。你不会知道这些 DLL,因为世界上只有少数人在使用它们。
-
由于 PBK 相同,您可以尝试通过 using ilmerge 伪造您的 Assembly_YY 版本。在尝试此操作之前,请确保您有 Assembly_YY 的备份/副本。如果这不起作用,您可以try it the hard way
-
第 3 方 DLL 编译的 .NET Framework 版本是什么?使用assemblyinformation.codeplex.com 或 Telerik JustDecompile 快速检查。它可能与 .net 4.5 不兼容
-
好主意。但它是相同的框架版本。 ILSpy 也给了我这个信息 [assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]