从命令行在解决方案中仅构建一个项目

时间:2011-04-05 20:26:52

标签: c# visual-studio msbuild

我有一个包含大量解决方案文件夹的解决方案,里面有很多c#项目。

如何从命令行中仅构建/重建其中一个项目?

我想有一些方法可以使用msbuild来做,但我对msbuild一无所知。

谢谢!

4 个答案:

答案 0 :(得分:87)

给定一个包含项目的解决方案文件,并且您希望构建/重建一个项目。

MSDN上的这个网页准确列出了您必须做的事情:

http://msdn.microsoft.com/en-us/library/ms171486.aspx

给定一个带有项目的解决方案文件mysolution.sln:

  • foo.vcxproj
  • bar.vcxproj
  • baz.vcxproj

他们都以自下而上的顺序相互依赖。因此baz最独立,bar取决于bazfoo取决于bar

如果你想构建foo,那么你可以:

MSBuild mysolution.sln /target:foo

此处的其他答案没有考虑依赖关系。当然msbuild.exe将构建一个项目文件(即foo.vcxproj),但如果还没有构建bar和baz,它将会失败。为了构建多个项目并首先构建独立项目,您必须传入解决方案文件(毕竟OP确实提到这是解决方案文件的一部分)。然后传入项目名称和由冒号分隔的目标。

MSBuild mysolution.sln /target:foo:Rebuild

这里有很大的假设。我假设项目名称$(ProjectName)与文件名匹配。

修改(来自comment:如果项目名称中恰好有点(。),则需要用下划线(_)替换它们。

答案 1 :(得分:22)

您只需调用msbuild并将其传递给您要构建的.csproj / .vbproj项目文件,它只会执行该文件。

类似于:

cd \MySolution
msbuild .\Project1\Project1.csproj

答案 2 :(得分:4)

您可以参考this参考了解有关从命令行使用MSBuild的更多信息。以下是您需要的示例:

MSBuild.exe MyProject.proj /t:rebuild

答案 3 :(得分:1)

向未来的求职者发布信息

设置MSBuildEmitSolution = 1

https://stackoverflow.com/a/40372894/826862