Was ist der Zweck des Visual Studio-Hostingprozesses?

165

Beim Debuggen eines Programms mit Visual Studio haben Sie die Möglichkeit dazu Enable the Visual Studio hosting process. Was ist der Zweck dieser Option und welche Auswirkungen hat sie?

Friedrich der Narr
quelle
88
Kaum zu glauben, dass diese Frage als "keine echte Frage" abgeschlossen wurde! Der Hosting-Prozess ist real genug. Für jeden .NET-Programmierer ist es wichtig zu wissen, was er tut. Wie jede mysteriöse Option auf einer Visual Studio-Einstellungsseite, die leicht zu erreichen ist. Lassen Sie uns diese wiedereröffneten Leute bekommen.
Hans Passant

Antworten:

85

Die MSDN-Bibliothek gibt keine sehr guten Informationen zum "Hosting-Prozess". Die letzten beiden Funktionen, die in Erics Link aufgeführt sind, sind tatsächlich Probleme, die durch die Funktion verursacht werden. Es gibt noch eine andere, auf die Sie früher oder später stoßen müssen: Sie verwendet eine andere app.config-Datei. Die aktive heißt yourapp.vshost.exe.config. Achten Sie darauf, wenn Sie manuelle Änderungen an der Datei vornehmen.

Eine weitere unterstützte Funktion, die beim Debuggen Ihrer App sehr gut sichtbar ist, aber nirgendwo erwähnt wird, ist die Ausgabe von Console.Write (). In einer App ohne Konsolenmodus wird sie in das Ausgabefenster der IDE umgeleitet. Sehr hilfreich.

Der Begriff "Hosting" bezieht sich auf eine Funktion der CLR, sie kann "gehostet" werden. Beispiele für benutzerdefinierte CLR-Hosts sind SQL Server und ASP.NET. Durch Hosting kann die CLR konfiguriert werden, bevor sie gestartet wird. Eine Hauptanwendung hierfür ist das Konfigurieren der primären AppDomain und das Einrichten benutzerdefinierter Sicherheitsrichtlinien. Welches ist genau das, was der Hosting-Prozess tut.

In dieser Frage finden Sie ein gutes Beispiel für einen benutzerdefinierten CLR-Host .

Lange Rede, kurzer Sinn: Im Debug-Modus wird eine angepasste Version der CLR ausgeführt, die das Debugging-Erlebnis verbessert.

Hans Passant
quelle
4
Ich habe die Angewohnheit, diese Funktion bei jedem neuen Projekt zu deaktivieren. Bei der Arbeit mit C ++ / CLI WinForms Designer sind seltsame Probleme aufgetreten, die bei deaktivierter Funktion nicht aufgetreten sind.
Surfen
Es ist sehr unwahrscheinlich, dass dies relevant ist. Die C ++ - IDE verwendet weder einen Hosting-Prozess noch wird sie im Entwurfsmodus verwendet.
Hans Passant
2
Auf der Microsoft-Website ( msdn.microsoft.com/en-us/library/ms242202.aspx ) wird außerdem angegeben, dass das partielle Vertrauens-Debugging (keine Ahnung, was das ist) und die Auswertung des Entwurfszeitausdrucks aktiviert sind, die ich häufig verwende um Ausdrücke im Direktfenster auszuwerten. Hosting hat jedoch seine Probleme wie angegeben.
Jay Imerman
5
Der Hosting-Prozess neigt dazu, DLLs geladen zu halten, in die ich von einer anderen laufenden Kopie von Visual Studio schreiben möchte. Das Beenden des Hosting-Prozesses oder sogar das Beenden und Neustarten des fehlerhaften VS hilft nicht, da der neu gestartete Hosting-Prozess die DLL erneut lädt. Dies ist der Grund, warum ich es normalerweise deaktiviere.
GPVOS
Ich beobachte, dass die Console.WriteLineProtokolle im Ausgabefenster gedruckt werden, selbst wenn ich die Enable the Visual Studio hosting processOption im Eigenschaftenfenster eines Windows Forms-Projekts deaktiviere . Nicht sicher warum.
RBT
17

Von MSDN :

Der Visual Studio-Hosting-Prozess verbessert die Debugger-Leistung und ermöglicht neue Debugger-Funktionen, z. B. das Debuggen von Teilvertrauensstellungen und die Auswertung von Ausdrücken zur Entwurfszeit

Darin Dimitrov
quelle