Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 无法加载模糊程序集_.net_Reflection_Assemblies_Load_Dotfuscator - Fatal编程技术网

.net 无法加载模糊程序集

.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

我第一次在dotfuscator工作。我的项目是用C#和.NET3.5编写的,它有一个主程序和一些插件;这是加载插件的代码片段:

// Load the file
Assembly asm = Assembly.LoadFile( pluginPath );

// Instantiate the types I need
foreach( Type type in asm.GetTypes() )
{
    ...
}
现在的问题是:如果我不混淆一切都很好,但是当我使用dotfuscator
asm.GetTypes()
时,抛出一个ReflectionTypeLoadException,其中

定位的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x8013100)

我在谷歌上搜索了几个小时,没有结果。提前谢谢


编辑:经过一些研究和调试,我认为这是清单中的一个问题,因为反射无法看到(或加载)程序集中的类型。我用Reflector打开了模糊程序集,但一切似乎都很好。

我认为模糊处理与反射不匹配。事实上,我认为这是使用模糊处理时的首要权衡


请参阅链接,了解如何克服需要反映在

上的类型。通过重命名部分或全部方法名、类型名等,模糊处理可以部分地起作用


当使用模糊处理时,反射通常会失败。如果幸运的话,在选择要混淆的内容时可以有选择性,但这需要注意细节。

您的程序集是强命名的还是经过身份验证码签名的?模糊处理会更改程序集的结构,为了在模糊处理后使用它们,您需要放弃它们


Dotfuscator的商业版本支持重新指定程序集(强名称和Authenticode),而如果您使用的是免费社区版,则需要在Dotfuscator中作为构建后步骤重新指定。

我尝试在Dotfuscator中禁用尽可能多的内容,我还尝试用[System.Reflection.Obfuscation(Exclude=true)]标记至少一个类。官方指南说了些什么,我认为代码应该可以工作。无论如何,非常感谢你的链接,我将很快评估其他模糊器