Задачи MSBuild могут принимать примитивные массивы, но как написать один для передачи в задачу? - PullRequest
3 голосов
/ 14 октября 2010

Я полагаю, что это должен быть ITaskItem, поскольку это вектор вместо скаляра, у меня на столе только 2 книги MsBuild, и я не могу найти примеры того, как передать массивзадача.Я хочу создать массив строк, но мне хотелось бы знать, как правильно работать с любым типом примитивов.

Как передать массив строк (или int) в задачу MsBuild?

Ответы [ 2 ]

10 голосов
/ 14 октября 2010

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

Например, если у вас есть задача, которая принимает int[] с именем Значения, вы можете сделать.

<Target Name="MyTarget">
    <MyTask Values="1;45;657" />
    <!-- or you can do -->
    <ItemGroup>
        <SomeValues Include="7;54;568;432;79" />
    </ItemGroup>

   <MyTask Values="@(SomeValues) />
</Target>

Оба подхода по сути одинаковы.Другие ответы о том, что все параметры являются строками или что вы должны использовать ITaskItem, неверны.

Вы сказали, что у вас есть две книги по MSBuild, и я предполагаю, что одна из них - моя Внутри Microsoft Build Engine книга, вам следует прочитать главу о пользовательских задачах, чтобы вы получили полное представление об этих темах.Есть раздел, объясняющий типы параметров специально.

0 голосов
/ 14 октября 2010

IIRC, элементы msbuild всегда являются строковыми массивами - это единственный вариант.Таким образом, массив целых чисел будет храниться в виде массива числовых строк.

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