C#で "hello world"アプリケーションを作成してコンパイルすると、メインのexeファイルとは別に、Debugフォルダーに3つのファイルが表示されます(例:HelloWorld.exe)。
これらのファイルの目的は何ですか?
.exe - 「通常の」実行可能ファイル
.vshost.exe - デバッグを支援するための実行可能ファイルの特別なバージョン。詳しくは MSDN をご覧ください。
.pdb - デバッグシンボルを含む プログラムデータベース
.vshost.exe.manifest - 主にライブラリへの依存関係を含む一種の 構成ファイル
Vshost.exeファイルは、Visual Studioによって実行される実行可能ファイル(visual studio Host executable)です。これは、Visual Studioにリンクしてデバッグを向上させる実行可能ファイルです。
アプリケーションを他の人に配布するときは、vshost.exeファイルまたは.pdb(デバッグデータベース)ファイルを使用しないでください。
追加すると、リリースビルド構成のvshostファイルの作成をオフにして、デバッグに対して有効にすることができます。
ステップ
参照先
ホスティングプロセスが有効になっていると、特定のAPIへの呼び出しが影響を受ける可能性があります。このような場合、正しい結果を返すためにホスティングプロセスを無効にする必要があります。
ホスティングプロセスを無効にする
ホスティングプロセスが無効になっていると、いくつかのデバッグ機能が使用できないか、パフォーマンスが低下します。詳細については、 デバッグとホスティングプロセス を参照してください。
一般に、ホスティングプロセスが無効になっている場合:
- .NET Frameworkアプリケーションのデバッグを開始するのに必要な時間が長くなります。
- デザイン時の式評価は利用できません。
- 部分信頼デバッグは使用できません。
よくわかりませんが、デバッグの最適化だと思います。ただし、通常はオフにし(プロジェクトの[Debug]プロパティを参照)、減速に気付かず、デバッグに関して制限がないため、Guardによるとデバッグには必要ありません。
それはデバッグのための長期にわたるフレームワークプロセスのようです(ロード時間を減らすために?)。デバッガからアプリケーションを2回起動すると、同じvshost.exeプロセスが使用されることがよくあります。最初にユーザーがロードしたDLLをすべてアンロードするだけです。管理対象プロセスからのAPIフックに悩まされている場合、これは奇妙なことをします。