c# - FileNotFoundException - 动态发现

标签 c# exception testing

我希望这是一个相当简单的问题,但我还没有设法在 Google 上找到有效的答案...

我在 C# 测试上下文中工作,并且正在引用一个托管 C++ DLL,该 DLL 然后引用普通的 C++ 程序集。当我尝试运行我的测试时,我得到一个 FileNotFoundException,它没有提供有关它无法找到的文件的任何详细信息。

System.IO.FileNotFoundException: The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我用 ProcMon 做了一些检查,发现它正在尝试加载一个 C++ DLL,但它正在探测所有标准位置(C:\Windows、C:\Windows\System 等)。有没有一种方法可以将其重定向以包含一个额外的文件夹,我们所有的二进制文件都构建到该文件夹​​中?

我猜 AppDomain 上有一些东西,但我还没有完全弄清楚要使用哪个属性,哪个属性会起作用。

最佳答案

只需将该路径添加到 Path 环境变量即可。

在 Windows 7 中:按 Windows 键,输入“environment”,选择Edit the system environment variables,选择Environment variables.. . 添加路径...

以编程方式:参见 this post .

但我认为更常见的方法是将引用的 DLL 复制到您的输出目录。即使这需要更多磁盘空间,它也能保证引用的 DLL 始终与您的 C# 应用程序兼容。如果 CVS 更新更改了 DLL,并且您没有重建 C# 应用程序,它可能不会按预期启动。

关于c# - FileNotFoundException - 动态发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715514/

相关文章:

c# - SqlDependency - 防止事件之间的数据丢失并再次重新注册查询?

python - 如何使用附加信息重新引发异常?

spring - 错误页面-如何在JSP中打印堆栈跟踪

java - Mockito 验证仅在 AVD 运行时通过

C# MongoDB FindAsync 永远不会返回 Await

c# - 为什么 Quartz.Net 似乎要求我的项目以完整的 .NET Framework 4 为目标?

java - 如何通过 HibernateTemplate 更新数据库中的特定字段

javascript - 无法断言 css 宽度为 100%

angularjs - Protractor :异步超时,我认为是因为它找不到元素

c# - 在Excel中获取删除的范围