从 GAC 加载使用 DLL 的运行代码时防止 System.IO.FileNotFoundException
我正在使用第三方 API 来访问一些数据采集硬件(带有 DAQmx 驱动程序的 National Instruments 硬件)。为此,我添加了对其驱动程序 dll 的引用。
当我在安装了驱动程序的机器上运行代码时,没有问题。但是,当我在没有驱动程序的计算机上运行时,我收到无法在 try/catch 中捕获的 System.IO.FileNotFoundException
。
在执行 API 代码之前,如何检查 dll 是否可用并且其类型是否可以使用。这很重要,因为并非所有机器都支持这种数据采集硬件(因此安装了驱动程序)。
我不确定,但我认为该 dll 已在安装了驱动程序的计算机上的 GAC 中注册。
I'm using a third party API to access some data acquisition hardare (National Instruments hardware with DAQmx driver). To do so, I add a reference to its driver dll.
When I run the code on a machine that has the driver installed, no problem. But when I run on a machine without the driver, I get a System.IO.FileNotFoundException
that cannot be caught in a try/catch.
How can I check, before I execute API code, if the dll is available and its types can be used. This is important because not all machines will support this kind of data acquisition hardware (and thus have the driver installed).
I'm not sure, but I think the dll is registered in the GAC on the machines that have the driver installed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要执行以下操作。如果程序集存在,只需将其更改为返回真/假。 (摘自此处)
You'll want to do something like the following. Just change it to return a true/false if the assembly exists. (taken from here)