0

我有 3 个 C# 项目,A(WPF 应用程序)、B(类库)和 C(类库),因此 A 引用 B,B 引用 C。项目 C 需要通过 P 从 C++ DLL 调用一些本机方法/调用。我将本机 DLL 添加到 C# 项目中,并将它们标记为“复制到输出目录”。当我构建我的解决方案时,本机 DLL 显示在项目 B 和 C(正确)的输出目录中,但不是项目 A。是否有项目设置允许最终引用项目 C 的任何项目复制这些(即使不是直接)?还是我只需要在项目 A 上发布构建事件以将此文件复制到我的应用程序输出文件夹?

我看过未复制到输出目录的引用的依赖关系,但这是指项目引用,所以我想知道在我的情况下是否有解决方案。

我还考虑过将本机 DLL 作为资源嵌入并修改我的 DLLImport,就像在这篇 MSDN 文章中一样:http: //msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.dllimportattribute.aspx。但是我收到了一个 E_ACCESSDENIED 错误(我也看到其他人也有同样的问题,以及在将 DLL 提取到磁盘时触发防病毒行为的一些担忧)。我还注意到文章提到了链接资源,而不是嵌入它。这是我需要作为 MSBuild 任务而不是通过某些项目属性执行的操作吗?

最坏的情况是,我可以在我的 WPF 应用程序中添加一个构建后事件来复制本机文件,但如果 Visual Studio 能够识别应该复制这些文件,那就太好了。

4

1 回答 1

0

我通过自定义调试/发布模式编译的输出(在项目属性窗口上)解决了这个问题,以便我的所有项目都输出到同一个文件夹......就像 ASP.NET 应用程序在所有 DLL 中的发布方式一样单个 /bin 文件夹。这解决了我的问题。

于 2013-06-05T14:25:20.710 回答