我是第一次使用 dotfuscator。我的项目是用 C# 和 .NET 3.5 编写的,它有一个主程序和一些插件;这是加载插件的代码片段:
// Load the file
Assembly asm = Assembly.LoadFile( pluginPath );
// Instantiate the types I need
foreach( Type type in asm.GetTypes() )
{
...
}
现在的问题是:如果我不混淆一切都很好,但是当我使用 dotfuscator asm.GetTypes()
抛出 ReflectionTypeLoadException 时说
找到的程序集的 list 定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
我用谷歌搜索了几个小时没有结果。提前致谢。
编辑: 经过一些研究和调试后,我认为这是 list 中的问题,因为反射无法看到(或加载)程序集中的类型。我用 Reflector 打开混淆后的程序集,但一切似乎都很好。
最佳答案
您的程序集是否具有强命名或 Authenticode 签名?混淆会更改程序集的结构,为了在混淆后使用它们,您需要重新注册它们。
Dotfuscator 的商业版本支持退出程序集(包括强名称和 Authenticode),而如果您使用的是免费的社区版,则需要在 Dotfuscator 中作为构建后步骤退出。
关于.net - 无法加载混淆程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309677/