背景:
我的C#应用程序包括一个插件框架和通用插件加载器.
插件加载器枚举应用程序目录以识别插件dll(实质上它此时搜索*.dll).
在同一个应用程序目录中是一个本机(Windows,非.NET)dll,间接地,其中一个插件dll依赖于它.
插件加载器盲目地假设native.dll是.NET程序集dll,只是因为它只检查文件扩展名.当它尝试加载本机dll时,抛出异常:
"无法加载文件或程序集'native.dll'或其依赖项之一.模块应该包含程序集清单."
如果插件加载失败,我基本上创建了一个诊断报告,所以我试图避免让这个日志充满关于无法加载本机dll的消息(我甚至不想尝试).
问题:
是否有一些.NET API调用可用于确定二进制文件是否恰好是.NET程序集,以便我根本不尝试加载本机DLL?
也许从长远来看,我会将我的插件移动到一个子目录,但是现在,我只想要一个解决方案,不涉及在我的插件加载器中硬编码"native.dll"名称.
我想我正在寻找某种静态的Assembly.IsManaged()API调用,我忽略了......大概没有这样的API存在?