Windows上的PlistBuddy

时间:2016-11-15 09:26:49

标签: ios visual-studio xamarin info.plist plistbuddy

我正在将我们的Xamarin构建基础架构转移到基于Windows的过程中,我遇到了一个问题,我们的构建脚本目前使用PlistBuddy来读取和写入应用程序的Info.plist文件。 / p>

显然PlistBuddy不会在Windows上运行。

有没有人在Windows上看到与Plist文件交互的其他解决方案?我见过一些使用GUI的人,但是我们需要这个有一个CLI。

1 个答案:

答案 0 :(得分:0)

您可以强制构建代理在Mac上运行任意命令,方法是绑定到任何通用Task/Target(您可以查看Xamarin.iOS .targets文件以获得更好的想法) SSH连接。目前,使用<Exec>任务和SessionId $(BuildSessionId)的其他方法可以使用此功能。以下是您如何执行此操作的示例:

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

如果SessionId为空/空,则表示我们未连接到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#L74-L80

然后,您可以通过此方法调用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自定义,但您可以使用这些项目完成您尝试做的事情。