VS2010从副参考“复制到输出”

时间:2013-06-05 14:15:23

标签: visual-studio-2010 build

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

我看过Dependencies of references not copied to output directory,但这是指项目参考,所以我想知道我的案例中是否有解决方案。

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

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

1 个答案:

答案 0 :(得分:0)

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