使用带有损坏引用的.net DLL

Mar*_*ius 16 .net c# dll

我必须在我的应用程序中使用DLL作为API(C#,.NET 4.5).我可以正常引用DLL.完全没有错误.但是如果我想使用这个DLL的任何类,我会得到以下编译错误:

错误CS1705程序集'Assembly_X'与标识'Assembly_X,Version = 12.3.0.0,Culture = neutral,PublicKeyToken = c878e80841e75d00'使用'Assembly_YY,Version = 65535.65535.65535.65535,Culture = neutral,PublicKeyToken = c878e80841e75d00',其版本高于引用程序集'Assembly_YY',标识为'Assembly_YY,Version = 12.3.0.0,Culture = neutral,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或进行修复?


UPDATE

dll的开发人员终于回应了我的求助电话.他们所知道的唯一工作是使用Visual Studio 2013而不是Visual Studio 2015或2017.看起来VS 2013并没有受到这些双重引用的困扰.

他们写道,错误是由dll的加密工具创建的.谢谢大家的意见和帮助.

小智 2

问题基本上是您引用的“Assembly_X”引用了程序集“Assembly_YY”版本12.3.0.0和65535.65535.65535.65535,并且您在应用程序中仅引用了“Assembly_YY”版本12.3.0.0,并且没有引用65535.65535.65535.65535

现在根据Microsoft Docs上的问题解释以及您没有程序集源代码的示例,您必须:

将对 DLL 的“Assembly_YY”版本 65535.65535.65535.65535 的引用添加到您的应用程序以使其编译并使应用程序能够运行,您可以提供一个应用程序配置文件,其中包含一个元素,该元素<dependentAssembly>使用<assemblyIdentity><codeBase>子元素来指定DLL 的版本 12.3.0.0。