3

当我尝试通过Mono.Cecil版本 0.9.3.0 读取 Silverlight 5 程序集时,出现以下异常:

System.NotSupportedException: Version not supported: 5.0.5.0
------   
at Mono.Cecil.BaseAssemblyResolver.GetCorlib(AssemblyNameReference reference) in C:\programming\mono.cecil\jbevain-cecil-5df660e\Mono.Cecil\BaseAssemblyResolver.cs:line 200
------  
at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name) in C:\programming\mono.cecil\jbevain-cecil-5df660e\Mono.Cecil\BaseAssemblyResolver.cs:line 117
....

发生这种情况是因为 Silverlight 项目中的引用是 mscorlib 5.0.5.0,而 GetCorlib 函数似乎没有处理这些情况。

这个问题有解决方案吗?

4

1 回答 1

8

Cecil 的默认解析器不处理 Silverlight 程序集。这很容易修复。只需将您自己的解析器传递给您的程序集,并确保它可以解析 Silverlight 程序集:

var resolver = new DefaultAssemblyResolver ();
resolver.AddSearchDirectory ("path/to/silverlight/assemblies");

var assembly = AssemblyDefinition.ReadAssembly (
    assemblyFile,
    new ReaderParameters { AssemblyResolver = resolver });

另外,我强烈建议您从 0.9.3 更新到更新的版本。

于 2012-02-02T09:16:12.760 回答