我有我的dlls(.NET4)使用msbuild构建并使用SmartAssembly 5.5进行混淆。
之后,我在Mac(10.8)上的MonoDevelop(最新)中为简单的控制台应用程序设置了它们。
构建正常,但是当我运行那个简单的应用程序时,我有一条消息:未知堆类型:智能程序集
我问了SA支持,但还没有运气(saproj检查了项目blabla(支持Mono)。
我不知道如何附加屏幕截图,但是,当我运行我的应用程序时,我在控制台中看到该消息两次。它出现在程序在代码第一行的断点上停止之前。
所以也许有人知道在SmartAssembly或MonoDevelop中要更改什么来解决这个问题?谢谢
.NET 混淆器会更改程序集,使它们在技术上不是正确的程序集(它们不在 .NET 程序集规范范围内),而是通过利用特定于 Microsoft 实现的错误,它们仍然在 Microsoft .NET 运行时上运行。我怀疑他们这样做是为了使程序集阅读器工具/库更难加载程序集。遗憾的是,这也阻止了 Mono 运行时加载程序集。一般来说,Mono 的政策是不"修复"对这种无效混淆代码的支持,因此您需要向 SmartAssembly 支持人员寻求帮助。
如果您确定使用的是SmartAssembly的"严格有效"选项并且它不起作用,也许您可以尝试他们的"基本"选项。