PlistBuddy на Windows

Я нахожусь в процессе перевода нашей инфраструктуры сборки Xamarin на Windows, и я столкнулся с проблемой, заключающейся в том, что наши скрипты сборки в настоящее время используют PlistBuddy для чтения и записи в файл Info.plist приложения.

Очевидно, PlistBuddy не будет работать на Windows.

Кто-нибудь видел какое-либо другое решение для взаимодействия с файлами Plist в Windows? Я видел несколько, которые используют графический интерфейс, но нам нужно это иметь CLI.

1 ответ

Вы можете заставить Build Agent запускать произвольные команды на Mac путем привязки к любому универсальному Task/Target(Вы можете посмотреть в Xamarin.iOS .targets файлы для лучшей идеи здесь), который работает через соединение SSH. В настоящее время это доступно в другом методе с помощью <Exec> Задача с SessionId вашей $(BuildSessionId), Вот пример того, как вы можете сделать это:

<Exec Command="..." SessionId="$(BuildSessionId)" />

Если SessionId имеет значение null / empty, то это означает, что мы не подключены к Mac. Если это не ноль / пусто, то мы подключены к Mac.

Затем мы можем принудительно запустить это условие на Mac с помощью:

<Exec Command="..." SessionId="$(BuildSessionId)" Condition=" '$(BuildSessionId)' != '' " />

Обратите внимание, что для удаленного выполнения доступны следующие встроенные задачи:

  • копия
  • удалять
  • Exec
  • MakeDir
  • Переехать
  • RemoveDir
  • потрогать

Источник: https://github.com/xamarin/xamarin-macios/blob/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets

Затем вы можете вызвать PlistBuddy Команда через этот метод.

EX:

  <Target Name="_SayGoodbye">
    <Exec Command="plistbuddy ..." SessionId="$(BuildSessionId)" Condition=" '$(BuildSessionId)' != '' "/>
  </Target>

Если вы хотите пойти о MSBuild Пользовательский способ Задачи. Вы можете увидеть примеры ранее созданных Задач здесь:

https://github.com/xamarin/xamarin-macios/tree/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/Xamarin.iOS.Tasks.Core/Tasks

EX Plist в использовании:

https://github.com/xamarin/xamarin-macios/blob/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/Xamarin.iOS.Tasks.Core/Tasks/MTouchTaskBase.cs#L608

EX тесты с Plist:

https://github.com/xamarin/xamarin-macios/tree/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/tests/Xamarin.iOS.Tasks.Tests/TaskTests/GeneratePlistTaskTests

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

Другие вопросы по тегам