如何使用 MSBuild.rsp 或以其他方式指定默认的 Visual Studio MSBuild.exe 命令行开关

如何使用 MSBuild.rsp 或以其他方式指定默认的 Visual Studio MSBuild.exe 命令行开关

我希望 MSBuild.exe 始终使用/MP选项,以便项目始终使用多个核心构建。我尝试将 /MP 添加到我的MSBuild 配置文件(与 MSBuild.exe 可执行文件位于同一目录中)。但是未使用 /MP 选项。如何让 Visual Studio 始终使用 /MP 选项?

MSBuild 配置文件描述了我想要使用的行为,但我还无法让它工作:

自动响应文件是一个特殊的 .rsp 文件,MSBuild.exe 在构建项目时会自动使用。此文件 MSBuild.rsp 必须与 MSBuild.exe 位于同一目录中,否则将无法找到。您可以编辑此文件以将默认命令行开关指定给 MSBuild.exe。例如,如果您每次构建项目时都使用相同的记录器,则可以将 /logger 开关添加到 MSBuild.rsp,MSBuild.exe 将在每次构建项目时使用该记录器。

我重新启动了计算机,以验证 MSBuild.exe 没有以某种方式使用先前版本的 MSBuild.rsp。

我通过检查 Windows 任务管理器中的“打开文件位置”验证了我正在修改与 MSBuild.exe 位于同一目录中的 MSBuild.rsp。项目配置 MP 选项为空白(未明确禁用)。

我通过执行“仅项目”重建并在 Windows 任务管理器中仅计算一个 cl.exe 实例来确认 MSBuild.rsp 中的 /MP 选项未被使用(如果我使用手动设置的 /MP 选项进行相同重建,则会有超过 10 个 cl.exe 实例)。

我还尝试向 MSBuild.rsp 中添加一堆垃圾,但 Visual Studio 没有报告任何错误或警告,这让我认为 MSBuild.rsp 根本没有被使用。

我尝试启用 MSBuild 的诊断输出日志记录,当我在项目的配置设置中明确启用它时,它会显示 /MP 选项(作为 Tracker.exe 的参数),但如果我在项目的配置中将 MP 选项留空,而只是将其包含在 MSBuild.rsp 中,则 /MP 选项不会包含在此输出中。我不知道 Tracker.exe 是什么(我希望在它的位置看到 MSBuild.exe)。我还尝试在与 Tracker.exe 相同的目录中添加一个带有 /MP 的 Tracker.rsp 文件,但这也无济于事(我还尝试将 MSBuild.rsp 添加到我的 Tracker.exe 目录中,但这也没有影响)。

为了查看 rsp 文件是否能正常工作,我明确将带有 @ 选项的 rsp 文件添加到我的项目配置设置中,它确实在诊断构建输出中的 /MP 选项中显示为正在加载,但它没有任何效果。/MP 选项稍后作为 cl.exe 的参数包含在内,而不是作为 Tracker.exe 的参数包含在内,就像在项目配置中指定 MP 选项时一样。我认为选项应该是 MSBuild(或者我猜是 Tracker.exe),而不是 cl.exe。

我正在使用 Visual Studio 2010,其中主要有 C++ 项目。

答案1

您可以做的一件事是将其放在 props 文件中,并让您的个人项目从该文件继承。在ItemDefinitionGroup您的内部,ClCompile您将拥有<MultiProcessorCompilation>true</MultiProcessorCompilation>

相关内容