VS/MSBUILD:复制子项目的输出文件,不添加对exe的引用

Posted

技术标签:

【中文标题】VS/MSBUILD:复制子项目的输出文件,不添加对exe的引用【英文标题】:VS/MSBUILD: Copy output files of sub-project without adding reference to exe 【发布时间】:2012-05-17 22:41:59 【问题描述】:

我有一个解决方案,它由主应用程序MainProject 和几个插件项目Plugin1Plugin2 等组成。它们每个都构建在 Visual Studio 中的一个单独项目中。

为了构建解决方案,我希望将插件的所有文件复制到主应用程序的输出目录中。但我不希望 MainProject.exe 包含对插件 dll 的显式引用(它们是动态加载的)。因此为MainProject定义项目引用不起作用。

我可以使用构建后步骤“手动”复制文件(如C# - Copy dlls to the exe output directory when using dependency injection with no references? 中所述),但由于每个插件可能有多个文件,而且它们也会不时更改,所以这个解决方案相当乏味维护(特别是因为我确实有不同的构建配置,它们每个都产生不同的文件)。此外,我想轻松选择应该为某个构建复制哪些插件。

执行此操作的最佳方法是什么,可能涉及自定义 MSBuild 配置更改?

【问题讨论】:

你有没有找到一个好方法来做到这一点?我认为如果有人为 VS2012 编写了一个不错的插件,并附带了一个自定义的 MSBuild 步骤,这将是非常务实和令人敬畏的! 【参考方案1】:

查看此链接:http://msdn.microsoft.com/en-us/library/bb629394%28v=vs.100%29.aspx 在主项目上调用 MSBuild 时,如果您可以传递以下内容:

msbuild /p:CustomBeforeMicrosoftCommonTargets=[your custom msbuild file];PluginList=PathToPlugin1.csproj,PathToPlugin2.csproj

在您的自定义 msbuild 文件中,GatherInfo 等目标将为您提供每个插件项目的输出文件的路径。请参阅此问题以获取示例:https://***.com/questions/23346782/how-to-identify-files-needed-to-build-a-wix-project

【讨论】:

以上是关于VS/MSBUILD:复制子项目的输出文件,不添加对exe的引用的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework:在没有子项目的情况下拆分多个文件中的路径

如何更改介子子项目的输出目录?

sbt:子项目的动态聚合

如何在具有多个子项目的 SBT 项目中覆盖子项目中的设置

项目和子项目的 Cocoapods

使用来自 Xcode 4 子项目的静态库和捆绑产品