【问题标题】:How to detect (or log) if MSBuild is skipping a project because it is up-to-date?如何检测(或记录)MSBuild 是否因为项目是最新的而跳过项目?
【发布时间】:2013-09-14 07:44:55
【问题描述】:

在 Visual Studio 中,您会在每次构建后获得一份报告,其中列出了它跳过的项目,因为它们是最新的。你可能会得到这样的东西。

========== 构建:11 成功,0 失败,59 最新,0 跳过 ==========

虽然使用 MSBuild(命令行),但我似乎无法做到这一点。我能做的最好的事情是解析单独跳过的目标的日志文件(这样做会很烦人),但即便如此我也不知道项目是否被跳过。如果 Visual Studio 做到了,我假设它是可行的。我就是想不通。

谢谢

【问题讨论】:

    标签: logging visual-studio-2012 build msbuild projects-and-solutions


    【解决方案1】:

    有两个选项可以构建和重新构建。 RE-BUILD 将满足您的需求。

    基本的命令语法是

    msdev FileName [/MAKE "ProjectName – ConfigName | ALL"] [/REBUILD /CLEAN /NORECURSE /OUT LogFile /USEENV]
    

    其中 FileName 是您的项目 (.dsp) 或工作区 (.dsw) 文件的名称。 例如,以下语法删除所有中间文件,然后构建一个名为 MyProject 的项目:

    msdev MyProject.dsp /MAKE "MyProject – Win32 Debug" /REBUILD
    

    来源:http://msdn.microsoft.com/en-us/library/aa699274(v=vs.60).aspx

    用于记录:

    1. 在“工具”>“选项”>“项目和解决方案”>“VC++ 项目设置”>“构建时序”中启用构建时序它实际上以 PerformanceSummary 标志启动 msbuild
    2. 如果您对整个构建的运行时间感兴趣 2.1将工具>选项>构建和运行> MSBuild项目构建输出详细程度至少更改为正常。 (在这种情况下,它只记录到输出窗口)

    我希望将其存储到构建日志文件中,同时更改工具 > 选项 > 构建和运行 > MSBuild 项目构建日志文件的详细程度至少为正常。 每个 vcxproj 文件的构建都记录到 Project > Properties >Configuration Properties >Build Log File

    中指定的文件中

    如果您在点击构建命令后没有看到任何时间,可能是因为您的项目是最新的(没有任何更改) - 由 msbuild 的增量构建功能检测到。

    【讨论】:

    • 这似乎是 C++ probjects 和解决方案的全部。我正在使用 C# 和 .sln 文件以及 csproj 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多