C# 将Mac OS X二进制格式的plist转换为C中的可读格式#

C# 将Mac OS X二进制格式的plist转换为C中的可读格式#,c#,.net,macos,binary,plist,C#,.net,Macos,Binary,Plist,有人知道我是否/如何将二进制格式的Mac OS X plist文件转换为C#格式的纯XML字符串吗 我知道有一些适用于Windows的plist编辑器表示它们支持二进制格式的plist文件,但我需要在我自己的应用程序中内联执行此操作。一个快速的google显示,但这只有在安装了perl的情况下才会起作用(我相当确定这不是Windows中的默认设置)如果您想在OS X端进行代码转换,前面的SO问题有您的答案。或者,您可以使用OS X上的命令行实用程序在二进制和XML属性列表之间进行转换。我还没有尝

有人知道我是否/如何将二进制格式的Mac OS X plist文件转换为C#格式的纯XML字符串吗


我知道有一些适用于Windows的plist编辑器表示它们支持二进制格式的plist文件,但我需要在我自己的应用程序中内联执行此操作。

一个快速的google显示,但这只有在安装了perl的情况下才会起作用(我相当确定这不是Windows中的默认设置)

如果您想在OS X端进行代码转换,前面的SO问题有您的答案。或者,您可以使用OS X上的命令行实用程序在二进制和XML属性列表之间进行转换。

我还没有尝试过下面的任何解决方案,我知道您正在寻找C,但是

此页面有一个用java实现的二进制plist解析器:


javaquaqua项目()使用二进制plistjava解析器。您可以在这里看到java文档

Project Wonder拥有来自WebObjects的苹果plist解析器的开源版本,该版本支持二进制plists:

我意识到这是非常古老的,但我将为后代发布我的解决方案

几周前,当我开始二进制plist序列化时,我找不到任何可用的启动外部进程的方法,所以我不得不自己启动

对于其他寻找C#/.NET二进制plist序列化的人,您可以在中找到我的实现


希望这能帮助一些人。

我也发现了这一点,但我不想将perl作为另一项要求添加到我的应用程序中。最好是能够在框架中使用编码,但我开始怀疑它们是否能够转换这种格式。我找到了这个实用程序的可执行版本。在我的代码中,我将二进制plist写入一个文件,使用plutil.exe将其转换为纯XML,然后读入结果文件。@Geir ToreLindsve-你能发布一个答案并链接到你在哪里/如何找到
plutil.exe
-请共享。@Alex回复晚了,但是我不知道我在哪里找到的,并且已经有好几年没有开发这个应用程序了years@Geir-ToreLindsve-如果您有.pl和.exe的副本,请通过GitHub或在线位置上传并共享,以便我们可以使用此答案。另外,你能稍微更新一下吗。谢谢谢谢,但我需要能够在运行时在.NET应用程序中读取二进制格式的plist。原因是CoreData以这种格式存储元数据,我有一个跨平台应用程序,需要读取与mac版本相同的数据文件。不过,我们可能不得不在一个单独的表中复制元数据,因为我还没有找到一种可靠的方法来实现这一点,谢谢链接。也许可以移植到C#Sweet!虽然我已经花了很长时间来做这个,但我会考虑添加这个,而不是启动一个外部流程,因为我目前做的也很好。干得好。