Как передать в MSBuild через командную строку свойство, которое можно проанализировать в группе элементов? - PullRequest
44 голосов
/ 19 мая 2011

У меня есть следующий скрипт 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 Ответ

47 голосов
/ 19 мая 2011

Вы избежали точек с запятой, не позволяя MSBuild анализировать их как отдельные элементы.Вместо этого, запустите так: с кавычками

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

вы получите следующий вывод:

Running with args: test5
Running with args: test6
Running with args: test7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...