是否可以在Visual Studio中使用MSBuild作为“项目文件”?

时间:2010-07-13 02:41:17

标签: visual-studio msbuild

MSBuild现在是Visual Studio中所有受支持语言的构建引擎。我想开始利用该系统,以简化我已经塞进构建前和构建后脚本的大量逻辑。

为此,我必须手动编写MSBuild脚本,因为我希望在一个文件中有多个目标。即我希望能够只输入“msbuild myproject.msbuild”,让整个作品从头开始构建,就像我可以用,比方说,make。

但是,我宁愿避免为Visual Studio维护完全独立的“项目”文件,因为它现在无论如何都建立在MSBuild之上。

我有办法做到这一点吗?

3 个答案:

答案 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项目设计器编辑此类目标。