我正在将我们的 Xamarin 构建基础架构移动到基于 Windows 的过程中,我遇到了一个问题,即我们的构建脚本当前使用 PlistBuddy 来读取和写入应用程序的 Info.plist 文件。
显然 PlistBuddy 不会在 Windows 上运行。
有没有人见过在 Windows 上与 Plist 文件交互的任何其他解决方案?我见过一些使用 GUI,但我们需要它来拥有 CLI。
我正在将我们的 Xamarin 构建基础架构移动到基于 Windows 的过程中,我遇到了一个问题,即我们的构建脚本当前使用 PlistBuddy 来读取和写入应用程序的 Info.plist 文件。
显然 PlistBuddy 不会在 Windows 上运行。
有没有人见过在 Windows 上与 Plist 文件交互的任何其他解决方案?我见过一些使用 GUI,但我们需要它来拥有 CLI。
您可以通过绑定到跨 SSH 连接运行的任何通用Task/Target
(您可以在 Xamarin.iOS文件中查看更好的想法)来强制构建代理在 Mac 上运行任意命令。.targets
目前,这可以通过将<Exec>
Task 与SessionId
您的$(BuildSessionId)
. 以下是您可以如何执行此操作的示例:
<Exec Command="..." SessionId="$(BuildSessionId)" />
如果SessionId
为空/空,则意味着我们没有连接到 Mac。如果它不是 null/empty,那么我们连接到 Mac。
然后,我们可以通过以下方式强制此条件始终在 Mac 上运行:
<Exec Command="..." SessionId="$(BuildSessionId)" Condition=" '$(BuildSessionId)' != '' " />
请注意,以下内置任务已公开用于远程执行:
然后,您可以PlistBuddy
通过此方法调用命令。
前任:
<Target Name="_SayGoodbye">
<Exec Command="plistbuddy ..." SessionId="$(BuildSessionId)" Condition=" '$(BuildSessionId)' != '' "/>
</Target>
如果您想采用MSBuild
自定义任务方式,您可以在此处查看以前构建的任务的示例:
EX Plist 使用中:
使用 Plist 进行EX测试:
在这一点上,这更像是一个 MSBuild 自定义,但使用这些项目绝对可以做你想做的事情。