如何解决Obfuscar 2.2.28引发ResolutionException
Obfuscar 2.2.28为混淆的项目抛出ResolutionException:
Unhandled Exception: Mono.Cecil.ResolutionException: Failed to resolve A.h
at Mono.Cecil.Mixin.CheckedResolve(TypeReference self)
at Mono.Cecil.MetadataBuilder.GetConstantType(TypeReference constant_type,Object constant)
at Mono.Cecil.MetadataBuilder.AddConstant(IConstantProvider owner,TypeReference type)
at Mono.Cecil.MetadataBuilder.AddField(FieldDeFinition field)
at Mono.Cecil.MetadataBuilder.AddFields(TypeDeFinition type)
at Mono.Cecil.MetadataBuilder.AddType(TypeDeFinition type)
at Mono.Cecil.MetadataBuilder.AddTypes()
at Mono.Cecil.MetadataBuilder.BuildTypes()
at Mono.Cecil.MetadataBuilder.BuildModule()
at Mono.Cecil.MetadataBuilder.BuildMetadata()
at Mono.Cecil.ModuleWriter.<>c.<BuildMetadata>b__2_0(MetadataBuilder builder,MetadataReader _)
at Mono.Cecil.ModuleDeFinition.Read[TItem,TRet](TItem item,Func`3 read)
at Mono.Cecil.ModuleWriter.Write(ModuleDeFinition module,disposable`1 stream,WriterParameters parameters)
at Mono.Cecil.ModuleWriter.WriteModule(ModuleDeFinition module,WriterParameters parameters)
at Obfuscar.Obfuscator.SaveAssemblies(Boolean throwException)
at Obfuscar.Obfuscator.RunRules()
at Obfuscar.Program.Main(String[] args)
我确实更改了一些混淆属性(添加了更多要枚举的枚举),然后开始出现此错误。
我混淆的项目针对.NET Framework 4.6.2。
更新: 我也尝试过使用2.2.25和2.2.26版本,结果是相同的。不幸的是,没有日志文件,因此很难找到导致问题的原因。
更新2: 在我的(大型)项目中,我已将其范围缩小到一个特定的枚举。当我从混淆中排除该枚举时,混淆运行良好。当我混淆该枚举时,将引发异常。 情况如下。有问题的枚举位于完全混淆的库中。但是,枚举还用于单元测试中。带有单元测试的程序集也是混淆的一部分(我想在交付的实际混淆的库上运行我的单元测试),但是不会混淆其中的测试类。这意味着只应在测试程序集中更新对完全混淆的库中定义的类/枚举的引用。当我从单元测试中删除该枚举的用法时,混淆也将再次起作用。因此,这似乎是对引起问题的非混淆类中的混淆枚举的引用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。