Msbuild 生成解决方案时在命令行上传递单个项目的属性
使用msbuild生成包含多个项目的解决方案时,是否可以在命令行上传递属性,使该属性仅用于其中一个项目Msbuild 生成解决方案时在命令行上传递单个项目的属性,msbuild,Msbuild,使用msbuild生成包含多个项目的解决方案时,是否可以在命令行上传递属性,使该属性仅用于其中一个项目 这意味着,我可以说-p:Foo=42应用于Project1,但不用于Project2吗?MSBuild无法通过解决方案文件(MSBuild xxx\xxx.sln)轻松地为其中一个项目指定属性。或者,您必须键入多个msbuild命令行来指定相关csproj文件,以启用更改的属性,如msbuild Project1.csproj-t:build-p:xxx=xxx,msbuild Project
这意味着,我可以说
-p:Foo=42
应用于Project1,但不用于Project2吗?MSBuild无法通过解决方案文件(MSBuild xxx\xxx.sln
)轻松地为其中一个项目指定属性。或者,您必须键入多个msbuild命令行来指定相关csproj文件,以启用更改的属性,如msbuild Project1.csproj-t:build-p:xxx=xxx
,msbuild Project2.csproj-t:build
。但是,它太复杂和不方便了
因此我建议您可以使用msbuild脚本获取所需内容
1)创建一个名为build.proj的文件
文件:
<Project>
<ItemGroup>
<!--add all the projects from the solution and remove the any project you want to modify the foo property-->
<MostProjectFile Include="**\*.csproj;**\*.vcxproj" Exclude="**\Project1.csproj" />
<!--add any projects you want to modify the foo value-->
<SpecialProjectFile Include="**\Project1.csproj" />
</ItemGroup>
<Target Name="Build">
<!--build the most projects and remove the project which you want to change foo property-->
<MSBuild Projects="@(MostProjectFile)" Targets="Build" Properties="Configuration=Debug"/>
<!--build any projects that wants to modify the foo property separately-->
<MSBuild Projects="@(SpecialProjectFile)" Targets="Build" Properties="Configuration=Debug;Foo=42"/>
</Target>
</Project>
2)如果要再次更改foo属性,可以根据需要修改build.proj
运行msbuild xxx\build.proj-t:build
来生成它