我在UWP项目中使用XmlSerializer。它在编译为调试时工作正常但在发布时抛出PlatformNotSupportedException。
我写了一个简单的C#程序示例来说明这一点。我没有根据VS 2017给我的任何项目设置进行编辑。我在项目中有一个简单的SampleData.xml文件作为内容。我有一个名为SampleItemsForSerialization的类以及SampleItemList和SampleItem,所有这些都标记为能够序列化xml文件。
在另一个课程中,我有以下代码:
try
{
using (Stream strmRead = await GetAFileStreamForRead(_strFILENAME))
{
Type typeSampleItems = typeof(SampleItemsForSerialization);
XmlSerializer xmlSerializer = new XmlSerializer(typeSampleItems, new XmlRootAttribute("MyRoot"));
_sampleitems = (SampleItemsForSerialization)xmlSerializer.Deserialize(strmRead);
bLoadedOK = true;
}
catch (Exception ex)
{ ... }
编译调试时,应用程序运行正常,xml文件被反序列化,然后我可以在消息对话框中显示文件的内容。
编译发布时,XmlSerializer构造函数抛出PlatformNotSupportedException。搜索这个问题已经产生了各种各样的谈话和假设的解决方案,这些解决方案经常相互冲突。我最喜欢的是构建属性GenerateSerializationAssemblies。有人说它应该是On,其他人说Off,或者也许Auto,我不知道?
任何人都能让这一件事变得简单吗?
ETA - 任何想要对此进行破解的人都应该能够在自己的系统上重新创建问题: