如何在Visual Studio中从解决方案中运行一个特定项目的干净构建

58

假设我需要在命令行中构建一个整个解决方案(其中包含多个项目),是否可以对特定的项目运行清理构建并对其余项目进行增量构建?

谢谢。

4个回答

120
使用msbuild并传递Clean和Rebuild目标:
msbuild path\to\solution\yoursolution.sln /t:Clean;Rebuild

或者,如果您只想重新构建单个项目:

msbuild path\to\project\yourproject.csproj /t:Clean;Rebuild

MSBuild可以在Windows SDK或Visual Studio命令提示符中使用。


1
是的,您可以通过指定项目文件而不是解决方案来实现。请参见我的更新答案。 - jrummell
4
MSBuild是包含在.NET Framework中的,您不需要安装SDK来使用它。 - Sayed Ibrahim Hashimi
1
如果解决方案为依赖项目定义了某些非默认配置,则此方法无效。 您不能只调用msbuild myproject.vcxproj,而是需要使用像msbuild mysol.sln /t:myproject这样的解决方案。 不幸的是,这似乎与“重建”目标不配对。 - chtenb
1
在官方文档中他们没有指定“/t”,这是什么?只是好奇... - Harry
1
@Haris /t/target 开关的简写。https://msdn.microsoft.com/zh-cn/library/ms164311.aspx#Switches - jrummell
显示剩余4条评论

14
MSBuild.exe MultiProjectSolution.sln /t:"ProjectName:clean"

只会清理你解决方案中指定的项目。


2
谢谢!这也有效,并且它会清理目标项目名称所依赖的所有项目,但不会清理其他项目。 - David Fahlander

5

针对在PowerShell中使用的小改进:

pathTo\MSBuild.exe pathTo\solutionfile.sln /target:"clean;Build"

不同目标的源代码


3
清理特定项目:
msbuild MyProjectFile1 /t:Clean
msbuild MyProjectFile2 /t:Clean
...

这个操作需要针对所有需要清理的项目都进行重复,因为MSBuild只接受单个项目作为命令行参数。

增量构建整个解决方案:

msbuild MySolutionFile

请注意,这将为项目和解决方案构建默认配置/平台,通常为Debug / AnyCPU或Debug / Win32。如果您想要特定的配置/平台,则必须像这样添加参数:/p:Configuration = Release /p:Platform = x64 到每个MSBuild命令行。


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