我正在尝试从 .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' at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters) at Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name) at Mono.Cecil.MetadataResolver.Resolve( TypeReference 类型)在 Mono.Cecil.TypeReference.Resolve() 在 Westwind.TypeImporter.TypeParser.ParseObject(Type type, Boolean dontParseMembers)
程序集显然在那里,因为 TypeReference 导入似乎工作并产生了有效的 TypeReference。
有问题的程序集是一个 EXE,只是为了好玩,我将它重命名为 DLL,但这没有任何效果。