Quel est le but du fichier vshost.exe?

483

Quand je crée et compile un "Hello, World!" application en C #, je reçois trois fichiers dans le dossier Debug en dehors de l'exe principal (par exemple HelloWorld.exe)

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

À quoi servent ces fichiers?

Milen
la source

Réponses:

416

La fonctionnalité vshost.exe a été introduite avec Visual Studio 2005 (pour répondre à votre commentaire).

Le but est principalement de rendre le lancement du débogage plus rapide - fondamentalement, il existe déjà un processus avec le framework en cours d'exécution, juste prêt à charger votre application dès que vous le souhaitez.

Consultez cet article MSDN et cet article de blog pour plus d'informations.

Jon Skeet
la source
29
Est-ce la raison pour laquelle lorsque j'exécute Console.Write (System.AppDomain.CurrentDomain.FriendlyName) à partir du débogueur, j'obtiens app.vshost.exe et lorsque j'exécute directement à partir de l'exe, j'obtiens la sortie sous app.exe
Milen
@Milen, msdn.microsoft.com/en-us/library/ms242202.aspx a mentionné le résultat différent de AppDomain.CurrentDomain.FriendlyName avec et sans processus hôte.
Thomson
2
Si des fichiers vschost et .pdb existent à des fins de débogage, alors pourquoi sont-ils toujours inclus lorsque je compile dans la version?
iliketocode
1
Je suppose qu'ils l'ont supprimé dans Visual Studio 2017
Felipe Fujiy Pessoto
175
  • .exe - l'exécutable «normal»

  • .vshost.exe - une version spéciale de l'exécutable pour faciliter le débogage; voir MSDN pour plus de détails

  • .pdb - la base de données du programme avec des symboles de débogage

  • .vshost.exe.manifest - une sorte de fichier de configuration contenant principalement des dépendances sur les bibliothèques

Daniel Brückner
la source
62

Le fichier vshost.exe est l'exécutable exécuté par Visual Studio (exécutable hôte Visual Studio). Il s'agit de l'exécutable qui relie à Visual Studio et améliore le débogage.

Lorsque vous distribuez votre application à d'autres personnes, vous n'utilisez pas les fichiers vshost.exe ou .pdb (base de données de débogage).

Will Eddins
la source
Je me souviens que nous n'avions pas un tel exécutable dans VS2003 (pourtant nous avions des points d'arrêt). Pourriez-vous préciser ceci?
Mehrdad Afshari
1
En outre, le manifeste est des métadonnées sur l'application qui sont généralement également liées à l'exécutable. Le fichier .pdb est une base de données de débogage portable et contient des informations de débogage sur l'exécutable compilé, comme le point de l'exécutable qui correspond à quelle ligne de code.
Joey
3
Le processus hôte VS est uniquement utilisé pour améliorer le débogage - mais il ne permet pas le débogage.
Daniel Brückner
23

En ajoutant, vous pouvez désactiver la création de fichiers vshost pour la configuration de votre version Release et l' activer pour le débogage .

Pas

  • Propriétés du projet > Débogage > Configuration (version)> Désactiver le processus d'hébergement Visual Studio
  • Propriétés du projet > Débogage > Configuration (débogage)> Activer le processus d'hébergement Visual Studio

Capture d'écran de VS2010

Référence

  1. MSDN Comment: désactiver le processus d'hébergement
  2. Processus d'hébergement MSDN (vshost.exe)

Extrait de MSDN Comment: désactiver le processus d'hébergement

Les appels vers certaines API peuvent être affectés lorsque le processus d'hébergement est activé. Dans ces cas, il est nécessaire de désactiver le processus d'hébergement pour retourner les résultats corrects.

Pour désactiver le processus d'hébergement

  1. Ouvrez un projet exécutable dans Visual Studio. Les projets qui ne produisent pas d'exécutables (par exemple, bibliothèque de classes ou projets de service) n'ont pas cette option.
  2. Dans le menu Projet , cliquez sur Propriétés .
  3. Cliquez sur l' onglet Débogage .
  4. Décochez la case Activer le processus d'hébergement Visual Studio .

Lorsque le processus d'hébergement est désactivé, plusieurs fonctionnalités de débogage ne sont pas disponibles ou connaissent une baisse des performances. Pour plus d'informations, voir Débogage et processus d'hébergement .

En général, lorsque le processus d'hébergement est désactivé:

  • Le temps nécessaire pour commencer le débogage des applications .NET Framework augmente.
  • L'évaluation des expressions au moment du design n'est pas disponible.
  • Le débogage d'approbation partielle n'est pas disponible.
SimplyInk
la source
10

Je ne suis pas sûr, mais je pense que c'est une optimisation de débogage. Cependant, je le désactive généralement (voir Propriétés de débogage du projet) et je ne remarque aucun ralentissement et je ne vois aucune limitation en ce qui concerne le débogage.

Brian Rasmussen
la source
Qu'est-ce que "Guard"? Référence à un utilisateur avec l'une des réponses ici? Autre chose? Pouvez-vous mettre à jour votre réponse (par exemple avec un lien direct, car les noms d'utilisateur peuvent changer à tout moment)?
Peter Mortensen
Je pense que c'était une référence à une autre réponse, mais c'était en 09 alors pardonnez-moi si je ne me souviens pas des détails.
Brian Rasmussen
2

Il semble que ce soit un processus de longue durée pour le débogage (pour réduire les temps de chargement?). J'ai découvert que lorsque vous démarrez deux fois votre application à partir du débogueur, le même processus vshost.exe est souvent utilisé. Il décharge tout d'abord toutes les DLL chargées par l'utilisateur. Cela fait des choses étranges si vous vous amusez avec les crochets API des processus gérés.

Joshua
la source
1
Le processus persistant provoque également une exception (violation d'accès) lorsque mon projet a du code pour effectuer P / Invoke. Le problème a disparu après avoir désactivé le processus hôte.
Thomson