0

我使用添加现有文件在项目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 跳过 ==========

因为项目中没有任何变化。当我运行应用程序时,我得到了同样的异常。

4

1 回答 1

0

虽然这已经很老了,但我偶然发现了同样的问题并找到了以下解决方案:只需将所有“删除”的 dll 复制到 VS 中的当前项目,然后在创建该项目时复制它们。因此,在您的情况下,您只需打开项目 OldTesters,单击非托管 dll,复制然后将其粘贴到其他项目的项目中。

于 2018-10-12T08:36:42.990 回答