Qual é o objetivo do arquivo vshost.exe?

483

Quando eu crio e compilo um "Olá, mundo!" aplicação em c #, recebo três arquivos na pasta Debug além do exe principal (por exemplo, HelloWorld.exe)

  1. HelloWorld.vshost.exe
  2. HelloWorld.pdb
  3. HelloWorld.vshost.exe.manifest

A que finalidade esses arquivos servem?

Milen
fonte

Respostas:

416

O recurso vshost.exe foi introduzido no Visual Studio 2005 (para responder ao seu comentário).

O objetivo disso é principalmente acelerar a inicialização da depuração - basicamente, já existe um processo com a estrutura em execução, pronta para carregar seu aplicativo assim que você desejar.

Consulte este artigo do MSDN e esta publicação no blog para obter mais informações.

Jon Skeet
fonte
29
Portanto, é esse o motivo pelo qual, quando executo o Console.Write (System.AppDomain.CurrentDomain.FriendlyName) no depurador, obtenho app.vshost.exe e, quando executo diretamente do exe, saio como app.exe
Milen
@Milen, msdn.microsoft.com/en-us/library/ms242202.aspx mencionou o resultado diferente de AppDomain.CurrentDomain.FriendlyName com e sem o processo do host.
Thomson
2
Se os arquivos vschost e .pdb existem para fins de depuração, por que eles ainda estão incluídos quando eu compilar no Release?
Iliketocode 8/08
1
Eu acho que eles o removeram no Visual Studio 2017
Felipe Fujiy Pessoto
175
  • .exe - o executável 'normal'

  • .vshost.exe - uma versão especial do executável para ajudar na depuração; veja MSDN para detalhes

  • .pdb - o banco de dados do programa com símbolos de depuração

  • .vshost.exe.manifest - um tipo de arquivo de configuração que contém principalmente dependências de bibliotecas

Daniel Brückner
fonte
62

O arquivo vshost.exe é o executável executado pelo Visual Studio (executável host do Visual Studio). Este é o executável vinculado ao Visual Studio e melhora a depuração.

Ao distribuir seu aplicativo para outras pessoas, você não usa os arquivos vshost.exe ou .pdb (banco de dados de depuração).

Will Eddins
fonte
Lembro que não tínhamos um executável no VS2003 (ainda tínhamos pontos de interrupção). Você pode elaborar sobre isso?
Mehrdad Afshari
1
Além disso, o manifesto são metadados sobre o aplicativo que geralmente também são vinculados ao executável. O arquivo .pdb é um banco de dados de depuração portátil e contém informações de depuração sobre o executável compilado, como qual ponto no executável corresponde a qual linha do código.
21420 Joey
3
O processo do host do VS é usado apenas para melhorar a depuração - mas não habilita a depuração.
194 Daniel Brückner
23

Além disso, você pode desativar a criação de arquivos vshost para a configuração de compilação do Release e habilitá-lo para Depuração .

Passos

  • Propriedades do projeto > Depurar > Configuração (versão)> Desativar o processo de hospedagem do Visual Studio
  • Propriedades do projeto > Depurar > Configuração (Depurar)> Habilitar o processo de hospedagem do Visual Studio

Captura de tela do VS2010

Referência

  1. MSDN Como: Desativar o processo de hospedagem
  2. Processo de hospedagem MSDN (vshost.exe)

Trecho do MSDN Como: Desativar o processo de hospedagem

As chamadas para determinadas APIs podem ser afetadas quando o processo de hospedagem está ativado. Nesses casos, é necessário desativar o processo de hospedagem para retornar os resultados corretos.

Para desativar o processo de hospedagem

  1. Abra um projeto executável no Visual Studio. Projetos que não produzem executáveis ​​(por exemplo, biblioteca de classes ou projetos de serviço) não possuem essa opção.
  2. No menu Projeto , clique em Propriedades .
  3. Clique na guia Debug .
  4. Desmarque a caixa de seleção Ativar o processo de hospedagem do Visual Studio .

Quando o processo de hospedagem é desativado, vários recursos de depuração ficam indisponíveis ou apresentam desempenho reduzido. Para obter mais informações, consulte Depuração e o processo de hospedagem .

Em geral, quando o processo de hospedagem está desativado:

  • O tempo necessário para começar a depurar aplicativos do .NET Framework aumenta.
  • A avaliação da expressão em tempo de design está indisponível.
  • Depuração de confiança parcial não está disponível.
SimplyInk
fonte
10

Não tenho certeza, mas acredito que seja uma otimização de depuração. No entanto, geralmente desativo (consulte Propriedades de depuração do projeto) e não percebo desaceleração e não vejo limitações quando se trata de depuração.

Brian Rasmussen
fonte
O que é "guarda"? Referência a um usuário com uma das respostas aqui? Algo mais? Você pode atualizar sua resposta (por exemplo, com um link direto, pois os nomes de usuário podem mudar a qualquer momento)?
Peter Mortensen
Acho que isso foi uma referência a outra resposta, mas foi em 09, então me perdoe se não me lembro dos detalhes.
Brian Rasmussen
2

Parece ser um processo de estrutura de longa execução para depuração (para diminuir o tempo de carregamento?). Descobri que, quando você inicia o aplicativo duas vezes no depurador, geralmente o mesmo processo vshost.exe será usado. Apenas descarrega todas as DLLs carregadas pelo usuário primeiro. Isso faz coisas estranhas se você estiver brincando com ganchos de API de processos gerenciados.

Joshua
fonte
1
O processo persistente também causa exceção (violação de acesso) quando meu projeto tem algum código para executar P / Invoke. O problema desapareceu depois que eu desabilitei o processo do host.
Thomson