Какова цель файла vshost.exe? - PullRequest
       16

Какова цель файла vshost.exe?

467 голосов
/ 21 апреля 2009

Когда я создаю и компилирую приложение "hello world" в C #, я получаю три файла в папке Debug помимо основного exe (например, HelloWorld.exe)

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

Для каких целей служат эти файлы?

Ответы [ 6 ]

408 голосов
/ 21 апреля 2009

Функция vshost.exe была представлена ​​в VS2005 (чтобы ответить на ваш комментарий).

Цель этого состоит в основном для ускорения запуска отладки - в основном уже есть процесс с работающей платформой, просто готовый загрузить приложение, как только вы захотите.

Подробнее см. в этой статье MSDN и в этом блоге .

170 голосов
/ 21 апреля 2009
  • .exe - «нормальный» исполняемый файл

  • .vshost.exe - специальная версия исполняемого файла для облегчения отладки; Подробнее см. MSDN

  • .pdb - База данных программы с символами отладки

  • .vshost.exe.manifest - разновидность файла конфигурации , содержащая в основном зависимости от библиотек

62 голосов
/ 21 апреля 2009

Файл vshost.exe - это исполняемый файл, запускаемый Visual Studio (исполняемый файл хоста Visual Studio). Это исполняемый файл, который ссылается на Visual Studio и улучшает отладку.

Когда вы распространяете свое приложение среди других, вы не используете файлы vshost.exe или .pdb (база данных отладки).

18 голосов
/ 17 мая 2017

Кроме того, вы можете отключить создание файлов vshost для вашей конфигурации сборки Release и включить ее для Debug .

Steps

  • Свойства проекта > Отладка > Конфигурация (выпуск)> Отключить процесс размещения Visual Studio
  • Свойства проекта > Отладка > Конфигурация (Отладка)> Включить процесс размещения Visual Studio

Screenshot from VS2010

Ссылка

  1. MSDN Как: отключить процесс хостинга
  2. Процесс размещения MSDN (vshost.exe)

Выдержка из MSDN Как: отключить процесс хостинга

Вызовы определенных API могут быть затронуты, когда включен процесс хостинга. В этих случаях необходимо отключить процесс хостинга, чтобы получить правильные результаты.

Чтобы отключить процесс хостинга

  1. Откройте исполняемый проект в Visual Studio. Проекты, которые не создают исполняемые файлы (например, библиотеки классов или проекты служб), не имеют этой опции.
  2. В меню Проект нажмите Свойства .
  3. Перейдите на вкладку Debug .
  4. Снимите флажок Включить процесс размещения Visual Studio .

Когда процесс хостинга отключен, некоторые функции отладки недоступны или производительность снижается. Для получения дополнительной информации см. Отладка и процесс хостинга .

Обычно при отключенном хостинге:

  • Время, необходимое для начала отладки приложений .NET Framework, увеличивается.
  • Оценка выражения во время разработки недоступна.
  • Частичная отладка доверия недоступна.
10 голосов
/ 21 апреля 2009

Я не уверен, но я считаю, что это оптимизация отладки. Тем не менее, я обычно отключаю его (см. Свойства отладки для проекта) и не замечаю никакого замедления и не вижу никаких ограничений, когда дело доходит до отладки, поэтому он определенно не нужен для отладки, как заявлено Guard.

2 голосов
/ 10 сентября 2009

Похоже, это длительный процесс разработки инфраструктуры для отладки (чтобы уменьшить время загрузки?). Я обнаружил, что когда вы дважды запускаете приложение из отладчика, часто используется один и тот же процесс vshost.exe. Сначала он выгружает все загруженные пользователем библиотеки DLL. Это делает странные вещи, если вы дурачитесь с хуками API от управляемых процессов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...