如何使用 MSBuild 按特定顺序在解决方案中构建项目?
Posted
技术标签:
【中文标题】如何使用 MSBuild 按特定顺序在解决方案中构建项目?【英文标题】:How can i build projects in a solution in a certain order using MSBuild? 【发布时间】:2019-11-28 10:33:27 【问题描述】:我有以下 msbuild 命令行: msbuild test.sln /t:project8;project5;project1;project9;project10;project20;project2 /p:Configuration="Release" /p:OutputPath=C:\ProjectDlls
这会按照指定的顺序构建它们吗?或者我可以像在 Visual Studio IDE 中一样指定顺序)右键单击 sln 和构建顺序)
我想按以下顺序构建 项目1 项目8 项目10 项目20 项目2 项目9 项目5
【问题讨论】:
您好,您问题中提到的这些项目之间的关系(项目参考、项目依赖)是什么?影响实际运行顺序很重要:-) 【参考方案1】:这会按照指定的顺序构建它们吗?
如果这些项目之间没有依赖关系。他们将按照您在命令中设置的顺序运行。 (对于 VS2017,它可以工作)
对于 VS2017 和 VS2019(msbuild 15.0,16.0):
msbuild test.sln /t:project1;project8;project10;project20;project2;project9;project5 /p:Configuration="Release" /p:OutputPath=C:\ProjectDlls /m:1
如果你使用这个命令,它们会按照你想要的顺序执行。(如果你不按其他顺序添加项目引用或项目依赖!)
并添加/m:1
以确保项目一个一个构建。
我想按以下顺序构建 project1 project8 project10 project20 project2 project9 project5.
除了在命令中指定顺序外,您还可以指定这些项目之间的项目依赖关系或项目引用。
msbuild(15.0及以上)会识别项目之间的关系,并按照与关系匹配的顺序构建项目。
所以实际上命令中的顺序、项目依赖项、项目引用都会影响真正的构建顺序。避免使用所有这 3 种方式来设置顺序,它可能会弄乱构建...
【讨论】:
【参考方案2】:如上所示在命令行中指定顺序,总是错误。我以前从未见过这个,它就像一个创可贴。它只是涵盖了真正的问题。
您应该使用以下方法之一:
-
在visual studio中指定构建顺序,右键点击解决方案,选择“构建顺序”。
使用项目引用来指定一个项目依赖于另一个项目。
【讨论】:
以上是关于如何使用 MSBuild 按特定顺序在解决方案中构建项目?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Msbuild 和 devenv 在项目解决方案下构建特定的 Visual Studio 项目