使用msbuild指定解决scheme的项目文件
我想要命令行使用msbuild来构build一个解决scheme的特定项目,就像我们在devenv.com中所做的那样。devenv.com我们可以使用下面的命令行来指定一个解决scheme的项目
devenv.com /Build Release|x86 test.sln /project "testproject"
使用上面的命令行,我可以使用devenv.com.tw在test.sln中构buildtestproject。同样的解决scheme是msbuild的命令行。
谢谢
msbuild test.sln /t:project /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false
请注意,分配给/t
是解决scheme中的项目名称,它可以与项目文件名称不同。
如果它包含一个点,则用下划线replace它。
来自@Watusimoto的重要评论:
如果你的项目有一个.
(点),用/ t指定时用_
(下划线)代替
您也可以一次构build多个项目:
msbuild test.sln /t:project;project2 /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false
要重build或清理,请将/t:project
更改为/t:project:clean
或/t:project:rebuild
实际上MSBuild通过使用项目而不是解决scheme。 该解决scheme仅用于将其parsing到MSBuild内部的临时项目文件中。 您应该能够通过执行以下命令直接通过MSBuildbuild立感兴趣的项目。
"msbuild testproject /p:Configuration=Release /p:Platform=x86"
我知道你可以直接使用项目来解决一个主要问题,而不是解决scheme:如果使用解决scheme来表示项目之间的依赖关系,而不是添加对项目的引用,并让构build系统自动运行依赖关系。
如果您正在使用sln文件强制执行构build顺序,我build议直接将这些依赖关系处理到proj文件中,并从sln中删除它们。 这将允许您直接从MSBuild调用任何proj文件,并且项目将全部独立构build,无需任何额外的工作。 您应该将sln文件视为一组项目,以使Visual Studio更容易工作,而不是作为构buildinput。
作为未来求职者的信息发布
将以下内容添加到构build脚本并运行一次。 这将生成msbuild实际使用的确切目标和其他信息。
例如:如果你有'。' 在项目名称或文件夹msbuild将期望“_”代替“。”。
设置MSBuildEmitSolution = 1
获取信息后,更新构build脚本与所需的细节。