0
バイト配列に.net exeがあります。私は、アセンブリとしてそれをロードし、それが動作する、「hello」を出力し、いくつかの愚かなコマンドラインアプリです私のテストexeファイルの魔女で、それがエントリーポイントパラメータカウントexeエントリポイントの読み込み時に不一致C#
var assembly = System.Reflection.Assembly.Load(buff);
var entryPoint = assembly.EntryPoint;
var commandArgs = new string[0];
var returnValue = entryPoint.Invoke(null, new object[] { commandArgs });
だ呼び出そう。しかし、いくつかの他のサードパーティのexeでそれは失敗しますParameter Count Mismatch
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at ConsoleApplication1.Program.a() in C:\Documents and Settings\user\Desktop\OLD\ConsoleApplication8\ConsoleApplication8\Program.cs:line 211
at ConsoleApplication1.Program.Main(String[] args) in C:\Documents and Settings\user\Desktop\OLD\ConsoleApplication8\ConsoleApplication8\Program.cs:line 41
なぜですか?
ここに私が知っているのは、exe - それは.netです、それはpublic static void main()メソッドを持っていて、それはエントリーポイントとして正しく識別されていて、比較的小さな単純なアプリケーションです。
あなたが呼び出さ 'Main'方法を示すことができました。 –
どういう意味ですか?基本となるMethodInfoオブジェクトを持つエントリポイントオブジェクトです。 ILSpyと逆にすると、次のようになります。using System; 名前空間J {\tパブリッククラス \t {\t \t [STAThread] \t \t公共の静的な無効メイン() \t \t { \t \t \t OK.ko()。 \t \t} \t}} – JDOE
(メイン '公共の静的な無効)' main'メソッドは引数を取らない 'ので、あなたは、あなたの' commandArgs'引数を必要としないことを示唆しています。 'entryPoint.Invoke(null、new object [0]);'を試してください。 –