C# 如何在.NET中忽略程序集加载失败?

C# 如何在.NET中忽略程序集加载失败?,c#,.net,.net-assembly,C#,.net,.net Assembly,我有一个项目,它引用了两个硬件DLL,这两个DLL引用了两个不同版本的sdk,并将根据检测到的硬件选择要使用的硬件库。但是,对于我们的一些老客户机,要安装较新硬件的sdk,需要升级到windows 8,这不是他们的选项 /---------Hardware1Wrapper-------Hardware1SDKLibraries Main Program -- \---------Hardware2Wrapper-------Hardwa

我有一个项目,它引用了两个硬件DLL,这两个DLL引用了两个不同版本的sdk,并将根据检测到的硬件选择要使用的硬件库。但是,对于我们的一些老客户机,要安装较新硬件的sdk,需要升级到windows 8,这不是他们的选项

               /---------Hardware1Wrapper-------Hardware1SDKLibraries
Main Program --
               \---------Hardware2Wrapper-------Hardware2SDKLibraries(Win8)
这会导致程序无法解决其中一个DLL并导致崩溃


有没有一种方法可以让我忽略“无法加载文件或程序集”错误,因为我知道在运行时我将永远无法访问该代码?类似于resolution的内容:=OSGI中的可选?

如果您没有源代码并且无法正确修复它,那么您唯一的选择就是使用本地或计算机重定向。@johnpeter您提到的选项的url引用?非常感谢。我不知道你说的“我永远不会得到那个代码”是什么意思,但是你不能在一个单独的项目中用两个库的所有常用方法构建一个接口,然后创建两个单独的项目,每个项目引用你创建的接口,每个项目引用相关的sdk库。在主应用程序中,使用Assembly.Load加载基于操作系统的相关应用程序。我们使用它并且工作得很好。如果您允许在操作系统的基础上实例化Hardware1Wrapper/Hardware2Wrapper,它将确保只加载相关的程序集。(假设您没有引用这些组件中的任何其他类型)