Quel est le but du processus d'hébergement de Visual Studio?

165

Lors du débogage d'un programme à l'aide de Visual Studio, vous avez la possibilité de Enable the Visual Studio hosting process. Quel est le but de cette option et quel est son effet?

Frédéric le fou
la source
88
Difficile de croire que cette question a été fermée comme "pas une vraie question"! Le processus d'hébergement est assez réel, sachant ce qu'il fait est important pour tout programmeur .NET. Comme toute option mystérieuse dans une page de paramètres Visual Studio facile d'accès. Faisons rouvrir ces gens.
Hans Passant

Réponses:

85

La bibliothèque MSDN ne donne pas de très bonnes informations sur le "processus d'hébergement". Les deux dernières fonctionnalités répertoriées dans le lien d'Eric sont en fait des problèmes induits par la fonctionnalité. Il y en a un autre que vous allez sûrement rencontrer tôt ou tard: il utilise un autre fichier app.config. L'actif est nommé yourapp.vshost.exe.config. Faites attention à cela lorsque vous apportez des modifications manuelles au fichier.

Une autre fonctionnalité prise en charge qui est très visible lorsque vous déboguez votre application mais qui n'est mentionnée nulle part est ce qui arrive à la sortie produite par Console.Write (). Dans une application en mode non console, il est redirigé vers la fenêtre de sortie de l'EDI. Très utile.

Le terme «hébergement» fait référence à une fonctionnalité du CLR, il peut être «hébergé». SQL Server et ASP.NET sont des exemples d'hôtes CLR personnalisés. L'hébergement permet de configurer le CLR avant qu'il ne démarre. Une utilisation principale de ceci est la configuration de l'AppDomain principal et la mise en place de stratégies de sécurité personnalisées. C'est exactement ce que fait le processus d'hébergement.

Un bon exemple d'hôte CLR personnalisé est disponible dans cette question .

Pour faire court: en mode débogage, vous utilisez une version personnalisée du CLR, une version qui améliore l'expérience de débogage.

Hans Passant
la source
4
J'ai l'habitude de désactiver cette fonctionnalité à chaque nouveau projet. J'ai rencontré des problèmes étranges lorsque je travaillais avec C ++ / CLI WinForms Designer, qui ne se produisaient pas avec cette fonctionnalité désactivée.
surfen
Il est peu probable que cela soit pertinent, l'EDI C ++ n'utilise pas de processus d'hébergement ni n'est utilisé en mode conception.
Hans Passant
2
En outre, sur le site Web de Microsoft ( msdn.microsoft.com/en-us/library/ms242202.aspx ), il indique qu'il permet le débogage de confiance partielle (sans aucune idée de ce que c'est) et l'évaluation des expressions au moment du design, que j'utilise souvent pour évaluer les expressions dans la fenêtre Exécution. Cependant, l'hébergement a ses problèmes comme indiqué.
Jay Imerman
5
Le processus d'hébergement a tendance à conserver les DLL chargées sur lesquelles je souhaite écrire à partir d'une autre copie en cours d'exécution de Visual Studio. Tuer le processus d'hébergement, ou même quitter et redémarrer le VS incriminé, n'aide pas, car le processus d'hébergement nouvellement démarré charge à nouveau la DLL. C'est la raison pour laquelle je le désactive généralement.
gpvos le
J'observe que les Console.WriteLinejournaux sont imprimés dans la fenêtre de sortie même lorsque je désactive l' Enable the Visual Studio hosting processoption de la fenêtre des propriétés d'un projet Windows Forms. Pas certain de pourquoi.
RBT
17

Depuis MSDN :

Le processus d'hébergement de Visual Studio améliore les performances du débogueur et active de nouvelles fonctionnalités de débogage, telles que le débogage de confiance partielle et l'évaluation des expressions au moment du design

Darin Dimitrov
la source