如何在命令行中使用MSBuild构建所有内容?

8

这个有效吗?

MSBuild /t=all /configuration=all

我想使用Visual Studio 2008中的MSBuild命令行构建sln文件中所有项目的所有配置。我不想在调用MSBuild时指定它们,因为sln/proj文件都包含这些信息。如果我向项目文件添加配置,我不想更改我的构建脚本。
因此,对于目标,我可以使用BuildAll。如果我将配置留空,它会构建所有内容,还是"BuildALL"也适用于配置?
编辑
本质上,我的问题是,在给定SLN或VCProj文件的情况下,我希望msbuild迭代所有配置并自行构建它,或者使用某种机制发现它们,以便我不必在命令行或脚本中具体列出它们。
也就是说,当我添加或删除配置时,我不想更新我的构建脚本。这似乎是一个非常合理的需求。

2
了解不想每次添加配置时更新构建脚本的情况,但实际上,你会这样做多少次?我只是会编写一个调用所需目标的目标。 - John Weldon
1
另一个问题是我想只使用相同的命令/批处理文件,并将其提供给我拥有的所有sln文件。我想为它们使用相同的批处理文件。我很懒 - 我不想一个个地输入它们。 - Tim
1个回答

13

默认情况下,您无法使用MSBuild命令行选项构建所有配置。为了做到这一点,您需要创建一个新的目标(VS项目)。

我通常的做法是:

msbuild /t:BuildAll /p:Configuration:"Debug;Release;ContinuousIntegration"

我创建了一个标准目标,称之为BuildAll,并且对于我想要自动化的每个项目,我只需创建该目标并使其依赖于您想要自动构建的所有目标。

谢谢。我还有其他配置,例如静态库与动态库等。 - Tim
1
在Visual Studio的后续版本中,您可能需要将=替换为: - kayleeFrye_onDeck
3
命令行开关/Configuration是否正确?当我指定这个开关时,msbuild总是会抱怨“MSBUILD:错误 MSB1001:未知开关。开关:/Configuration”。 - zhenguoli
1
“/Configuration” 应该改为 “/p:Configuration”。 - Shreyas Murali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接