Jaki jest cel procesu hostingu programu Visual Studio?

165

Podczas debugowania programu przy użyciu programu Visual Studio masz opcję Enable the Visual Studio hosting process. Jaki jest cel tej opcji i jaki ma skutek?

Frederick The Fool
źródło
88
Trudno uwierzyć, że to pytanie zostało zamknięte jako „nie prawdziwe pytanie”! Proces hostingu jest wystarczająco realny, a wiedza o tym, co robi, jest ważna dla każdego programisty. Jak każda tajemnicza opcja na stronie ustawień programu Visual Studio, do której łatwo się dostać. Zróbmy to ponownie, ludzie.
Hans Passant

Odpowiedzi:

85

Biblioteka MSDN nie podaje zbyt dobrych informacji na temat „procesu hostingu”. Dwie ostatnie funkcje wymienione w linku Erica to w rzeczywistości problemy wywołane przez tę funkcję. Jest jeszcze jeden, na który z pewnością napotkasz prędzej czy później: używa innego pliku app.config. Aktywny nazywa się yourapp.vshost.exe.config. Uważaj na to podczas ręcznego wprowadzania zmian w pliku.

Inną obsługiwaną funkcją, która jest bardzo widoczna podczas debugowania aplikacji, ale nie jest nigdzie wspomniana, jest to, co dzieje się z danymi wyjściowymi generowanymi przez Console.Write (). W aplikacji innej niż konsolowa zostaje przekierowana do okna danych wyjściowych środowiska IDE. Bardzo przydatne.

Termin „hosting” odnosi się do funkcji CLR, może być „hostowany”. Przykładami niestandardowych hostów CLR są SQL Server i ASP.NET. Hosting pozwala skonfigurować CLR przed jego uruchomieniem. Jednym z głównych zastosowań tego jest konfigurowanie podstawowej domeny AppDomain i konfigurowanie niestandardowych zasad zabezpieczeń. Dokładnie to robi proces hostingu.

W tym pytaniu dostępny jest dobry przykład niestandardowego hosta CLR .

Krótko mówiąc: w trybie debugowania korzystasz z dostosowanej wersji CLR, która poprawia wrażenia z debugowania.

Hans Passant
źródło
4
Mam zwyczaj wyłączania tej funkcji w każdym nowym projekcie. Podczas pracy z C ++ / CLI WinForms Designer napotkałem dziwne problemy, które nie występowały przy wyłączonej tej funkcji.
surfowano
Jest to bardzo mało prawdopodobne, ponieważ środowisko C ++ IDE nie używa procesu hostingu ani nie jest używane w trybie projektowania.
Hans Passant
2
Ponadto w witrynie internetowej firmy Microsoft ( msdn.microsoft.com/en-us/library/ms242202.aspx ) stwierdza się, że umożliwia ona debugowanie częściowego zaufania (nie ma pojęcia, co to jest) oraz ocenę wyrażenia czasu projektowania, z której często korzystam do oceny wyrażeń w oknie bezpośrednim. Jednak hosting ma swoje problemy, jak wspomniano.
Jay Imerman,
5
Proces hostingu zazwyczaj utrzymuje załadowane biblioteki DLL, do których chcę pisać z innej działającej kopii programu Visual Studio. Ukończenie procesu hostingu, a nawet wyjście i ponowne uruchomienie szkodliwego VS, nie pomaga, ponieważ nowo rozpoczęty proces hostingu ponownie ładuje bibliotekę DLL. To jest powód, dla którego zwykle go wyłączam.
gpvos
Obserwuję, że Console.WriteLinedzienniki są drukowane w oknie wyjściowym, nawet gdy wyłączam Enable the Visual Studio hosting processopcję w oknie właściwości projektu formularzy systemu Windows. Nie pewny dlaczego.
RBT
17

Z MSDN :

Proces hostingu programu Visual Studio poprawia wydajność debugera i udostępnia nowe funkcje debugera, takie jak debugowanie częściowego zaufania i ocena wyrażeń w czasie projektowania

Darin Dimitrov
źródło