我希望这是一个相当简单的问题,但我还没有设法在 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/