Xml serialization/deserialization 在 WinRT 中(商店应用程序)

Xml serialization/deserialization in WinRT (Store application)

我需要创建一个 Windows Store 应用程序,通过 TCP 连接与服务器交换 xml 序列化数据。因为我需要在应用程序中使用 Direct3D 渲染,所以我选择了 c++/cx 存储应用程序模板,但是我 运行 遇到了 xml serialization/deserialization.

的问题

我在 C# 中的常用方法是使用 XmlSerializer and classes with DataContractAttribute 注释。但是,一旦我尝试导入 System.Xml.Serialization 程序集,我就会收到 C1114 错误 - WinRT does not support #using of a managed assembly。然而,有很多例子提到在 C# 的 Windows Phone 应用程序中使用这种方法。

所以问题是 - 在 Windows Store 应用程序和 C# 中,是否只有 c++/cx 在支持 .NET 方面受到限制,并且 C# 也可以使用 phone 上的所有标准组件,或者正在切换到 C#在这种情况下也不是解决方案,我需要使用 WinRT 类 for xml serialization/deserialization?

你的困惑是可以理解的,微软已经推出了各种各样的框架。

C++/Cx 是 native 绑定到 Windows 运行时 (WinRT)。它不以任何方式使用任何托管代码或 .NET 框架,这就是您收到 C1114 错误的原因。

C# 提供了到 WinRT 的托管绑定。它确实利用了 .NET 框架,因此在 C# Windows Store 应用程序中,您可以使用一些 base-class 库。此子集称为 .NET 配置文件。这篇文章更多地讨论了这一点:http://blogs.msdn.com/b/dotnet/archive/2012/04/17/net-for-metro-style-apps.aspx

在您的特定情况下,您正在使用 C++/Cx 应用程序,因为您想要访问 Direct3D。这是有道理的,尽管这意味着您将无法访问 System.Xml.Serialization。相反,正如您推测的那样,您将需要使用 C++/Cx 可用的 API 来读取 XML,特别是 Windows.Data.Xml.Dom:https://msdn.microsoft.com/en-us/library/windows/apps/windows.data.xml.dom.aspx