什么是MSBuild相当于ant的-project-help?

时间:2010-05-13 19:11:12

标签: msbuild

我来自蚂蚁背景,我开始使用msbuild。我想创建一个包含clean,compile,deploy等目标的.proj文件。在ant中,我希望我的用户可以运行ant -project-help来获取带有描述的目标列表。 msbuild似乎没有这样的东西,所以我想把DefaultTargets设置为“Help”并添加这个目标:

<Target Name="Help">
  <Message Text="/t:Clean - Remove all bin folders and generated files"/>
  <Message Text="/t:Compile - Generate assembly"/>
  <Message Text="/t:Deploy - Install the assembly"/>
</Target>

当我运行msbuild时,我看到了:

Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3053]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 5/13/2010 9:00:00 AM.
Project "C:\MyProject\MyProject.proj" on node 0 (default targets).
  /t:Clean - Remove all bin folders and generated files
  /t:Compile - Generate assembly
  /t:Deploy - Install the assembly
Done Building Project "C:\MyProject\MyProject.proj" (default targets).


Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:00.05

我的目标描述隐藏在所有其他输出中。

感觉我在这里有一个范式不匹配。提供我想要的构建功能的最佳方法是什么,以便用户知道在哪里找到每个目标?

1 个答案:

答案 0 :(得分:1)

我担心没有干净的方法去做你想做的事。创建默认帮助目标是一个好主意。

要获得更清晰的输出,您可以将Importance任务的Message属性设置为high,以使您的信息更加突出。

<Target Name="Message">
    <Message Text="/t:Clean - Remove all bin folders and generated files" Importance="high"/>
    <Message Text="/t:Compile - Generate assembly" Importance="high"/>
    <Message Text="/t:Deploy - Install the assembly" Importance="high"/>
</Target>

您还可以使用以下参数运行MSBuild来清理输出:

msbuild [ProjectFile.proj] /v:m /nologo

您将获得此输出:

  /t:Clean - Remove all bin folders and generated files
  /t:Compile - Generate assembly
  /t:Deploy - Install the assembly