我来自蚂蚁背景,我开始使用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
我的目标描述隐藏在所有其他输出中。
感觉我在这里有一个范式不匹配。提供我想要的构建功能的最佳方法是什么,以便用户知道在哪里找到每个目标?
答案 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