我试图在运行时将与我设置的特定程序集属性匹配的 dll 加载到我的程序中。为了确保在检查其标志之前 dll 是可加载的,我编写了以下方法:
private bool IsValidDll(string dll) {
try {
System.Reflection.Assembly.LoadFrom(dll);
return true;
} catch (Exception ex) { return false; }
}
我可以遍历当前目录中的 dll 并调用此方法以查看加载 dll 并检查其程序集属性是否安全。但是,我遇到了一个没有抛出/捕获异常并且仍然只是直接使程序崩溃的 dll。相关的输出窗口信息如下:
LoaderException: System.IO.FileLoadException: Mixed mode assembly is built against
version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information. - Adapters.Spryware.SprywareAdapter
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
我已经尝试捕获特定的异常(System.IO.FileLoadException),但是仍然跳过了捕获块并且我仍然崩溃。有什么想法吗?
另外,我发现这是检查我的程序集属性的一种非常繁琐的方法。有没有办法检查我的标志而不必先用反射加载 dll?