회차 [Visual Studio] VSHOST : 01. VSHOST? Who are U? [Visual Studio] VSHOST : 02. VSHOST Entry point & Etc |
02| VSHOST 진입 시점 및 기타사항
지난 작성된 글로부터 프로세스 호스팅이 무엇인지에 대해서 살펴 보았습니다. 이번 포스팅은 VSHOST 진입점과 기타사항에 대해서 알아보도록 하겠습니다.
VSHOST.EXE는 어디에 위치할까요?
우선 IDE 환경 폴더로 가보도록 하겠습니다.
그래서 .NET reflector을 이용해서 Disassembler해보았습니다.
* VSHOST 진입 시점
* Red Gate's .NET Reflector 다운로드
reflector.zip
<Main Entry 구조>
<Synchronize 클래스 구조>
Disassembler를 통해 해당 assembler구조를 살펴볼수 있었습니다.
무언가를 호스팅 한다길래 복잡할거라고 생각했지만 의외로 간단한 구조로 실행 할 어셈블리가 준비되기를
기다리는 형태로 보이네요.
vshost.exe 어셈블리 외 vshost32.exe, vshost32-clr2.exe, vshost-clr2.exe도 파일 명칭만 다를뿐
내부적으로 같은구조로 구성 되어있습니다.
차이점을 찾아보려고 구글 서치를 몇일동안 하였지만 자료를 찾을수가 없었네요.
다만 x86 / x64 환경을 대비하여 더미 파일이 아닐까 싶네요.
기회가 된다면 Dave Templin께 한번 메일 회신을 통해 그의문점을 해결 해보려고요 ^^
* Etc
# 프로세스 호스팅 파일이 bin 폴더에 있어야하는 이유는?
애플리케이션이 호스팅 프로세스 내에서 실행될 때, AppDomain 내의 최상위 실행 어셈블리는
해당 애플리케이션이 아닌 vshost 입니다.
만약 vshost 파일과 실행 어플리케이션과의 동일한 폴더에 존재하지 않을경우
환경구성 파일(config) ClickOnce, Side-by-Side maniffest등 모든 시나리오에서 올바르게 로드 될수 없습니다.
# 프로세스 호스팅 파일과 함께 배포해야 합니까?
- Hosting Process (vshost.exe) : http://msdn.microsoft.com/en-us/library/ms185331(VS.80).aspx
# "vshost" 파일을 생성하지 않게 할수 있나요?
1. Visual Studio에서 프로젝트를 엽니다.
2. 프로젝트 메뉴에서 속성을 선택합니다.
2. 디버그 탭을 클릭합니다
3. Visual Studio 호스팅 프로세스 사용 확인란의 선택을 취소합니다
호스팅 프로세스가 비활성화되면 몇 개의 디버깅 기능을 사용 할수 없거나 성능이 저하 됩니다.
이점을 유의하시길 바랍니다.
※참고 : 일반적으로 호스팅 프로세스가 비활성화되는 경우는 다음과 같습니다.
- 디자인 타임에 식 계산을 사용할 수 없는 경우
- 부분 신뢰 디버깅을 사용할 수 없는 경우
포스팅을 마치며...
긴 포스팅 읽어주셔서 감사드리며 ^^
다음 포스팅에서는 C# 4.0 특징에 대해 포스팅을 해보겠습니다 ^^
좋은 하루 되세요 : )
정은성 드림
'.NET Framework > Visual Studio' 카테고리의 다른 글
[Visual Studio] VSHOST : 01 VSHOST? 너 누구니? (1) | 2010.06.21 |
---|---|
[Visual Studio] 아시나요? 예기치 못한 종료의 경우 파일이 어딧는지? (5) | 2010.06.15 |