【发布时间】:2013-05-07 14:30:26
【问题描述】:
我使用添加现有文件在项目 OldTesters 中添加了一个非托管 dll。 我还设置了 BuildAction = Content 和 Copy to Output Directory = Copy if newer。 我通过 [DllImport("unamanged.dll")]
在 OldTesters 项目中使用非托管 dll 中的一些函数OldTesters 是我在主项目中使用添加引用引用的 .NET 项目。
问题是当我重建应用程序时一切正常,但随后我关闭应用程序, 然后点击开始,它会抛出我 DllNotFoundException
无法加载 DLL 'unmanaged.dll':找不到指定的模块。 (HRESULT 异常:0x8007007E)
我注意到 Visual Studio 从 bin 目录中删除了 unmanaged.dll。
如果我重建 OldTesters 项目,那么它将起作用。但是重建 OldTesters 总是很烦人,因为我没有在那个项目中添加任何更改。为了证明这一点,如果我点击构建,我会得到:
========== 构建:0 成功,0 失败,6 最新,0 跳过 ==========
因为项目中没有任何变化。当我运行应用程序时,我得到了同样的异常。
【问题讨论】:
-
VS 中没有任何东西可以在您停止调试时自动删除 DLL。无法猜测会发生什么。尝试在构建后使用 attrib.exe 使文件只读。应该有什么了不起的!当执行此操作的任何程序都无法再删除该文件时。
-
DLL 在停止调试后不会被删除,相反它们是存在的。但是当我再次开始调试时,它们将被删除。如果我在 DLL 上添加只读,那么一切正常,文件不会被删除。但是在重建 VS 时无法删除它们,即 无法删除文件“D:\project\source\Branch-AT\unmanaged.dll”。拒绝访问路径“D:\project\source\Branch-AT\unmanaged.dll”。
标签: visual-studio visual-studio-2012