Xamarin iOS Linker вызывает проблемы AutoMapper - PullRequest
0 голосов
/ 29 июня 2018

Я работаю над проектом Xamarin, который использует AutoMapper. Когда для связывания установлено значение «Link Framework SDKs Only», я получаю следующую ошибку при инициализации карт

System.ArgumentNullException: значение не может быть нулевым. Имя параметра: Метод

Исключение не так уж много, и не является и стек вызовов

AutoMapper.Mappers.ConvertMapper.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.ObjectMapperExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper.Mappers.NullableSourceMapper.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.ObjectMapperExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.CreatePropertyMapFunc
AutoMapper.Execution.TypeMapPlanBuilder.CreatePropertyMapFunc
AutoMapper.Execution.TypeMapPlanBuilder.TryPropertyMap
AutoMapper.Execution.TypeMapPlanBuilder.CreateAssignmentFunc
AutoMapper.Execution.TypeMapPlanBuilder.CreateMapperLambda
AutoMapper.TypeMap.Seal AutoMapper.MapperConfiguration.Seal
AutoMapper.MapperConfiguration..ctor
AutoMapper.MapperConfiguration..ctor AutoMapper.Mapper.Initialize

Первоначальное прочтение этого предполагает, что Линкер просто удаляет некоторые свойства или действительно методы из некоторого класса, который мы используем.

Однако после того, как я закомментировал большинство отображений, а затем заново ввел их по одному, я обнаружил, что этот класс в настоящее время вызывает ошибку.

[Preserve]
internal class ItemBase : CareRecordItemBase
{
      [Preserve]
      public string Topic { get; set; }

      [Preserve]
      public string InPractice { get; set; }

      [Preserve]
      public string PrivateVal { get; set; }
}

Если я закомментирую свойство InPractice, исключение не выдается. Это не имеет смысла для меня. Кто-нибудь может объяснить, почему это может быть проблемой?

Есть ли лучшие способы диагностики этих проблем?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

На основании ответа Пэт:

  1. Добавьте файл XML LinkDescription.xml, вы можете назвать его как угодно.
  2. Добавить этот код:
<linker> 
    <assembly fullname="mscorlib">
        <type fullname="System.Convert" preserve="All" />
    </assembly>
</linker>
  1. Установить действие по сборке файла на LinkDescription
0 голосов
/ 29 июня 2018

См. Комментарий от автора AutoMapper Lucian Bargaoanu. Мне нужно было включить XML-файл, который добавляет конфигурацию в процесс связывания.

Lucian ссылается на эту проблему Automapper, https://github.com/AutoMapper/AutoMapper/issues/2272

Также см.

Конфигурация Custom Linker

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...