在 Command Line 中运行 Visual Studio

BuildConsole.exe 位于 Incredibuild 安装文件夹,是一个 console 应用程序,您可以利用它从命令行运行分布式 Visual Studio 构建。

要运行 BuildConsole.exe,需要运行:

BuildConsole <Target> [可选]

下列任一选项均可作为 <Target>

  • 转到 Visual Studio 解决方案 (.sln file) 的路径

  • 转到 Visual Studio (.vcproj/.icproj/.vcxproj file) 的路径

在构建特定项目时,BuildConsole 命令不会强制您将 .sln 文件作为构建命令的一部分。但不建议省略 .sln 参数。项目文件中可能缺少某些 Incredibuild 用以正确编译项目的信息。在 Incredibuild 的 BuildConsole 命令中添加了一个 /VsVersion 标志,便于您指定 Incredibuild 用以构建项目的 Visual Studio 版本。

示例:

  • 如需在 MySln.sln 解决方案中重新构建 Debug|Win32 解决方案配置:

    BuildConsole.exe MySln.sln /rebuild /cfg="Debug|Win32”

  • 如需针对 Debug|Win32Release|Win32 解决方案配置,在 MySln.sln 解决方案中仅构建 Proj1 项目:

    BuildConsole.exe MySln.sln /build /prj=Proj1 /cfg="Debug|Win32,Release|Win32"

  • 如需构建更复杂的项目与配置组合,请使用之前保存在 Batch Build 对话框中的 MyPreset 预设:

    BuildConsole.exe MySln.sln /build /preset="MyPreset"

除此语法之外,BuildConsole 还支持 msdev.exedevenv.exe 命令行语法,用于构建项目。如果您已在使用那些用于生成 msdev.exedevenv.exe 的批处理文件,请将标准 MSVC 构建替换为 Incredibuild 分布式构建,方法是编辑您的文件并将这些程序名称替换为 BuildConsole.exe

除非您拥有 Incredibuild 企业帐户,否则一台启动机器一次只能执行一个构建。否则,在构建正在运行时尝试运行另一构建,会导致构建暂停,直至当前构建结束运行。即当前构建结束运行后,新构建才会开始运行。

说明:如果您在运行 BuildConsole /command 时遇到此错误:BuildConsole 未识别为内部或外部命令,也未识别为可运行的程序或批处理文件。,您可以选择手动将 Incredibuild 安装文件夹添加到系统路径,也可以在您的机器上重新运行 Incredibuild 安装应用程序,只需确保此选项已选中:将 Incredibuild 文件夹添加到系统路径

命令行选项

选项 功能 备注

@

指定一个包含 BuildConsole 命令行的响应文件。

当用于运行 BuildConsole 的命令行太长,以致无法在脚本中对其进行明确指定时,请使用此选项。

/All

用于继续进行解决方案/工作区构建,即便特定项目构建失败。

默认情况下,当项目无法构建其输出文件时,Incredibuild 会停止相关构建。使用此选项,Incredibuild 将会继续构建剩余项目配置,即便先前项目未能构建。

/Attach

显示当前或上次构建的构建输出。

如果某一构建当前正在机器上运行,使用此选项将显示截至当前位置的构建输出,并且将继续显示直至构建输出结束。如果当前没有正在运行的构建,BuildConsole 将会显示最后一次在此机器上启动的构建的全部输出。

/AvoidLocal=[On/Off]

覆盖 Agent Settings 对话框中的 Avoid task execution on local machine when possible 选项。

必须设定一个值(ON 或 OFF)。

/Beep

在完成构建时播放声音。

 

/BrowseInfo=[ON/OFF]

无论当前具有何种信息浏览设置,均强制创建或禁止创建浏览信息。

如需了解有关信息浏览设置的更多信息,请参阅 Agent Settings

/CEconfig="<configuration name>"

为 eMbedded Visual C++ 4.0 构建指定 WCE 平台。

适用于 VS 2008 或更早版本。

/Cfg=<configuration>

确定所需构建的解决方案配置。(在 VC6 构建中,此选项指定了项目配置。)

  • 应将该值括入引号。

  • 可以指定若干以逗号分隔的配置名称。

  • 在构建 MSVC 6.0 项目时,以下两种格式均有效: /cfg="Win32 Debug" 和 /cfg="myProj - Win32 Debug"

  • 该值不区分大小写。

/cl_add="<options>"

允许将其他编译器选项添加到对 cl.exe 的所有调用中。

输入一个或多个命令,并以空格字符分隔。这些命令将出现在 cl.exe 命令行中。

示例:BuildConsole MyProj /cl_add="/O2 /FA"

/cl_rem="<options>"

指定将从所有属于 cl.exe 的调用中移除的编译器选项。

输入一个或多个命令,并以空格字符分隔。这些命令将出现在 cl.exe 命令行中。

示例:BuildConsole MyProj /cl_rem="/Z7 /Zd /Zi /ZI"

/Clean

清理与项目及所有依赖项相关的中间文件和输出文件。

 

/compile=<source file name>

使用此选项时,仅构建指定文件。

  • 可用引号将值括入。

  • 可输入多个源文件名,并以逗号分隔。

/Disable

禁用 Incredibuild Agent。

 

/DisablePdbForwarding

对此构建禁用 PDB 转发机制。

仅适用于 Visual Studio 2010 构建。

/DumpSourceFiles=filename

将项目/解决方案中的所有源文件路径写入文件。

<output filename> 为必填项。

/Enable

启用 Incredibuild Agent。

/Help

显示使用帮助和版本信息。

/IncrediLink

将此构建强制设为 IncrediLink 模式

适用于 VS 2008 或更早版本。

/IntelCLVersion="<version>"

覆盖默认的 Intel Compiler 版本。

适用于 VS 2008 或更早版本。

示例:/IntelCLVersion=11.1

/link_add="<options>"

允许将附加 linker 选项添加到所有属于 link.exe 的调用。

输入一个或多个命令,并以空格字符分隔,这些命令将出现在 cl.exe 命令行中。

示例:BuildConsole MyProj /link_add="/map:MyProj.map"

/link_rem="<options>"

指定将从所有属于 link.exe 的调用中移除的连接器选项。

适用于 VS 2008 或更早版本。

输入一个或多个命令,并以空格字符分隔,这些命令将出现在 cl.exe 命令行中。

示例:BuildConsole MyProj /link_rem="/map:MyProj.map"

/Log[=filename]

将构建输出写入文件。

如果未能输入文件名,则会在当前目录中创建一个名为 Ib_<target-name>.log 的文件。

/LogLevel="<Level>"

覆盖该构建的日志记录级别。

<Level> 可为以下选项之一: MinimalBasicIntermediateExtendedDetailed

/MaxCPUS=<n>

覆盖构建设置中全局最大 CPU/核心数量。

/MaxWinVer="<Version>"

指定分配到此构建的远端 Agent 所需的最新操作系统。

不会将具有更新操作系统的 Agent 分配给此构建。可用值包括:XP2003VISTA2008710

/MinWinVer="<Version>"

指定分配到此构建的远端 Agent 所需的最早操作系统。

不会将具有更旧操作系统的 Agent 分配给此构建。可用值包括:XP, 2003, VISTA20087, 810

/Mon[=filename]

将构建进程(.ib_mon)文件的副本写入指定位置。

  • 如果仅提供了文件夹名称,Incredibuild 将会为文件名生成 GUID。

  • 一条包含已存 .ib_mon 文件位置的消息将添加到构建输出末尾。

/msbuildargs="/myarg1 /myarg2"

使用 BuildConsole /command /usemsbuild 开关时,可将附加参数传递给 MSBuild。

例如:

BuildConsole dcom.sln /rebuild /cfg="debug|win32" /msbuildargs="/detailedsummary" /usemsbuild

/NO_DOTNET_VIRT

在 Helper 机器上禁用 .NET 环境虚拟化功能。

在命令行中指定此交换机时,该交换机将向 Incredibuild 发出指令,不允许将 Initiator 机器的 .NET 环境虚拟化为 Helper 机器。添加此交换机是为了解决混合 OS 环境中的 .NET 不兼容问题。

/NoIncrediLink

对此构建禁用 IncrediLink 模式。

适用于 VS 2008 或更早版本。

/NoLink

执行除连接之外的所有构建步骤。

适用于 VS 2008 或更早版本。

/NoLogo

抑制构建输出中所含“Incredibuild”标头。

/NoRecurse

仅构建指定的项目配置,忽略这些配置可能具有的子项目。

  • 当与 /Clean 一起使用时,该选项只清除指定配置。

  • /Rebuild 结合使用时,该选项仅重新构建指定配置。

/NoWait

进行指定后,如果由此 Agent 启动的另一构建已在运行,则 BuildConsole 将退出并显示此消息:Another build already running

/OpenMonitor

打开用于显示构建进度的 Build Monitor 窗口。

/out=filename

将完整命令行输出重定向到文件。

/pemode

重写 Agent 预测执行设置。

/pemode=0 disables predictive execution

/pemode=2 fully enables predictive execution

/pemode=1 enables predictive execution for rebuilds only

/Preset

确定将使用先前保存在 Batch Build dialog 中的 Preset 构建的项目/配置。

  • 此选项有助于构建复杂的项目与配置组合。

  • /Preset 命令选项将替换 /cfg/prj 选项。

/Prj=<project name>

确定要构建的项目。

  • 可将该值括入引号。

  • 如果在没有 /prj 选项的 .sln 文件中运行 BuildConsole,则命令将会在特定解决方案配置中运行。

  • 在指定项目名称时,“*”和“?”字符可用作通配符,以便对多个项目执行操作。

  • 此外,可输入多个项目名称,以逗号分隔。在这种情况下,所有项目均以同一配置名称构建。

  • 例如,要在解决方案/工作区中构建所有配置,请使用以下语法:BuildConsole MyWksp /prj="*"

/QueryLicense

显示有关有效许可证、已分配程序包和维护到期日的信息。

/QueryPackage="<Package>"

检查特定 Incredibuild 扩展包是否已分配至 Agent,并将退出代码设置为 0(已分配)或 1(未分配)。

<Package> 可以是 VCC#BuildToolsDevToolAccXGEXbox OnePlayStationCafe3DSKlocWorkProCoverity。此外,还支持以下核心包:4Cores8Cores12Cores16Cores24Cores32Cores48Cores64Cores

/Rebuild

在构建项目之前执行 Clean 操作。

多次使用 /SETENV 以设置/覆盖多个变量。

/Reset

清除代理文件的缓存内容。

/SETENV="<name>=<value>"

为构建运行环境设置或覆盖环境变量。

/ShowAgent

显示用于构建各个文件的 Agent。

/ShowCmd

为所构建的各个文件显示 Incredibuild 用于构建文件的命令行。

/ShowTime

显示所构建的各个文件的 Start 和 Finish 时间。

/Silent

不向标准输出写入任何内容。

默认行为即写入构建结果,见于 Build Monitor 的 Output 显示。

/Stop[=<build-id>] 停止当前在本地机器上运行的构建。如果多于一个构建正在运行,请提供 <build-id>。 构建被停止时,IBConsole 将返回代码 3。如果使用了 /stop 且当前无构建运行,则返回代码 2。
/StopOnErrors 进行指定后,只要发生错误就会停止执行。

/StopAll

停止所有当前正在运行的构建。

 

/Title=<build title>

指定将显示于构建输出文本开头的自定义标题行。此标题也将用于 Build History 和 Build Monitor 显示。

可用引号将值括入。

/UseEnv

使用 PATH、INCLUDE、LIBPATH 和 LIB 环境变量而非 MS Visual C++ IDE 路径。

  • 要全局设置此选项,请使用 Agent Settings 对话框 > Visual Studio Builds > AdvancedUse environment variables instead of IDE paths 选项。

  • 如果某一构建是通过使用 devenv.exe "/useenv”命令行选项从实例化的 Visual Studio IDE 窗口启动的,则此构建将始终使用"/useenv"

/UseIDEMonitor

使用此选项,从 Visual Studio IDE 运行 BuildConsole 时,集成的 IDE Build Monitor 可显示构建进度。

/UseMSBuild

强制使用 MSBuild。

默认情况下,Incredibuild 会使用 Devenv 执行构建。Incredibuild 可借助此交换机使用 MSBuild。MSBuild 可借助 /msbuildargs 启用添加特定 MSBuild 标志选项,如下所示。

将自动为 VS 2022 及更高版本使用 64 位 MSBuild,为早期 VS 版本使用 32 位 MSBuild。

如需忽略此自动检测并手动指定要使用的版本,请添加 = 32 或 = 64(例如 /usemsbuild=32)

/VsVersion="<Version>"

强制使用特定版本的 Visual Studio 工具集。

<Version> 可以是以下其一:vc8(用于 VS2005)、vc9(用于 VS2008)、vc10(用于 VS2010)、vc11(用于 VS2012)、vc12(用于 VS2013)、vc14(用于 VS2015)、vc15(用于 Vs2017)和 vc16(用于 VS2019)。

/Wait

如果由此代理启动的另一构建当前正在运行,请等待该构建完成,然后再开始新构建。此亦为默认行为。

Return Codes

  • 0 – 构建成功且没有出现错误

  • 1 – 由于与 Incredibuild 无关的错误(例如编译错误),构建失败。

  • 2 – 通过用户请求取消构建

  • 3 – 由于 Incredibuild 系统错误构建失败