【问题标题】:Is it possible when building a solution to cause msbuild to output the name of the currently built project?构建解决方案时是否有可能导致 msbuild 输出当前构建的项目的名称?
【发布时间】:2010-12-15 09:49:18
【问题描述】:

我在一个解决方案中有几个项目,我在安静模式 (/v:q) 下使用 msbuild 构建这些项目。 然而,这对我来说太安静了。我希望它打印当前构建的项目的名称。因此,如果 A.sln 包含 1.csproj、2.csproj 和 3.csproj,那么 msbuild A.sln 应该打印如下内容:

1

2

3

谢谢。

编辑:

当且仅当 msbuild 在安静模式下运行时,我还想打印已构建项目的名称。在所有其他模式下,此打印输出完全是多余的。

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    您可以尝试将以下内容添加到您的构建脚本中。

    <Target Name="BeforeBuild">
    <Message Text="$(MSBuildProjectName)" Importance="High"/>
    </Target>
    

    【讨论】:

    • 很遗憾,在安静模式下运行 msbuild (/v:q) 时看不到该消息
    • 你是对的。看来,MSBuild 在安静模式下拦截所有 STDOUT 和 STDERR 输出 - 通过 调用 echo 也不会产生任何结果。我建议您考虑切换到“最小”模式。
    • 最小冗长级别有两个问题 - 1.仍然太冗长 2.输出是连续的,很难看出一个项目何时结束,下一个项目何时开始。如果我可以抑制所有默认输出并只打印项目名称,那就是它。
    • 以某种方式对输出进行后处理可能是有意义的,例如,将其提供给 grep 并过滤掉所有不需要的行。
    【解决方案2】:

    尝试 /v:m[初始]。这将在编译后输出每个项目及其输出文件名。

    【讨论】:

    • 不完全。构建项目涉及访问相当多的辅助目标,其中一些是实际构建的。在项目编译期间构建的每个目标都在最小详细度构建中获得其输出份额。这对我来说仍然太冗长。我只想要项目名称,就是这样。
    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2011-12-24
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多