の作業ではないC#のリフレクションは、私はリソースとして管理実行可能でプログラムを持って、 私は次のコードでリフレクションを使用してexeファイルをロードしよう:100%
byte[] file = Properties.Resources.ExeName;
Assembly assembly = Assembly.Load(file);
// search for the Entry Point
MethodInfo method = assembly.EntryPoint;
if (method != null)
{
// create an instance of the Startup form Main method
object handle = assembly.CreateInstance(method.Name);
// invoke the application starting point
method.Invoke(handle, null);
}
私がロードしようとアセンブリがあります次の命令持つの.NET Framework 2.0に対してコンパイル有効マネージドアセンブリ:
MessageBox.Show("Some Text");
//other stuff goes here
は、問題は、私は私がどんなMessageBox.Show ("Message")
ダイアログを取得しないアプリケーションを実行すると、私は、コードのすべてがするまで正常に動作してブレークポイントを入れてみましたですそれはr私はここにステップオーバーしたら、それは任意のエラーまたは例外ではない、それはエディタ(VS 2017のCommunity Edition)がフリーズを与えないどちらも、何も起こりません、
method.Invoke(handle, null);
:命令をeaches。
私はそれが正常に動作し、他のマネージアセンブリをロードしようとした(アセンブリが同じ.NET Frameworkのバージョン(2.0)に対して遵守されて提供されます)。
誰もが予想されるように、所望のexeファイルを実行しない理由かもしれない可能なものを指すことができます。
だけではサイズがそれを行うには何も持ってはいけません。私たちは仕事でマルチメガバイトのアセンブリを持っており、反射はうまく動作します。いずれにしても、「なぜ私のコードが機能していないのですか」といったコンテンツを含む投稿は、いくつかのコードを投稿する必要があります。また、300KBのファイルが実際に.NETアセンブリであることを確認していますか?あなたのプログラムで空のキャッチブロックを使ってtry/catch文がありますか? –
実行ファイルのサイズは何とは何の関係もありません。反射*を使ってexeをロードすることが何を意味するのかは不明です。 **あなたは何をしようとしていますか?あなたはすべてのあなたが*ロード*(つまり、あらゆる手段).NET実行可能ファイルを管理されている実行ファイルの特定はありますか?ネイティブアプリケーションではリフレクションは機能しません。 LasseV.Karlsen @ –
、イエスのファイルがあります。あなたのコメント – Constantine