Я пытаюсь использовать компонент SfDataGrid в своем приложении UWP, и все работает нормально в режиме отладки. Когда я переключился в режим выпуска для регрессионного тестирования приложения перед публикацией в магазине Windows, приложение выдает исключение во время сериализации сетки.
У меня есть SfDataGrid, определенный с 4 текстовыми столбцами, 1 числовым столбцом и 1 столбцом шаблона. Столбец шаблона просто включает кнопку удаления, чтобы пользователь мог удалить строку.
У меня есть способ вернуть параметры сериализации следующим образом:
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: атрибут KnownTypeAttribute для типа Syncfusion.UI.Xaml.Grid.SerializableGridColumn указывает метод с именем 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.
Большое спасибо за любую помощь, которую кто-либо может предоставить.