如何确定DLL是COM还是.NET?

时间:2010-06-10 03:05:41

标签: .net vb6

我有一个更新程序,从服务器提取的文件在一个目录中混合了vb6 dll和.net DLL。

如何确定dll是否是COM? (所以我可以从更新程序中调用regsvr32

3 个答案:

答案 0 :(得分:6)

我想一种方法是尝试使用System.Reflection.Assembly.LoadFile()加载文件。如果遇到BadImageFormatException,则它不是有效的.NET程序集。可能有一种更简洁的方法,但这应该有效。

http://msdn.microsoft.com/en-us/library/b61s44e8.aspx

答案 1 :(得分:5)

为了正式执行此操作,您可以检查PE以了解有关每个dll导出的内容类型的更多信息。有a pretty interesting article on MSDN谈论结构。如果您了解设置,则可以识别.Net的链接(从而缺少指示纯COM dll)。

答案 2 :(得分:3)

为什么不在所有这些上调用regsvr。如果他们注册然后好,如果不是没什么大不了的。

最好是编写一个安装程序,知道哪些安装程序适用于每个安装程序,并为每个安装程序做正确的事。

修改

如果您担心“发出错误”,请不要担心。

See this usage

您可以取消邮件。 (/ s)的