8

我在 Mac 上的 Xamarin Studio 中构建 PCL 时遇到问题。它在调试模式下工作正常,但 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)
4

2 回答 2

16

Fody 需要与输出的程序集关联的调试信息(*.mdb 文件)来执行编织步骤。默认情况下,发布版本会在项目设置中关闭Build -> Compiler中的Debug Information字段。

将此构建选项设置为None禁用调试符号并导致 mdb 文件不同步,因此出现Symbol file 'XXX/obj/Release/XXX.dll.mdb' does not match assembly XXX/obj/Release/XXX.dll异常。

因此,当 Fody 集成到构建过程中时,您需要在发布模式下构建项目时启用Symbols OnlyFull :

在此处输入图像描述

于 2015-11-26T04:44:23.857 回答
1

你可能已经有了,但如果是我,我会从这个开始:

  • 右键单击您的解决方案
  • 特性
  • 配置属性/配置

在左上角的“配置”下拉菜单中,检查“调试”配置(re:Platform | Build | Deploy)是否与“Release”匹配。

于 2014-10-24T06:12:28.847 回答