我希望得到使用msbuild构建特定解决方案中项目的命令行,就像我们在devenv.com中所做的一样。在devenv.com中,我们可以使用以下命令行指定解决方案中的项目:
devenv.com /Build Release|x86 test.sln /project "testproject"
使用上述命令行,我可以使用devenv.com在test.sln中构建testproject。相同解决方案的msbuild命令行是什么。
谢谢
我希望得到使用msbuild构建特定解决方案中项目的命令行,就像我们在devenv.com中所做的一样。在devenv.com中,我们可以使用以下命令行指定解决方案中的项目:
devenv.com /Build Release|x86 test.sln /project "testproject"
使用上述命令行,我可以使用devenv.com在test.sln中构建testproject。相同解决方案的msbuild命令行是什么。
谢谢
msbuild test.sln /t:project /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false
/t
的是解决方案中的项目名称,它可能与项目文件名不同。您还可以同时构建多个项目:如果项目名称包含字符
%
、$
、@
、;
、.
、(
、)
或'
,则用_
替换指定目标名称中的这些字符。
msbuild test.sln /t:project;project2 /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false
如果要重新构建或清理项目,请将/t:project
更改为/t:project:clean
或/t:project:rebuild
/t
参数重复指定每个要构建的项目:msbuild test.sln /t:project /t:project2
。 - Philippe/t:SlnFolder\My_Project_name
。 - Travis Parks实际上,MSBuild通过使用项目来工作而不是解决方案。解决方案仅用于将其解析为MSBuild内部的临时项目文件。您应该能够通过执行以下命令直接通过MSBuild构建感兴趣的项目。
"msbuild testproject /p:Configuration=Release /p:Platform=x86"
如果您直接使用项目而非解决方案,可能会遇到一个主要问题:如果您使用解决方案来表达项目之间的依赖关系,而不是添加对项目的引用,让构建系统自动处理依赖关系。
如果您正在使用 sln 文件强制执行构建顺序,则建议将这些依赖项直接集成到 proj 文件中,并从 sln 文件中删除它们。这样,您可以直接从 MSBuild 调用任何 proj 文件,并且项目将独立构建,无需任何其他工作。您真的应该将 sln 文件视为一组项目,以使在 Visual Studio 中的工作更轻松,而不是作为构建输入。
将以下内容添加到构建脚本中,并运行一次。这将生成实际上 msbuild 将使用的确切目标和其他信息。
例如:如果项目名称或文件夹中有 .
,则 msbuild 将期望在 .
的位置放置 _
。
发布为信息以供未来查找者使用。
set MSBuildEmitSolution=1
在获取信息后,使用所需的详细信息更新构建脚本。
set MSBuildEmitSolution=1
msbuild my_stuff.sln /t:rebuild /p:Configuration=Release /p:Platform=x64
最近我不得不这样做,因为在嵌套目录中有一个非常特定的目标名称。所以从我的生成文件my_stuff.sln.metaproj
中,我找到了这一行:
<Target Name="Utils\Firewall\FirewallUtils:Rebuild">
这意味着要使用的命令行是:
msbuild my_stuff.sln /t:Utils\Firewall\FirewallUtils:Rebuild /p:Configuration=Release /p:Platform=x64
.csproj
)。我<3 SO! - No Refunds No Returns补充一点信息,执行项目文件夹中的msbuild命令将默认构建该项目文件,因为它是唯一存在的。
>msbuild
有多种使用msbuild的方式。您可以直接指定proj文件。
>msbuild helloworld.csproj -t:Build.
请查看msbuild文档以了解用法、项目文件要求以及构建项目而不是解决方案的好处。
正如mark-smith所提到的,以这种方式构建有好处。