使用 Interop 程序集时出现 FileNotFoundException(即使文件存在)

发布于 2024-11-27 12:39:29 字数 307 浏览 1 评论 0原文

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

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

2 周前,当我测试它时,它的工作就像一个魅力,但是尝试相同的代码现在失败,并在尝试获取时出现 FileNotFoundException对互操作程序集中找到的某种类型的引用。

我怎样才能准确地追溯错误的根源是什么? Interop 文件位于我的测试应用程序的 exe 旁边。

我还应该寻找什么?

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

I am trying to automate actions against some in house ActiveX browser control.

I added a reference to the COM type in my C# code, which automagically generates the Interop.AssemblyName.dll

2 Weeks ago when i tested this, it worked like a charm, however trying the same code now fails with a FileNotFoundException when trying to get a reference to some type found in the interop assembly.

How can i trace back exactly what is the source of error? the Interop file exists right next to my test application's exe.

What else should i be looking for?

Is there any good tutorial on interoperability and problems of this kind?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

上课铃就是安魂曲 2024-12-04 12:39:29

它正在寻找错误的位置...与您期望的位置不同的位置。追踪此问题的最简单方法是查看异常的详细信息,但如果这无法揭示,我将使用 Sysinternals 的进程监视器来追踪到底发生了什么。

It's looking in the wrong location...a location other than the one you expect. Simplest way to track this down is to look at the detail of the Exception, but if that's unrevealing I would use Process Monitor from Sysinternals to track down exactly what's going on.

童话里做英雄 2024-12-04 12:39:29

我创建的 WMI 类遇到了这个问题,该类连接到 COM 对象以拉回信息。 WMI 向事件日志写入无法找到 COM 对象的互操作文件。

我按照 Chris B. Behrens 的说法解决了这个问题:在生成异常时捕获所有磁盘 IO,并查看它在哪里寻找互操作文件,以及在哪里找不到互操作文件。

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

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

I had this problem with a WMI class I created that hooked into a COM object to pull back information. WMI wrote to the event log that the Interop file for the COM object could not be found.

I resolved it just as Chris B. Behrens said: capture all disk IO while generating the exception and see where it is looking for, and failing to find, the interop file.

...And yes, my interop file was alongside my main application the entire time, however that directory was not one of the locations searched when the system tried to find it. Bizarre.

I copied my interop file to C:\Windows\System32\wbem and it magically started working (Windows XP x86).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文