使用互操作程序集时(即使该文件存在)

本文关键字:文件 存在 互操作 程序集 | 更新日期: 2023-09-27 18:04:20

我正在尝试对一些内部ActiveX浏览器控件进行自动操作。

我在c#代码中添加了对COM类型的引用,它会自动生成Interop.AssemblyName.dll

2周前,当我测试这个,它工作起来像一个魅力,但是尝试相同的代码现在失败与FileNotFoundException当试图获得对在互操作程序集中发现的某种类型的引用。

我怎样才能准确地追溯错误的来源?互操作文件就在我的测试应用程序的exe旁边。

我还应该找什么?

有关于互操作性和这类问题的好的教程吗?

使用互操作程序集时(即使该文件存在)

它在错误的位置寻找…不是你想去的地方。跟踪这一点的最简单的方法是查看异常的细节,但如果这不能说明问题,我将使用来自Sysinternals的Process Monitor来跟踪到底发生了什么。

我在创建一个WMI类时遇到了这个问题,它连接到一个COM对象中以提取信息。WMI写到事件日志中,找不到COM对象的互操作文件。

我就像Chris B. Behrens说的那样解决了这个问题:在生成异常的同时捕获所有磁盘IO,看看它在哪里寻找,找不到互操作文件。

…是的,我的互操作文件一直在我的主应用程序旁边,但是当系统试图找到它时,该目录不是搜索的位置之一。怪异。

我把我的互操作文件复制到C:'Windows'System32'wbem,它神奇地开始工作了(Windows XP x86)。