Qual é o objetivo do processo de hospedagem do Visual Studio?

165

Ao depurar um programa usando o Visual Studio, você tem a opção de Enable the Visual Studio hosting process. Qual é o objetivo desta opção e que efeito ela tem?

Frederick The Fool
fonte
88
Difícil de acreditar que esta questão foi encerrada como "não é uma pergunta real"! O processo de hospedagem é real o suficiente, sabendo o que faz é importante para qualquer programador .NET. Como é qualquer opção misteriosa em uma página de configuração do Visual Studio fácil de acessar. Vamos reabrir esse pessoal.
Hans Passant

Respostas:

85

A biblioteca do MSDN não fornece informações muito boas sobre o "processo de hospedagem". Os dois últimos recursos listados no link de Eric são, na verdade, problemas induzidos pelo recurso. Há outro que você provavelmente encontrará mais cedo ou mais tarde: ele usa um arquivo app.config diferente. O ativo é chamado yourapp.vshost.exe.config. Cuidado com isso ao fazer alterações manuais no arquivo.

Outro recurso suportado que é muito visível quando você depura seu aplicativo, mas não é mencionado em nenhum lugar, é o que acontece com a saída produzida pelo Console.Write (). Em um aplicativo no modo não console, ele é redirecionado para a janela Saída do IDE. Muito útil.

O termo "hospedagem" refere-se a um recurso do CLR, que pode ser "hospedado". Exemplos de hosts CLR personalizados são o SQL Server e o ASP.NET. A hospedagem permite configurar o CLR antes de começar. Um uso principal disso é configurar o AppDomain primário e configurar políticas de segurança personalizadas. Qual é exatamente o que o processo de hospedagem está fazendo.

Um bom exemplo de um host CLR personalizado está disponível nesta pergunta .

Longa história: no modo de depuração, você está executando uma versão personalizada do CLR, que melhora a experiência de depuração.

Hans Passant
fonte
4
Eu tenho o hábito de desabilitar esse recurso em cada novo projeto. Eu encontrei problemas estranhos ao trabalhar com o C ++ / CLI WinForms Designer, que não ocorreram com esse recurso desabilitado.
Surfen
É muito improvável que seja relevante, o C ++ IDE não usa um processo de hospedagem nem é usado no modo de design.
Hans Passant
2
Além disso, no site da Microsoft ( msdn.microsoft.com/en-us/library/ms242202.aspx ), ele afirma que habilita a Depuração de confiança parcial (sem idéia do que é isso) e a Avaliação da expressão do tempo de design, que eu uso frequentemente para avaliar expressões na janela Imediata. No entanto, a hospedagem tem seus problemas, conforme observado.
Jay Imerman
5
O processo de hospedagem tende a manter as DLLs carregadas nas quais quero gravar de outra cópia em execução do Visual Studio. Matar o processo de hospedagem, ou mesmo sair e reiniciar o VS ofensivo, não ajuda, porque o processo de hospedagem iniciado recentemente carrega a DLL novamente. Essa é a razão pela qual eu normalmente desabilito.
gpvos
Estou observando que os Console.WriteLinelogs são impressos na janela de saída, mesmo quando desabilito a Enable the Visual Studio hosting processopção da janela de propriedades de um projeto de formulários do Windows. Não sei por que.
RBT
17

Do MSDN :

O processo de hospedagem do Visual Studio melhora o desempenho do depurador e habilita novos recursos, como depuração de confiança parcial e avaliação da expressão em tempo de design

Darin Dimitrov
fonte