.net 无法加载模糊程序集
我第一次在dotfuscator工作。我的项目是用C#和.NET3.5编写的,它有一个主程序和一些插件;这是加载插件的代码片段:.net 无法加载模糊程序集,.net,reflection,assemblies,load,dotfuscator,.net,Reflection,Assemblies,Load,Dotfuscator,我第一次在dotfuscator工作。我的项目是用C#和.NET3.5编写的,它有一个主程序和一些插件;这是加载插件的代码片段: // Load the file Assembly asm = Assembly.LoadFile( pluginPath ); // Instantiate the types I need foreach( Type type in asm.GetTypes() ) { ... } 现在的问题是:如果我不混淆一切都很好,但是当我使用dotfuscato
// Load the file
Assembly asm = Assembly.LoadFile( pluginPath );
// Instantiate the types I need
foreach( Type type in asm.GetTypes() )
{
...
}
现在的问题是:如果我不混淆一切都很好,但是当我使用dotfuscatorasm.GetTypes()
时,抛出一个ReflectionTypeLoadException,其中
定位的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x8013100)
我在谷歌上搜索了几个小时,没有结果。提前谢谢
编辑:经过一些研究和调试,我认为这是清单中的一个问题,因为反射无法看到(或加载)程序集中的类型。我用Reflector打开了模糊程序集,但一切似乎都很好。我认为模糊处理与反射不匹配。事实上,我认为这是使用模糊处理时的首要权衡
请参阅链接,了解如何克服需要反映在上的类型。通过重命名部分或全部方法名、类型名等,模糊处理可以部分地起作用
当使用模糊处理时,反射通常会失败。如果幸运的话,在选择要混淆的内容时可以有选择性,但这需要注意细节。您的程序集是强命名的还是经过身份验证码签名的?模糊处理会更改程序集的结构,为了在模糊处理后使用它们,您需要放弃它们
Dotfuscator的商业版本支持重新指定程序集(强名称和Authenticode),而如果您使用的是免费社区版,则需要在Dotfuscator中作为构建后步骤重新指定。我尝试在Dotfuscator中禁用尽可能多的内容,我还尝试用[System.Reflection.Obfuscation(Exclude=true)]标记至少一个类。官方指南说了些什么,我认为代码应该可以工作。无论如何,非常感谢你的链接,我将很快评估其他模糊器