无法加载混淆的程序集

时间:2010-11-30 01:09:44

标签: .net reflection assemblies load dotfuscator

我第一次使用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()时抛出一个反射式的指示

The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

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

编辑:经过一些研究和调试后,我认为清单中存在问题,因为反射无法查看(或加载)程序集内的类型。我用Reflector打开了混淆的程序集,但一切似乎都很好。

3 个答案:

答案 0 :(得分:1)

模糊处理部分通过重命名部分或全部方法名称,类型名称等来实现。

使用混淆时,反射常常会失败。如果你很幸运,你可以选择 来进行混淆,但这需要注意细节。

答案 1 :(得分:1)

您的程序集是强名称还是Authenticode签名?混淆会改变程序集的结构,并且为了在混淆后使用它们,您需要重新签名它们。

Dotfuscator的商业版本支持组件(强名称和Authenticode)的重新签名,而如果您使用免费的Community Edition,则需要在Dotfuscator中作为后期构建步骤辞职。

答案 2 :(得分:0)

我认为混淆效果并不适用于反射。事实上,我认为这是使用混淆时的头号交易。

请参阅this链接,了解如何克服需要反映的类型