Когда я создаю и компилирую приложение "hello world" в С#, я получаю три файла в папке Debug отдельно от основного exe (например, HelloWorld.exe)
- HelloWorld.vshost.exe
- HelloWorld.pdb
- HelloWorld.vshost.exe.manifest
Какую цель выполняют эти файлы?
Когда я создаю и компилирую приложение "hello world" в С#, я получаю три файла в папке Debug отдельно от основного exe (например, HelloWorld.exe)
Какую цель выполняют эти файлы?
Функция vshost.exe была представлена с VS2005 (чтобы ответить на ваш комментарий).
Цель этого заключается в том, чтобы ускорить запуск отладки - в основном там уже есть процесс с запущенной средой, просто готов загрузить ваше приложение, как только захочешь.
См. Эту статью MSDN и эту запись в блоге для получения дополнительной информации.
.exe - нормальный исполняемый файл
.vshost.exe - специальная версия исполняемого файла, способствующая отладке; Подробнее см. MSDN
.pdb - База данных программ с символами отладки
.vshost.exe.manifest - своего рода файл конфигурации, содержащий в основном зависимости от библиотек
Файл vshost.exe - это исполняемый файл, исполняемый Visual Studio (исполняемый исполняемый файл визуальной студии). Это исполняемый файл, который ссылается на Visual Studio и улучшает отладку.
Когда вы распространяете приложение другим, вы не используете файлы vshost.exe или .pdb(debug database).
Добавляя, вы можете отключить создание файлов vshost для конфигурации сборки Release и включить его для Отладки.
Шаги
Ссылка
Выдержка из MSDN Как отключить хостинг
При обработке хостинга могут быть затронуты вызовы некоторых API. В этих случаях необходимо отключить процесс хостинга, чтобы вернуть правильные результаты.
Чтобы отключить процесс хостинга
Когда процесс хостинга отключен, некоторые функции отладки недоступны или имеют пониженную производительность. Для получения дополнительной информации см. Отладка и процесс хостинга.
В целом, когда хостинг-процесс отключен:
- Время, необходимое для начала отладки приложений .NET Framework, увеличивается.
- Оценка выражения времени разработки не доступна.
- Отладка частичного доверия недоступна.
Я не уверен, но я считаю, что это оптимизация отладки. Тем не менее, я обычно выключаю его (см. Свойства отладки для проекта), и я не замечаю никакого замедления, и я не вижу никаких ограничений, когда дело доходит до отладки, поэтому он, безусловно, не нужен для отладки, как указано Guard.
Кажется, что это длительный процесс для отладки (для уменьшения времени загрузки?). Я обнаружил, что при запуске приложения дважды из отладчика часто используется тот же процесс vshost.exe. Сначала он выгружает все загруженные пользователем библиотеки DLL. Это делает странные вещи, если вы обманываете API-интерфейсами от управляемых процессов.