Яка мета файлу vshost.exe?


483

Коли я створюю і складаю "Привіт, світ!" програми в C #, я отримую три файли у папці налагодження, крім основної EXE (наприклад, HelloWorld.exe)

  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, то чому вони все ще включаються, коли я компілюю у Release?
iliketocode

1
Напевно, вони зняли його у Visual Studio 2017
Феліпе Фуджі Пессото

175
  • .exe - "звичайний" виконуваний файл

  • .vshost.exe - спеціальна версія виконуваного файлу, що сприяє налагодженню; см MSDN для деталей

  • .pdb - база даних програми з символами налагодження

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


62

Файл vshost.exe - це виконуваний файл, запущений Visual Studio (виконуваний хост Visual Studio). Це виконуваний файл, який посилається на Visual Studio і покращує налагодження.

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


Я пам'ятаю, у нас не було такого виконуваного файлу у VS2003 (все ж у нас були точки прориву). Чи можете ви детальніше розглянути це?
Мехрдад Афшарі

1
Крім того, маніфест - це метадані про програму, яка, як правило, також зв'язується у виконуваний файл. Файл .pdb - це портативна база даних налагодження і містить інформацію про налагодження про скомпільований виконуваний файл, наприклад, який пункт у виконуваному файлі відповідає тому, який рядок у коді.
Джої

3
Процес хоста VS використовується лише для покращення налагодження - але він не дозволяє налагоджувати.
Даніель Брюкнер

23

Додавши, ви можете вимкнути створення файлів vshost для своєї конфігурації збірки Release та включити її для налагодження .

Кроки

  • Властивості проекту > Налагодження > Конфігурація (випуск)> Вимкнути процес хостингу Visual Studio
  • Властивості проекту > Налагодження > Конфігурація (налагодження)> Увімкнути процес хостингу Visual Studio

Знімок екрана з VS2010

Довідково

  1. MSDN Як: відключити процес хостингу
  2. Процес хостингу MSDN (vshost.exe)

Витяг з MSDN Як: відключити хостинг

На дзвінки до певних API можуть впливати, коли включено процес хостингу. У цих випадках необхідно відключити хостинг, щоб повернути правильні результати.

Щоб вимкнути процес хостингу

  1. Відкрийте виконуваний проект у Visual Studio. Проекти, які не створюють виконувані файли (наприклад, бібліотека класів або сервісні проекти), не мають цієї опції.
  2. У меню Проект натисніть Властивості .
  3. Перейдіть на вкладку Налагодження .
  4. Зніміть прапорець Увімкнути процес хостингу Visual Studio .

Коли процес хостингу вимкнено, кілька функцій налагодження недоступні або знижується продуктивність. Для отримання додаткової інформації див. Налагодження та процес хостингу .

Загалом, коли процес хостингу вимкнено:

  • Час, необхідний для початку налагодження програм .NET Framework, збільшується.
  • Оцінка вираження дизайну та часу недоступна.
  • Часткова налагодження довіри недоступна.

10

Я не впевнений, але я вважаю, що це оптимізація налагодження. Однак я зазвичай вимикаю його (див. Властивості налагодження для проекту), і я не помічаю жодного уповільнення, і я не бачу обмежень, що стосуються налагодження.


Що таке "гвардія"? Посилання на користувача з однією з відповідей тут? Щось ще? Чи можете ви оновити свою відповідь (наприклад, за допомогою прямого посилання, оскільки імена користувачів можуть змінюватися в будь-який час)?
Пітер Мортенсен

Я думаю, це було посиланням на іншу відповідь, але це було в 09, тому пробачте мене, якщо я не пам'ятаю деталей.
Брайан Расмуссен

2

Здається, це тривалий рамковий процес налагодження (зменшити час завантаження?). Я виявив, що при запуску програми два рази з налагоджувача часто буде використовуватися той самий процес vshost.exe. Він просто вивантажує всі завантажені користувачем DLL спочатку. Це робить дивні речі, якщо ви обманюєте гачки API з керованих процесів.


1
Постійний процес також спричиняє виняток (порушення доступу), коли мій проект має якийсь код для P / Invoke. Проблема зникла після відключення хост-процесу.
Томсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.