我第一次使用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打开了混淆的程序集,但一切似乎都很好。
答案 0 :(得分:1)
模糊处理部分通过重命名部分或全部方法名称,类型名称等来实现。
使用混淆时,反射常常会失败。如果你很幸运,你可以选择 来进行混淆,但这需要注意细节。
答案 1 :(得分:1)
您的程序集是强名称还是Authenticode签名?混淆会改变程序集的结构,并且为了在混淆后使用它们,您需要重新签名它们。
Dotfuscator的商业版本支持组件(强名称和Authenticode)的重新签名,而如果您使用免费的Community Edition,则需要在Dotfuscator中作为后期构建步骤辞职。
答案 2 :(得分:0)
我认为混淆效果并不适用于反射。事实上,我认为这是使用混淆时的头号交易。
请参阅this链接,了解如何克服需要反映的类型