我有一个更新程序,从服务器提取的文件在一个目录中混合了vb6 dll和.net DLL。
如何确定dll是否是COM? (所以我可以从更新程序中调用regsvr32
)
答案 0 :(得分:6)
我想一种方法是尝试使用System.Reflection.Assembly.LoadFile()加载文件。如果遇到BadImageFormatException,则它不是有效的.NET程序集。可能有一种更简洁的方法,但这应该有效。
答案 1 :(得分:5)
为了正式执行此操作,您可以检查PE以了解有关每个dll导出的内容类型的更多信息。有a pretty interesting article on MSDN谈论结构。如果您了解设置,则可以识别.Net的链接(从而缺少指示纯COM dll)。
答案 2 :(得分:3)
为什么不在所有这些上调用regsvr。如果他们注册然后好,如果不是没什么大不了的。
最好是编写一个安装程序,知道哪些安装程序适用于每个安装程序,并为每个安装程序做正确的事。
修改
如果您担心“发出错误”,请不要担心。
您可以取消邮件。 (/ s)的