491 votes

A quoi sert le fichier vshost.exe ?

Lorsque je crée et compile une application "Hello, World !" en C#, j'obtiens 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

A quoi servent ces dossiers ?

416voto

Jon Skeet Points 692016

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

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

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

29 votes

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 je l'exécute directement à partir de l'exe, j'obtiens app.exe.

0 votes

@Milen, msdn.microsoft.com/fr/us/library/ms242202.aspx a mentionné les différents résultats de AppDomain.CurrentDomain.FriendlyName avec et sans processus hôte.

2 votes

Si les fichiers vschost et .pdb existent à des fins de débogage, pourquoi sont-ils toujours inclus lorsque je compile en Release ?

175voto

Daniel Brückner Points 36242
  • .exe - l'exécutable "normal".

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

  • .pdb - le 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 à des bibliothèques

63voto

Will Eddins Points 6451

Le fichier vshost.exe est l'exécutable lancé par Visual Studio (exécutable hôte de Visual Studio). Il s'agit de l'exécutable qui se lie à 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).

0 votes

Je me souviens que nous n'avions pas un tel exécutable dans VS2003 (pourtant nous avions des points d'arrêt). Pouvez-vous nous en dire plus ?

1 votes

En outre, le manifeste est une métadonnée sur l'application qui est généralement liée à 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 dans l'exécutable correspondant à la ligne de code.

3 votes

Le processus VS host est uniquement utilisé pour améliorer le débogage - mais il ne permet pas le débogage.

10voto

Brian Rasmussen Points 68853

Je ne suis pas sûr, mais je crois qu'il s'agit d'une optimisation du débogage. Cependant, j'ai l'habitude de la désactiver (voir les propriétés de débogage pour le projet) et je ne remarque aucun ralentissement et je ne vois aucune limitation en matière de débogage.

0 votes

Qu'est-ce que "Guard" ? Référence à un utilisateur avec l'une des réponses ici ? Quelque chose d'autre ? Pouvez-vous mettre à jour votre réponse (par exemple avec un lien direct, car les noms d'utilisateurs peuvent changer à tout moment) ?

0 votes

Je pense qu'il s'agissait d'une référence à une autre réponse, mais c'était en 2009, alors pardonnez-moi si je ne me souviens pas des détails.

2voto

Joshua Points 13231

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

1 votes

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X