我有 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 能够识别应该复制这些文件,那就太好了。