[C#] vshost.exe 파일의 목적은 무엇입니까?

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

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

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



답변

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

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

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


답변

  • .exe- ‘정상적인’실행 파일

  • .vshost.exe-디버깅을 돕기위한 실행 파일의 특수 버전. 자세한 내용은 MSDN 을 참조하십시오

  • .pdb- 디버그 기호가 있는 프로그램 데이터베이스

  • .vshost.exe.manifest- 대부분 라이브러리에 대한 의존성을 포함 하는 일종의 구성 파일


답변

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

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


답변

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

단계

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

VS2010의 스크린 샷

참고

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

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

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

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

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

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

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

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

답변

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


답변

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


답변