Редактировал(а) Alexandr Fokin 2020/08/03 12:27

Последние авторы
1 После обфусцирования с помощью .NET Reactor 5.9.8 возникло исключение при попытке автоматической десериализации xml файла. Изначально файл был сериализован с помощью необфусцированной версии, что, возможно, послужило причиной возникновения ошибки (а может и нет). Но в рамках обратной совместимости, необходимо подерживать ранее созданные файлы.
2
3 Отлов исключения показал следующее:
4 {{code language="C#"}}
5 Возникла ошибка при отражении типа "..." в System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(...)
6 {{/code}}
7 Внутреннее исключение:
8 {{code language="C#"}}
9 Не удается сериализовать член "Devices" типа "System.Collections.Generic.List...". Дополнительные сведения см. во внутреннем исключении.
10 {{/code}}
11 Следующее внутреннее исключение содержит необходимые сведения:
12 {{code language="C#"}}
13 IveprCalculator.Models.Device недоступен в силу его уровня защиты. Возможна обработка только общих типов.
14 {{/code}}
15
16 Это значит, что обфускатор отметил все возможные публичные классы как internal (если включить данную настройку).
17
18 **Решение**: найти параметр исключений в настройках обфускации и указать, что классы-сериализаторы (например, у меня были задействованы три класса) не должны быть обфусцированы и не должны быть отмечены internal.