¿Cuál es el propósito del proceso de alojamiento de Visual Studio?

165

Al depurar un programa usando Visual Studio, tiene la opción de hacerlo Enable the Visual Studio hosting process. ¿Cuál es el propósito de esta opción y qué efecto tiene?

Federico el tonto
fuente
88
¡Es difícil de creer que esta pregunta se cerró como "no es una pregunta real"! El proceso de alojamiento es lo suficientemente real, saber lo que hace es importante para cualquier programador .NET. Como es cualquier opción misteriosa en una página de configuración de Visual Studio a la que es fácil acceder. Vamos a volver a abrir esta gente.
Hans Passant

Respuestas:

85

La biblioteca de MSDN no brinda muy buena información sobre el "proceso de alojamiento". Las dos últimas características enumeradas en el enlace de Eric son en realidad problemas inducidos por la característica. Hay otro que te encontrarás tarde o temprano: utiliza un archivo app.config diferente. El activo se llama yourapp.vshost.exe.config. Tenga cuidado con esto cuando realice cambios manuales en el archivo.

Otra característica que admite que es muy visible cuando depura su aplicación pero que no se menciona en ninguna parte es lo que sucede con la salida producida por Console.Write (). En una aplicación que no es de consola, se redirige a la ventana de salida del IDE. Muy útil.

El término "hosting" se refiere a una característica del CLR, puede ser "alojado". Ejemplos de hosts CLR personalizados son SQL Server y ASP.NET. El alojamiento permite configurar el CLR antes de que comience. Un uso principal de esto es configurar el dominio de aplicación principal y establecer políticas de seguridad personalizadas. Que es exactamente lo que está haciendo el proceso de alojamiento.

Un buen ejemplo de un host CLR personalizado está disponible en esta pregunta .

En pocas palabras: en el modo de depuración, está ejecutando una versión personalizada del CLR, una que mejora la experiencia de depuración.

Hans Passant
fuente
44
Tengo la costumbre de deshabilitar esta función en cada nuevo proyecto. Me encontré con problemas extraños al trabajar con C ++ / CLI WinForms Designer, que no ocurrieron con esta función deshabilitada.
surfen
Es muy poco probable que sea relevante, el IDE de C ++ no usa un proceso de alojamiento ni se usa en modo de diseño.
Hans Passant
2
Además, en el sitio web de Microsoft ( msdn.microsoft.com/en-us/library/ms242202.aspx ) indica que habilita la Depuración de confianza parcial (no tengo idea de qué es eso) y la Evaluación de expresión de tiempo de diseño, que uso a menudo para evaluar expresiones en la ventana Inmediato. Sin embargo, el alojamiento tiene sus problemas como se señaló.
Jay Imerman
55
El proceso de alojamiento tiende a mantener las DLL cargadas en las que quiero escribir desde otra copia en ejecución de Visual Studio. Matar el proceso de alojamiento, o incluso salir y reiniciar el VS infractor, no ayuda, porque el proceso de alojamiento recién iniciado carga la DLL nuevamente. Esta es la razón por la que generalmente lo desactivo.
gpvos
Estoy observando que los Console.WriteLineregistros se imprimen en la ventana de salida incluso cuando desactivo la Enable the Visual Studio hosting processopción de la ventana de propiedades de un proyecto de formularios de Windows. No estoy seguro de por qué.
RBT
17

De MSDN :

El proceso de alojamiento de Visual Studio mejora el rendimiento del depurador y permite nuevas características del depurador, como la depuración de confianza parcial y la evaluación de expresiones en tiempo de diseño

Darin Dimitrov
fuente