【发布时间】:2020-05-14 16:52:49
【问题描述】:
我正在尝试在我的 UWP 应用程序中使用 SfDataGrid 组件,并且在调试模式下一切正常。当我切换到发布模式以在发布到 Windows 商店之前对应用程序进行回归测试时,应用程序在网格序列化期间引发异常。
我有一个定义了 4 个文本列、1 个数字列和 1 个模板列的 SfDataGrid。模板列只包含一个删除按钮,以便用户可以删除该行。
我有一个方法可以返回序列化选项如下:
private SerializationOptions GetGridSerializationOptions()
{
return new SerializationOptions
{
SerializeFiltering = false,
SerializeColumns = true,
SerializeGrouping = true,
SerializeSorting = true,
SerializeTableSummaries = true,
SerializeCaptionSummary = true,
SerializeGroupSummaries = true,
SerializeStackedHeaders = true
};
}
那我还有另一种方法来序列化网格设置如下:
private void RetrieveDefaultGridSettings()
{
using (MemoryStream ms = new MemoryStream())
{
gridReport.Serialize(ms, GetGridSerializationOptions());
_defaultGridSettings = Convert.ToBase64String(ms.ToArray());
}
}
我遵循了描述如何序列化模板列的 SyncFusion 文档 (https://help.syncfusion.com/uwp/datagrid/serialization-and-deserialization)。我在调试模式下一切正常,但是当我切换到发布模式时,我在这一行出现异常:
gridReport.Serialize(ms, GetGridSerializationOptions());
例外是:
System.Runtime.Serialization.InvalidDataContractException:“Syncfusion.UI.Xaml.Grid.SerializableGridColumn”类型上的“KnownTypeAttribute 属性”指定了一个名为“KnownTypes”的方法来提供已知类型。在此类型上找不到静态方法“KnownTypes()”。确保该方法存在并标记为静态。'
我查看了 SerializableGridColumn 类,可以看到一个名为 KnownTypes 的公共静态方法,所以我真的不明白为什么会发生这个异常。我更困惑为什么它只在发布模式下发生。
为了解决这个问题,我尝试引用整个 SDK、删除 SDK 并引用特定程序集(Syncfusion.SfGrid.UWP、Syncfusion.Data.UWP、Syncfusion.SfInput.UWP、Syncfusion.SfShared.UWP、 Syncfusion.SfGridConverter.UWP、Syncfusion.XlsIO.UWP 和 Syncfusion.Pdf.UWP),但两者都不会产生不同的结果,并且异常仍然会发生,但仅在发布模式下。
关闭“使用 .NET Native 工具链编译”设置确实可以解决问题,但这不是一个实用的解决方案,因为这会阻止我将应用程序发布到 Windows 商店。
非常感谢任何人都可以提供的任何帮助。
【问题讨论】:
标签: serialization uwp datagrid syncfusion