C# MethodInfo.Invoke崩溃

C# MethodInfo.Invoke崩溃,c#,obfuscation,invoke,methodinfo,C#,Obfuscation,Invoke,Methodinfo,我有以下代码来保护我的文件不被破坏: Assembly asm = Assembly.Load(decFL); MethodInfo entryPoint = asm.EntryPoint; entryPoint.Invoke(null, new object[] { new string[] { "[ARGS]", "" } }); 显然,[ARGS]被参数替换。现在,当我用我想要保护的程序编译我的保护存根时,目标是v2.0,当我试图运行时,它崩溃了 Could not load type

我有以下代码来保护我的文件不被破坏:

Assembly asm = Assembly.Load(decFL);
MethodInfo entryPoint = asm.EntryPoint;
entryPoint.Invoke(null, new object[] { new string[] { "[ARGS]", "" } });
显然,[ARGS]被参数替换。现在,当我用我想要保护的程序编译我的保护存根时,目标是v2.0,当我试图运行时,它崩溃了

Could not load type 'System.Func`2' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
这来自MethodInfo.Invoke行。当我根据v4.0版本编译它时,它成功运行,但没有显示任何窗口来指示程序正在运行。相反,它只是在到达MethodInfo.Invoke后关闭


我真的不知道是什么原因造成了这种情况。

我忘了补充一点,如果我制作了一个只在控制台中打招呼的小应用程序,并根据v4.0和我的存根@v2.0进行编译,它会运行得很好。转到Debug->Exceptions并选中“抛出”下的所有复选框,它应该抛出一些异常,而不是仅仅关闭。我做不到这一点,当我从生成器应用程序编译时。我将整个客户端包装在一个try/catch语句中,因此我什么也得不到。直到.Net 3.5才引入System.Func。您试图运行的程序集是用哪个版本的.Net编写的?我想这与以下内容有关:var q=alphabet.Selectx=>x.ToString;int size=3;对于int i=0;i字母表,x,y=>x+y;-它是根据v4.0编译的