首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows环境下的PlistBuddy

Windows环境下的PlistBuddy
EN

Stack Overflow用户
提问于 2016-11-15 09:26:48
回答 1查看 963关注 0票数 1

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

显然,PlistBuddy不会在Windows上运行。

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

EN

回答 1

Stack Overflow用户

发布于 2016-11-15 18:36:36

您可以通过绑定到跨SSH连接运行的任何通用Task/Target(在这里可以查看Xamarin.iOS .targets文件以获得更好的想法)来强制构建代理在Mac上运行任意命令。这在另一种方法中是可用的,方法是将<Exec>任务与您的$(BuildSessionId)SessionId一起使用。下面是一个如何做到这一点的例子:

代码语言:javascript
复制
<Exec Command="..." SessionId="$(BuildSessionId)" />

如果SessionId为空/空,那就意味着我们没有连接到Mac。如果它不是空/空,那么我们就连接到Mac。

然后,我们可以通过以下方式强制此条件始终在Mac上运行:

代码语言:javascript
复制
<Exec Command="..." SessionId="$(BuildSessionId)" Condition=" '$(BuildSessionId)' != '' " />

请注意,为了远程执行,将公开下列内置任务:

  • 复制
  • 删除
  • 执委会
  • MakeDir
  • 移动
  • RemoveDir
  • 触摸

来源:https://github.com/xamarin/xamarin-macios/blob/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets#L74-L80

然后,您可以通过此方法调用PlistBuddy命令。

EX:

代码语言:javascript
复制
  <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薄片:

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定制,但是使用这些项来做您想要做的事情是绝对可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40606248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档