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


483

「Hello、World!」を作成してコンパイルすると C#のアプリケーションでは、メインのexeファイル(HelloWorld.exeなど)とは別に、Debugフォルダーに3つのファイルを取得します。

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

これらのファイルはどのような目的に役立ちますか?

回答:


416

vshost.exe機能はVisual Studio 2005で導入されました(コメントに答えるため)。

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

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


29
デバッガからConsole.Write(System.AppDomain.CurrentDomain.FriendlyName)を実行するとapp.vshost.exeが取得され、exeから直接実行するとapp.exeとして出力が出力されるのはそのためです
Milen

@ Milen、msdn.microsoft.com / en-us / library / ms242202.aspxは、ホストプロセスがある場合とない場合のAppDomain.CurrentDomain.FriendlyNameの異なる結果について言及しました。
トムソン

2
vschostと.pdbファイルがデバッグ目的で存在する場合、リリースでコンパイルするときにそれらがまだ含まれているのはなぜですか?
iliketocode 16

1
彼らはVisual Studio 2017でそれを削除したと思います
Felipe Fujiy Pessoto 2016


62

vshost.exeファイルは、Visual Studioによって実行される実行可能ファイル(Visual Studioホスト実行可能ファイル)です。これはVisual Studioにリンクし、デバッグを改善する実行可能ファイルです。

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


VS2003にはそのような実行可能ファイルはありませんでした(ただし、ブレークポイントはありました)。詳しく説明していただけますか?
Mehrdad Afshari、

1
さらに、マニフェストはアプリケーションに関するメタデータであり、通常は実行可能ファイルにもリンクされます。.pdbファイルはポータブルデバッグデータベースであり、実行可能ファイルのどのポイントがコードのどの行に対応するかなど、コンパイルされた実行可能ファイルに関するデバッグ情報が含まれています。
ジョーイ

3
VSホストプロセスはデバッグを改善するためにのみ使用されますが、デバッグは有効になりません。
DanielBrückner

23

さらに、リリースビルド構成のvshostファイルの作成をオフにして、Debugで有効にすることができます。

手順

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

VS2010からのスクリーンショット

参照

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

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

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

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

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

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

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

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

10

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


「ガード」とは?ここで答えの1つを持っているユーザーへの言及?他に何か?回答を更新できますか(たとえば、ユーザー名はいつでも変更できるため、直接リンクを使用して)?
Peter Mortensen、

これは別の回答への参照だったと思いますが、これは09年のことなので、詳細を覚えていない場合はご容赦ください。
ブライアンラスムッセン

2

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


1
プロジェクトにP / Invokeを実行するためのコードが含まれていると、永続的なプロセスによって例外(アクセス違反)も発生します。ホストプロセスを無効にした後、問題は消えました。
トムソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.