web-dev-qa-db-ja.com

vshost.exeファイルの目的は何ですか?

C#で "hello world"アプリケーションを作成してコンパイルすると、メインのexeファイルとは別に、Debugフォルダーに3つのファイルが表示されます(例:HelloWorld.exe)。

  1. HelloWorld.vshost.exe
  2. HelloWorld.pdb
  3. HelloWorld.vshost.exe.manifest

これらのファイルの目的は何ですか?

468
Milen

Vshost.exe機能はVS2005で導入されました(あなたのコメントに答えるため)。

その目的は主にデバッグの起動を早くすることです - 基本的にはフレームワークが実行されているプロセスがすでにあり、必要なときにすぐにアプリケーションをロードする準備ができています。

詳細については、 このMSDNの記事 および このブログ投稿 を参照してください。

408
Jon Skeet
  • .exe - 「通常の」実行可能ファイル

  • .vshost.exe - デバッグを支援するための実行可能ファイルの特別なバージョン。詳しくは MSDN をご覧ください。

  • .pdb - デバッグシンボルを含む プログラムデータベース

  • .vshost.exe.manifest - 主にライブラリへの依存関係を含む一種の 構成ファイル

170

Vshost.exeファイルは、Visual Studioによって実行される実行可能ファイル(visual studio Host executable)です。これは、Visual Studioにリンクしてデバッグを向上させる実行可能ファイルです。

アプリケーションを他の人に配布するときは、vshost.exeファイルまたは.pdb(デバッグデータベース)ファイルを使用しないでください。

62
Will Eddins

追加すると、リリースビルド構成のvshostファイルの作成をオフにして、デバッグに対して有効にすることができます。

ステップ

  • プロジェクトプロパティ>デバッグ>設定(リリース)> Visual Studioホスティングプロセスを無効にする
  • プロジェクトプロパティ>デバッグ>設定(デバッグ)> Visual Studioホスティングプロセスを有効にする

Screenshot from VS2010

参照先

  1. MSDN How to:ホスティングプロセスを無効にする
  2. MSDNホスティングプロセス(vshost.exe)

MSDNからの抜粋方法:ホスティングプロセスを無効にする

ホスティングプロセスが有効になっていると、特定のAPIへの呼び出しが影響を受ける可能性があります。このような場合、正しい結果を返すためにホスティングプロセスを無効にする必要があります。

ホスティングプロセスを無効にする

  1. Visual Studioで実行可能プロジェクトを開きます。実行ファイルを生成しないプロジェクト(クラスライブラリやサービスプロジェクトなど)には、このオプションはありません。
  2. プロジェクトメニューで、プロパティをクリックします。
  3. デバッグタブをクリックします。
  4. [Visual Studioホスティングプロセスを有効にする]チェックボックスをオフにします。

ホスティングプロセスが無効になっていると、いくつかのデバッグ機能が使用できないか、パフォーマンスが低下します。詳細については、 デバッグとホスティングプロセス を参照してください。

一般に、ホスティングプロセスが無効になっている場合:

  • .NET Frameworkアプリケーションのデバッグを開始するのに必要な時間が長くなります。
  • デザイン時の式評価は利用できません。
  • 部分信頼デバッグは使用できません。
19
SimplyInk

よくわかりませんが、デバッグの最適化だと思います。ただし、通常はオフにし(プロジェクトの[Debug]プロパティを参照)、減速に気付かず、デバッグに関して制限がないため、Guardによるとデバッグには必要ありません。

10
Brian Rasmussen

それはデバッグのための長期にわたるフレームワークプロセスのようです(ロード時間を減らすために?)。デバッガからアプリケーションを2回起動すると、同じvshost.exeプロセスが使用されることがよくあります。最初にユーザーがロードしたDLLをすべてアンロードするだけです。管理対象プロセスからのAPIフックに悩まされている場合、これは奇妙なことをします。

2
Joshua