.net - 无法加载混淆程序集

标签 .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() 抛出 ReflectionTypeLoadException 时说

找到的程序集的 list 定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

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

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

最佳答案

您的程序集是否具有强命名或 Authenticode 签名?混淆会更改程序集的结构,为了在混淆后使用它们,您需要重新注册它们。

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

关于.net - 无法加载混淆程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309677/

相关文章:

c# - 非托管内存中托管类 header 的布局和大小是多少?

java - 使用 java.lang.invoke.MethodHandle 调用私有(private)方法

.net - 编译 .NET 程序集时使用网络模块的用例?

.net - 程序集加载版本不匹配 : Why is it loading?

.net - 个人身份信息 (PII)、跟踪和消息记录

c# - C#中如何计算异步方法的执行时间

c# - "\n"和 Environment.NewLine 的区别

c# - 是否应该使用 Reflection.Emit 将属性作为方法发出?

c# - 加载具有较低权限的程序集

c# - 建议的组合框下拉宽度