如何通过命令行将属性传递给MSBuild,可以将其parsing为一个项目组?

我有以下MSBuild脚本:

<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Main" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <build_configurations>test1;test2;test3</build_configurations> </PropertyGroup> <ItemGroup> <BuildConfigurations Include="$(build_configurations)" /> </ItemGroup> <Target Name="Main"> <Message Text="Running with args: %(BuildConfigurations.Identity)" /> </Target> </Project> 

如果我没有任何参数调用脚本,我得到预期的回应:

 Running with args: test1 Running with args: test2 Running with args: test3 

但是,当我尝试通过命令行设置属性如下所示:

 msbuild [myscript] /p:build_configurations=test5%3btest6%3btest7 

我得到以下内容:

 Running with args: test5;test6;test7 

所以,这不是如预期的那样。 我需要让MSBuild创build三个项目而不是一个项目的项目组。 我该怎么做? 谢谢。

PS下面的文章基本上解决我的问题,除了我想传递分号分隔的值的情况下: http : //sedodream.com/CommentView,guid,096a2e3f-fcff-4715-8d00-73d8f​​2491a13.aspx

你已经逃脱了分号,防止MSBuild将其parsing为单个项目。 像这样运行,用引号,

 msbuild [myscript] /p:build_configurations="test5;test6;test7" 

你会得到以下输出,

 Running with args: test5 Running with args: test6 Running with args: test7