【问题标题】:NMake - "Clean Command Line" property on clean build/rebuildNMake - 干净构建/重建的“干净命令行”属性
【发布时间】:2018-11-15 02:56:00
【问题描述】:

我有一个 NMake 项目,它在“清洁命令行”中设置了命令属性 删除项目的/Release 文件夹中的所有内容。

我正在使用 TFS 的选项进行 clean 构建,它执行 /t:clean 作为 MSBuild 参数。

问题是当 TFS 第一次尝试删除 /Release 文件夹的内容时,既没有这样的文件夹也没有文件,它会出错并破坏构建。

有什么方法可以在不破坏构建的情况下传递此错误,或者检查文件夹是否存在以便传递或删除内容?

谢谢!

编辑:在项目的属性上有一个标签 <NMakeCleanCommandLine> 有 Condition 参数,但我不知道如何使用它?

【问题讨论】:

    标签: visual-studio tfs msbuild nmake


    【解决方案1】:

    在TFS端,可以在clean任务前添加Powersell task,检查/Release文件夹是否存在,如果存在则运行clean任务,如果不存在则跳过clean任务。

    【讨论】:

    • 感谢您回复我!实际上,我已经设法通过从项目属性 Clean Command Line 检查发布文件夹,使用 $(MSBuildProjectDirectory) 作为相对路径来解决这个问题。命令是:IF EXIST "$(MSBuildProjectDirectory)\Release\" del "$(MSBuildProjectDirectory)\Release\*.*" 可以决定使用 $(Configuration)\$(Platform)" 来覆盖不同的项目构建配置选项
    • 清洁构建是 TFS 提供的一个选项,但我认为它与构建后清洁有关,另一方面 MSBuild 步骤有参数 /t:clean /t:rebuild,因此我想出了解决方案以上似乎更合适,再次感谢!
    【解决方案2】:

    我实际上已经通过检查项目属性Clean Command Line 参数是否存在\Release 文件夹(使用$(MSBuildProjectDirectory) 作为相对路径)来解决此问题。

    那么命令是:

    IF EXIST "$(MSBuildProjectDirectory)\Release\" del "$(MSBuildProjectDirectory)\Release\*.*"

    人们可以决定使用$(Configuration) 而不是\Release 来定位构建配置。

    【讨论】:

    • 准确地说,使用:IF EXIST "$(MSBuildProjectDirectory)\$(Configuration)\$(Platform)" del "$(MSBuildProjectDirectory)\$(Configuration)\$(Platform)"
    猜你喜欢
    • 2011-10-10
    • 2015-03-12
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多