MSBuild现在是Visual Studio中所有受支持语言的构建引擎。我想开始利用该系统,以简化我已经塞进构建前和构建后脚本的大量逻辑。
为此,我必须手动编写MSBuild脚本,因为我希望在一个文件中有多个目标。即我希望能够只输入“msbuild myproject.msbuild”,让整个作品从头开始构建,就像我可以用,比方说,make。
但是,我宁愿避免为Visual Studio维护完全独立的“项目”文件,因为它现在无论如何都建立在MSBuild之上。
我有办法做到这一点吗?
答案 0 :(得分:1)
我的建议是将所有目标整合到一个可由所有项目共享的公共区域,并从标准项目中调用这些目标。
<!-- Your normal projects -->
<Import Project="..\Library\Common.Targets" />
<Target Name="BeforeBuild">
<CallTarget Targets="Common_BeforeBuild_DoFoo" />
</Target>
...
<!-- Library\Common.Targets -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Common_BeforeBuild_DoFoo">
...
</Target>
</Project>
这也应该适用于您可能想要添加的自定义任务,尽管我们最终使用类似于MSBuild Community Tasks将自身集成到MSBuild中的方法,它是开源的,因此您可以看到他们是如何做到的虽然这对你的要求可能有点过分,但除非绝对必要,否则我可能不会再这么做了。
答案 1 :(得分:1)
另外,如同其他人所建议的那样,将常用逻辑分解为常用导入的目标,您可以创建一个“主”项目来构建其他目标,例如,
的例子http://msdn.microsoft.com/en-us/library/z7f65y0d.aspx
显示如何使用<MSBuild>
任务在其他项目上调用MSBuild(虽然我不清楚每个'sub MSBuild'是否共享其依赖性分析)。
答案 2 :(得分:0)
至少在C#中,没有理由不添加其他目标甚至是项目组。我只是试试看看会发生什么。
当然,您将无法使用Visual Studio项目设计器编辑此类目标。