Исключение Fody в режиме выпуска Файл символа .dll.mdb не соответствует сборке .dll

У меня проблемы с созданием PCL в Xamarin Studio на Mac. Он отлично работает в режиме отладки, но fody выдает исключение в режиме выпуска.

Исключение во время сборки указано ниже.

Error: Fody: An unhandled exception occurred:
Exception:
Symbol file `XXX/obj/Release/XXX.dll.mdb' does not match assembly `XXX/obj/Release/XXX.dll'
StackTrace:
at Mono.CompilerServices.SymbolWriter.MonoSymbolFile.CheckGuidMatch (Guid other, System.String filename, System.String assembly) [0x00000] in <filename unknown>:0 
  at Mono.CompilerServices.SymbolWriter.MonoSymbolFile..ctor (System.String filename, Mono.Cecil.ModuleDefinition module) [0x00000] in <filename unknown>:0 
  at Mono.CompilerServices.SymbolWriter.MonoSymbolFile.ReadSymbolFile (Mono.Cecil.ModuleDefinition module, System.String filename) [0x00000] in <filename unknown>:0 
  at Mono.Cecil.Mdb.MdbReaderProvider.GetSymbolReader (Mono.Cecil.ModuleDefinition module, System.String fileName) [0x00000] in <filename unknown>:0 
  at Mono.Cecil.ModuleReader.ReadSymbols (Mono.Cecil.ModuleDefinition module, Mono.Cecil.ReaderParameters parameters) [0x00000] in <filename unknown>:0 
  at Mono.Cecil.ModuleReader.CreateModuleFrom (Mono.Cecil.PE.Image image, Mono.Cecil.ReaderParameters parameters) [0x00000] in <filename unknown>:0 
  at Mono.Cecil.ModuleDefinition.ReadModule (System.IO.Stream stream, Mono.Cecil.ReaderParameters parameters) [0x00000] in <filename unknown>:0 
  at Mono.Cecil.ModuleDefinition.ReadModule (System.String fileName, Mono.Cecil.ReaderParameters parameters) [0x00000] in <filename unknown>:0 
  at InnerWeaver.ReadModule () [0x00000] in <filename unknown>:0 
  at InnerWeaver.Execute () [0x00000] in <filename unknown>:0 
Source:
Mono.Cecil.Mdb
TargetSite:
Void CheckGuidMatch(System.Guid, System.String, System.String)

person rid00z    schedule 24.10.2014    source источник
comment
метки времени на mdb и dll одинаковы?   -  person Simon    schedule 25.10.2014
comment
ты когда-нибудь решал это?   -  person Simon    schedule 26.02.2015
comment
Пожалуйста, отметьте, что у @matthewrdev есть правильное решение этой проблемы.   -  person jzeferino    schedule 27.06.2016


Ответы (2)


Фоди нужна отладочная информация (файл *.mdb), связанная с полученной сборкой, для выполнения шага плетения. Сборки выпуска по умолчанию отключают поле Отладочная информация в разделе Сборка -> Компилятор в настройках проекта.

Установка для этой опции сборки значения None отключает символы отладки и приводит к рассинхронизации файла mdb, отсюда и исключение Symbol file 'XXX/obj/Release/XXX.dll.mdb' does not match assembly XXX/obj/Release/XXX.dll.

Поэтому вам необходимо включить Только символы или Полный при сборке проектов в режиме выпуска, когда Fody интегрирован в процесс сборки:

введите описание изображения здесь

person matthewrdev    schedule 26.11.2015

Возможно, вы уже это сделали, но я бы начал с этого, если бы это был я:

  • Щелкните правой кнопкой мыши свое решение
  • Характеристики
  • Свойства конфигурации / Конфигурация

В раскрывающемся списке «Конфигурация» в левом верхнем углу убедитесь, что конфигурация «Отладка» (re: Platform | Build | Deploy) соответствует «Release».

person TeamTam    schedule 24.10.2014