Как я могу присвоить значение свойству string [] пользовательской задачи MSBuild, используя командную строку? - PullRequest
1 голос
/ 17 января 2012

У меня есть пользовательская задача MSBuild (которая расширяет Microsoft.Build.Utilities.Task). Эта задача имеет свойство типа string []. Сама задача (назовем ее «BobTask») находится в файле MSBuild, который устанавливает свое значение следующим образом:

<BobTask MyStringArrayProperty="@(MyStringArrayProperty)" />

Я предполагаю, что когда пользователь запускает файл MSBuild из командной строки (используя MSBuild.exe), он может установить свойство следующим образом:

msbuild.exe file.proj /p:MyStringArrayProperty="value1"

или

msbuild.exe file.proj /p:MyStringArrayProperty="value1;value2"

(и да, я знаю, что приведенные выше примеры командной строки неполные - это просто для обозначения моих намерений.)

Однако, когда я пробую это по-настоящему, MyStringArrayProperty в моей пользовательской задаче всегда будет нулевым. Я вижу, что другие задачи MSBuild используют свойства string [], так что это похоже на допустимый тип свойства для пользовательских задач. Это заставляет меня поверить, что синтаксис, который я использую для списка строк в командной строке, неверен. Таким образом, есть ли способ присвоить значение свойству string [] пользовательской задачи MSBuild, используя командную строку? Есть ли какой-то особый синтаксис, который мне нужно использовать?

Спасибо

-Craig

1 Ответ

2 голосов
/ 17 января 2012

Вы предоставляете значение свойства в командной строке, но предоставляете содержимое массива элементов для своей задачи; оба имеют одинаковое имя, но разные типы данных.

Чтобы преобразовать свойство в элемент, сделайте следующее:

<ItemGroup>
    <MyStringArrayProperty Include="$(MyStringArrayProperty)" />
</ItemGroup>
<BobTask MyStringArrayProperty="@(MyStringArrayProperty)" /> 

Выдержка из книги " MSBuild Trickery ", совет № 30: "Как преобразовать свойства в предметы"

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