Как передать свойство в MSBuild через командную строку, которое может быть проанализировано в группе элементов?
У меня есть следующий скрипт 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 создал группу предметов из трех предметов вместо одного. Как мне это сделать? Благодарю.
PS Следующая статья в основном посвящена моему вопросу, за исключением случая, когда я хочу передать значения, разделенные точкой с запятой: http://sedodream.com/CommentView,guid,096a2e3f-fcff-4715-8d00-73d8f2491a13.aspx
1 ответ
Вы избежали точек с запятой, не позволяя MSBuild анализировать их как отдельные элементы. Вместо этого бегите так, с кавычками,
msbuild [myscript] /p:build_configurations="test5;test6;test7"
вы получите следующий вывод,
Running with args: test5
Running with args: test6
Running with args: test7