vshost.exe 파일의 목적은 무엇입니까?


483

"Hello, World!"를 만들고 컴파일 할 때 C #의 응용 프로그램에서 기본 exe와 별도로 Debug 폴더에 3 개의 파일이 있습니다 (예 : HelloWorld.exe)

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

이 파일들은 어떤 용도로 사용됩니까?

답변:


416

vshost.exe 기능은 Visual Studio 2005에 도입되었습니다 (의견에 대한 답변).

그것의 목적은 주로 디버깅을 더 빨리 시작하는 것입니다. 기본적으로 이미 프레임 워크가 실행중인 프로세스가 있으므로 원하는 즉시 응용 프로그램을로드 할 수 있습니다.

참조 이 MSDN 문서블로그 게시물 자세한 내용입니다.


29
디버거에서 Console.Write (System.AppDomain.CurrentDomain.FriendlyName)를 실행하면 app.vshost.exe가 표시되고 exe에서 직접 실행하면 app.exe로 출력됩니다.
Milen

@Milen, msdn.microsoft.com/en-us/library/ms242202.aspx 는 호스트 프로세스 유무에 관계없이 AppDomain.CurrentDomain.FriendlyName의 다른 결과를 언급했습니다.
Thomson

2
vschost 및 .pdb 파일이 디버깅 목적으로 존재하는 경우 릴리스에서 컴파일 할 때 왜 여전히 포함됩니까?
iliketocode

1
나는 그들이 비주얼 스튜디오 2017에서 제거 추측
펠리페 Fujiy Pessoto


62

vshost.exe 파일은 Visual Studio (Visual Studio 호스트 실행 파일)에서 실행하는 실행 파일입니다. 이것은 Visual Studio에 연결되고 디버깅을 향상시키는 실행 파일입니다.

응용 프로그램을 다른 사람에게 배포 할 때는 vshost.exe 또는 .pdb (디버그 데이터베이스) 파일을 사용하지 마십시오.


VS2003에는 그러한 실행 파일이 없었습니다 (아직 중단 점이 있음). 그것에 대해 자세히 설명해 주시겠습니까?
Mehrdad Afshari

1
또한 매니페스트는 일반적으로 실행 파일에 연결되는 응용 프로그램에 대한 메타 데이터입니다. .pdb 파일은 이식 가능한 디버그 데이터베이스이며 컴파일 된 실행 파일에 대한 디버그 정보를 포함합니다.
Joey

3
VS 호스트 프로세스는 디버깅을 개선하는 데만 사용되지만 디버깅을 활성화하지는 않습니다.
Daniel Brückner

23

추가하면 릴리스 빌드 구성에 대한 vshost 파일 작성을 끄고 디버그에 사용할 수 있습니다.

단계

  • 프로젝트 속성 > 디버그 > 구성 (릴리스)> Visual Studio 호스팅 프로세스 비활성화
  • 프로젝트 속성 > 디버그 > 구성 (디버그)> Visual Studio 호스팅 프로세스 사용

VS2010의 스크린 샷

참고

  1. MSDN 방법 : 호스팅 프로세스 비활성화
  2. MSDN 호스팅 프로세스 (vshost.exe)

MSDN 에서 발췌 한 방법 : 호스팅 프로세스 비활성화

호스팅 프로세스가 활성화되면 특정 API에 대한 호출이 영향을받을 수 있습니다. 이러한 경우 올바른 결과를 반환하기 위해 호스팅 프로세스를 비활성화해야합니다.

호스팅 프로세스를 비활성화하려면

  1. Visual Studio에서 실행 가능한 프로젝트를 엽니 다. 실행 파일을 생성하지 않는 프로젝트 (예 : 클래스 라이브러리 또는 서비스 프로젝트)에는이 옵션이 없습니다.
  2. 프로젝트 메뉴를 클릭 속성을 .
  3. 디버그 탭을 클릭 하십시오.
  4. Visual Studio 호스팅 프로세스 사용 확인란의 선택을 취소하십시오 .

호스팅 프로세스가 비활성화되면 여러 디버깅 기능을 사용할 수 없거나 성능이 저하됩니다. 자세한 내용은 디버깅 및 호스팅 프로세스를 참조하십시오 .

일반적으로 호스팅 프로세스가 비활성화 된 경우 :

  • .NET Framework 응용 프로그램 디버깅을 시작하는 데 필요한 시간이 늘어납니다.
  • 디자인 타임 식 평가를 사용할 수 없습니다.
  • 부분 신뢰 디버깅을 사용할 수 없습니다.

10

확실하지 않지만 디버깅 최적화라고 생각합니다. 그러나 나는 보통 그것을 끄고 (프로젝트의 디버그 속성 참조) 속도 저하를 느끼지 않으며 디버깅과 관련하여 제한이 없습니다.


"가드"란 무엇입니까? 여기에 답변이있는 사용자를 참조 하시겠습니까? 다른 것? 답변을 업데이트 할 수 있습니까 (예 : 사용자 이름은 언제든지 변경 될 수 있으므로 직접 링크로)?
Peter Mortensen

나는 이것이 다른 대답에 대한 참조라고 생각하지만, 이것은 09에 있었으므로 세부 사항을 기억하지 못하면 용서하십시오.
브라이언 라스무센

2

(로드 시간을 줄이려면) 디버깅을 위해 오래 실행되는 프레임 워크 프로세스 인 것 같습니다. 디버거에서 응용 프로그램을 두 번 시작할 때 종종 동일한 vshost.exe 프로세스가 사용됩니다. 먼저 모든 사용자로드 DLL을 언로드합니다. 관리되는 프로세스의 API 후크로 장난하는 경우 이상한 일이 발생합니다.


1
프로젝트에 P / Invoke를 수행 할 코드가있는 경우 지속적인 프로세스에서 예외 (액세스 위반)가 발생합니다. 호스트 프로세스를 비활성화 한 후 문제가 사라졌습니다.
Thomson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.