我需要从目录中的DLL加载所有程序集.
我的基本代码是:
var assemblies = from filename in Directory.GetFiles(HttpRuntime.BinDirectory, "*.dll")
select Assembly.LoadFrom(filename);
Run Code Online (Sandbox Code Playgroud)
但是,如果该目录中存在非托管DLL,则Assembly.LoadFrom将失败.有没有一种只加载托管DLL的好方法?捕获加载异常是一种选择,但我想知道是否有更好的方法.
我的代码在应用程序启动时在ASP.NET上运行.所以我也接受一个ASP.NET特定的解决方案.
从这里: http: //blogs.msdn.com/b/junfeng/archive/2004/02/06/68334.aspx
“如果给定文件不是托管程序集,Assembly.LoadFrom 将抛出 BadImageFormatException。
此异常也可能因其他原因引发。苏珊娜好心地指出了一种更可靠的方法。捕获 BadImageFormatException 后,查看其 HResult 字段。如果 HResult 是 COR_E_ASSEMBLYEXPECTED,则意味着这不是托管程序集。”
这有帮助吗?