微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Obfuscar 2.2.28引发ResolutionException

如何解决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 举报,一经查实,本站将立刻删除。