我正在尝试从.NET类型中获取Mono.Cecil TypeDefinition,但没有成功。
我使用的代码类似于:
var type = typeof(MarkdownMonster.AppConfiguration);
var a = AssemblyDefinition.ReadAssembly(type.Assembly.Location);
var tr = a.MainModule.Import(type); // this seems to work
var td = tr.Resolve(); // fails
但是它失败了,出现了一个装配体解析错误:
GetConfigurationPropertiesTest [0:29.990] 失败: Mono.Cecil.AssemblyResolutionException : 无法解析程序集: 'MarkdownMonster, Version=1.18.11.0, Culture=neutral, PublicKeyToken=null' Mono.Cecil.AssemblyResolutionException : 无法解析程序集: 'MarkdownMonster, Version=1.18.11.0, Culture=neutral, PublicKeyToken=null' 在 Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters) 在 Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name) 在 Mono.Cecil.MetadataResolver.Resolve(TypeReference type) 在 Mono.Cecil.TypeReference.Resolve() 在 Westwind.TypeImporter.TypeParser.ParseObject(Type type, Boolean dontParseMembers)
显然,程序集在那里,因为 TypeReference 导入似乎起作用并生成有效的 TypeReference。
所涉及到的程序集是一个EXE文件,只是因为好玩而将其重命名为DLL文件,但这没有任何效果。