회차
[Visual Studio] VSHOST : 01. VSHOST? Who are U?

[Visual Studio] VSHOST : 02. VSHOST Entry point & Etc

02| VSHOST 진입 시점 및 기타사항
지난 작성된 글로부터 프로세스 호스팅이 무엇인지에 대해서 살펴 보았습니다. 이번 포스팅은 VSHOST 진입점과 기타사항에 대해서 알아보도록 하겠습니다.

VSHOST.EXE는 어디에 위치할까요?

우선 IDE 환경 폴더로 가보도록 하겠습니다.

<driver name>:\Program Files (x86)\Microsoft Visual Studio<version>\Common7\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 폴더에 있어야하는 이유는?

vshost 파일이 개발하고자하는 StartUp 위치에 있어야하는 이유는 다음과 같습니다.
애플리케이션이 호스팅 프로세스 내에서 실행될 때, AppDomain 내의 최상위 실행 어셈블리는
해당 애플리케이션이 아닌 vshost 입니다.
만약 vshost 파일과 실행 어플리케이션과의 동일한 폴더에 존재하지 않을경우
환경구성 파일(config) ClickOnce, Side-by-Side maniffest등 모든 시나리오에서 올바르게 로드 될수 없습니다.


# 프로세스 호스팅 파일과 함께 배포해야 합니까?

아닙니다. " .vshost.exe" 및 ".vshost.exe.config"는 Visual Studio IDE 내에서만 사용됩니다. 이 프로세스는 직접 실행되어서는 안되며, 애플리케이션과 함께 배포해서도 안됩니다.

- Hosting Process (vshost.exe) : http://msdn.microsoft.com/en-us/library/ms185331(VS.80).aspx

 

# "vshost" 파일을 생성하지 않게 할수 있나요?

프로젝트 속성을 통해 이 기능을 해제 할수 있습니다.
1. Visual Studio에서 프로젝트를 엽니다.
2. 프로젝트 메뉴에서 속성을 선택합니다.
2. 디버그 탭을 클릭합니다
3. Visual Studio 호스팅 프로세스 사용 확인란의 선택을 취소합니다

호스팅 프로세스가 비활성화되면 몇 개의 디버깅 기능을 사용 할수 없거나 성능이 저하 됩니다.
이점을 유의하시길 바랍니다.
 


※참고 : 일반적으로 호스팅 프로세스가 비활성화되는 경우는 다음과 같습니다.

- .NET Framework 응용 프로그램 디버깅을 시작하는 데 필요한 시간이 증가하는 경우
- 디자인 타임에 식 계산을 사용할 수 없는 경우
- 부분 신뢰 디버깅을 사용할 수 없는 경우
 

포스팅을 마치며...


긴 포스팅 읽어주셔서 감사드리며 ^^
다음 포스팅에서는 C# 4.0 특징에 대해 포스팅을 해보겠습니다 ^^
좋은 하루 되세요 : )

정은성 드림

Posted by LenAWeb

댓글을 달아 주세요

  1. 지금 모든게 끝났다하여 울지 마요. 당신의 소유했던 그 추억을 생각하며 항상 웃어야 해요

    2013.03.23 23:02 [ ADDR : EDIT/ DEL : REPLY ]
  2. 삶의 목표는 너무 많은 아니라, 계속 한 것은, 투자 관심과 열정을 찾아, 당신은 성공합니다.

    2013.03.24 02:25 [ ADDR : EDIT/ DEL : REPLY ]
  3. 건강은 제일의 재산이다.7

    2013.03.24 14:09 [ ADDR : EDIT/ DEL : REPLY ]
  4. 늘 재산이 없는 이는 늘 마음이 없다.

    2013.03.30 23:47 [ ADDR : EDIT/ DEL : REPLY ]
  5. 매우 지원, 아주 좋아.

    2013.04.05 12:50 [ ADDR : EDIT/ DEL : REPLY ]
  6. a하늘엔 별이있고, 바다엔 물이 있듯이, 나에겐 너만

    2013.04.06 20:51 [ ADDR : EDIT/ DEL : REPLY ]
  7. 당신이 슬퍼 느낄 때 고통, 무슨 내용을 보려면하는 것이 가장 좋습니다. 학습은 천하무적 할 것입니다.

    2013.04.07 20:08 [ ADDR : EDIT/ DEL : REPLY ]
  8. 실패는 받아들여도 도전하지 않는 것은 받아들일 수 없다.

    2013.04.08 08:52 [ ADDR : EDIT/ DEL : REPLY ]
  9. 그런 다음 먼 길, 단계적으로는 발에 연결할 수 없습니다 데려 갈 수 없어, 다음 짧은 방법을 완료 할 수 있습니다.

    2013.04.09 21:45 [ ADDR : EDIT/ DEL : REPLY ]
  10. 다른 남자 부르면서 울거면 나한테 이쁘지나 말던지

    2013.04.29 03:14 [ ADDR : EDIT/ DEL : REPLY ]
  11. 태양이 바다에 미광을 비추면,나는 너를 생각한다.

    2013.07.11 23:02 [ ADDR : EDIT/ DEL : REPLY ]

 회차
[Visual Studio] VSHOST : 01. VSHOST? Who are U?

[Visual Studio] VSHOST : 02. VSHOST Entry point & Etc

01| VSHOST? 넌 누구니?
혹시 VSHOST에 대해서 아시나요? Visual Studio라는 편리한 도구에 그가 있었기에 가능 했다는것을...
이번 포스팅은 2004년 8월 VS2005 Bata 1때부터 등장한 VSHOST에 대해서 이야기를 해볼까 합니다.

" 그가 있었기에 가능 했다 " 라고 표현을 할 만큼Visual Studio의 주역, 숨은 MVP인데요.
마치 축구 선수의 12번째 선수인 붉은 악마와 비슷합니다.


도대체 VSHOST는 뭘까요?

Visual Studio(2005 이상)를 사용하다보면 bin 폴더 아래 xxxx.vshost.exe 이라는 vshost 별칭이 붙은 파일 이름들이 생성 된것을 볼수 있습니다.  WindowsApplication1이라는 윈폼 프로젝트를 만들어서 F5를 누르면 "WindowsApplication1.vshost.exe"와 "WindowsApplication1.vshost.exe.config"가 생성됩니다.

또한 작업 표시줄을 통해 확인 할수 있습니다.



혹시 이 파일을 보신 분은 파일을 지워도 되는 것인지? 배포 할 때 같이 배포를 해야 할것인지?
한번쯤 의문을 가지거나 고민 하신적이 있으실거라고 생각이 듭니다.

vshost?! 어떤 프로세스일지 궁금하지 않으세요? Dave Templin이라는 MS 개발자 블로그 원문 자료를 참고하세요
- VSHOST -- the Hosting Process :
http://blogs.msdn.com/b/dtemp/archive/2004/08/17/215764.aspx

* vshost?
vshost는 Visual Studio IDE 내에서 프로젝트 빌드할 때마다 출력 폴더(Debug, Release)에 생성되며 디버깅 향상을 위한 호스팅 프로세스입니다. 이 프로세스의 목적은 크게 3가지로 구분 되어집니다.
- 향상된 F5 성능
- 부분 트러스트 디버깅(Partial Trust Debugging)
- 디자인 타임 수식 평가(Design Time Expression Evaluation)

vshost은 호스팅 프로세스의 대상이 개발하고자하는 어플리케이션이 그 대상이 된다는 사실을요^^;
VS IDE → vshost.exe → 어플리케이션

그럼 하나씩 살펴보도록 하겠습니다.

1. 향상된 F5 성능

향상된 F5 성능, 개발자는 2005버전후 부터 프로세스 수행 작업이 상당히 줄이든 것을 알수 있습니다.
2005 이전 버전에서 개발 해보신 경험이 있으분들이라면 디버깅을 수행하면 한참 후에야 디버깅이 시작되는 걸 경험 하셨을겁니다. 실제로 Managed Application은 Application이 실행되는 런타임 환경을 구축하는 AppDomain 생성을 필요로로 하고 AppDomain을 생성하고 디버그를 초기화하는데 상당한 시간이 소요됩니다.

이러한 작업을 시작할때마다 AppDomain 영역을 생성하고 지우고 생성하고 과정을 반복하게 된다면
연현상은 뻔한 사실이겠죠?  무엇보다 가장 심각한 문제는 어플리케이션의 상태가 종료된다면 모든 AppDomain과 디버깅의 상태가 증발해버린 아픈 과거가 있습니다. 디버깅을 누르고 다시 생성과 초기화를 해야하는 번거로움이 있었습니다.
F5 성능 속도를 향상시키기 위해서 디버깅 프로세스가 시작전 백그라운드에서 작업을하고 애플리케이션을 여러번 실행하는 도중에도 상태를 유지하도록 하고있습니다.

2. 부분 트러스트 디버깅(Parial Trust Debugging)

부분 트러스트 디버깅. 프로젝트 속성 창의 Security 페이지에서 정의한 권환 설정(Permisson Settings)만을 가지도록 부분적으로 신뢰된 환경 상에서 디버깅을 할수 있게 해줍니다.

주로 Windows 및 콘솔 응용 프로그램에서 적용이 되는데. 그중 스마트 클라이언트를 대표적인 사례로 뽑을수가 있습니다.
부분적으로 신뢰된 애플리케이션을 배포할 때, 이 애플리케이션은 자동적으로 제한된 보안 컨텍스트에서 실행되므로 보안 권환 및 동작이 달라지므로 디버깅하기 어려웠습니다. 결국 이를 해결하기 위해서 원격 디버깅 설정등 까다롭고 어려운 작업이 많았는데요. VS 2005부터 호스팅 프로세스가 별도의 권한을 부여 할 수 있게 되어 제하된 또는 허용된 권환에서 디버깅을 할수 있게 되었습니다.

3. 디자인 타임 수식 평가(Design Time Expression Evaluation)

디자인 타임 수식 평가. 실제로 애플리케이션을 실행할 필요없이 immediate 창에서 애플리케이션 코드를 테스트 해볼수 있다는것입니다. 이러한 디자인 타임 수식 평가 하에서 코드를 실행하는데도 역시 호스팅 프로세스가 사용됩니다.

* 디자인 타임 수식 평가 적용 사례



디자인 타임에 대해서는 아래 링크를 참조하시길 바랍니다.
- 직접 실행 창 : http://msdn.microsoft.com/ko-kr/library/f177hahy(v=VS.80).aspx

- 연습: 디자인 타임에 디버깅 : http://msdn.microsoft.com/ko-kr/library/83hd8f1e(v=VS.80).aspx

포스팅을 마치며...


긴 포스팅 읽어주셔서 감사드리며 ^^
다음 포스팅에서는 호스팅 프로세스의 진입 시점과 기타사항에 대해 포스팅을 해보겠습니다 ^^
좋은 하루 되세요 : )

정은성 드림


Posted by LenAWeb

댓글을 달아 주세요

  1. 귀를 기울여봐 가슴이 뛰는 소리가 들리면 네가 사랑하는 그 사람 널 사랑하고 있는거야.

    2013.04.28 05:43 [ ADDR : EDIT/ DEL : REPLY ]

Visaul Studio를 작업중 예기치 않은일로 프로그램 종료되거나 천재지변, 일시적 전력 공급 중단, 심지어 하드웨어 손상으로 인터럽터가 발생할수 있습니다.

그럴때 우리는 어색한 웃음을 짓지요.. " 우씨!!! 지금까지 작업한 코드 어떻게..!! "


아시나요? 여러분들의 코드가 임시로 자동 세이브 되고 있다는것을?

다음과 같은 팝업을 한번쯤 보신적이 있으실거라고 봅니다.

위 화면은 예기치 않게 종료가 되었을때 그파일에 대한 최근 작업본에 복구 마법사입니다..
아직 무엇인지 잘 모르시겠다구요? 현재 작업 중이시라면 탐색기를 여시고 약 5분뒤 아래 경로로 서치를 해보시길 바랍니다.

*  VS saves these auto-recovered files
* Windows XP 이하
    ...\My Documents\Visual Studio <version>\Backup Files\<projectname>.
* Windows Vista 이상
    ...\Users\<account Name>\Documents\Visual Studio <version>\Backup Files\<projectname>


파일 생성된것을 볼수가 있습니다. 임시로 생성 되어진 것 이외 아주 특별한 기능을 가지고 있는데요.
그것은 히스토리 형태로 백업을 남겨둘수가 있습니다.


앞서 Recover 마법사 이미지를 보신적이 있습니다.
" Do Not Recover " 버튼을 누르시면 복구는 되지 않고 AutoRecover 정보를 남겨두게 되죠..

그럼 코드작성자가 잠시 부재중이라도 괜찮은건네요?
아닙니다. Recover Files은 Visual Stduo의 AutoRecover 옵션에 의해 7일(기본) 동안 기록되어지는데요.

장기간 정보를 가지고 계시고 싶다면 다음과 같이 옵션을 변경해주시면 됩니다.

* Tool -> Option


* Option  -> Environment -> AutoRecover

포스팅을 마치며...


다음 포스팅은 vshost 파일에 대한 포스팅을 해볼까해요.. 구독자분들의 기대에 부응하겠습니다.
무더위 준비 잘하시고 항상 좋은 하루 되세요 : )
감사합니다.

정은성 드림

Posted by LenAWeb

댓글을 달아 주세요

  1. 긴장하지 말고 침착하게 자신의 실력을 발휘하면 될것이다!

    2013.04.16 02:46 [ ADDR : EDIT/ DEL : REPLY ]
  2. http://www,Topics related articles:


    http://mitssum.net/51 复件 (13) 韩

    .christianlouboutinve,Topics related articles:


    http://nviews.net/405 复件 (18) 韩

    .com http://www.cheapshoesec,Topics related articles:


    http://agnes71.tistory.com/131 复件 (20) 韩

    .com/

    2013.04.20 22:57 [ ADDR : EDIT/ DEL : REPLY ]
  3. 다른 남자 부르면서 울거면 나한테 이쁘지나 말던지

    2013.04.26 18:35 [ ADDR : EDIT/ DEL : REPLY ]
  4. 다른 남자 부르면서 울거면 나한테 이쁘지나 말던지

    2013.04.28 09:21 [ ADDR : EDIT/ DEL : REPLY ]
  5. 좋으면 좋고 싫으면 싫은 거지, 뭐가 이렇게 어렵고 복잡하냐구

    2013.07.16 12:01 [ ADDR : EDIT/ DEL : REPLY ]

Event & Cast/Seminar(Event)2010. 5. 16. 00:30
이 세미나는 Windows 7에 최적화된 Visual Studio 2010을 활용 /  C++개발자가 알아야할 이슈에 대해서 소개합니다.

* 사전 등록 : http://new.imaso.co.kr/seminars/vs2010
Posted by LenAWeb

댓글을 달아 주세요

  1. 슬픔을 나누면 반으로 되지만, 기쁨을 나누면 배가된다.

    2013.03.24 14:09 [ ADDR : EDIT/ DEL : REPLY ]
  2. 벗이 먼곳으로부터 찾아오니 이 얼마나즐거운가."

    2013.03.30 23:47 [ ADDR : EDIT/ DEL : REPLY ]
  3. 인연은 우연히 찾아오고 사랑은 조심스럽게, 몰래 찾아온다.

    2013.04.10 08:01 [ ADDR : EDIT/ DEL : REPLY ]
  4. 그런 다음 먼 길, 단계적으로는 발에 연결할 수 없습니다 데려 갈 수 없어, 다음 짧은 방법을 완료 할 수 있습니다.

    2013.04.11 16:44 [ ADDR : EDIT/ DEL : REPLY ]
  5. http://www,Topics related articles:


    http://www.jobdata.kr/343 复件 (11) 韩

    .christianlouboutinve,Topics related articles:


    http://nanee.tistory.com/4 复件 (15) 韩

    .com http://www.cheapshoesec,Topics related articles:


    http://ichart.tistory.com/155 复件 (10) 韩

    .com/

    2013.04.21 22:46 [ ADDR : EDIT/ DEL : REPLY ]
  6. 당신 매력있어, 자기가 얼마나 매력있는지 모르는게 당신매력이야

    2013.07.17 05:57 [ ADDR : EDIT/ DEL : REPLY ]

Event & Cast/Seminar(Event)2010. 5. 16. 00:25
클라우드 컴퓨팅, Rich Internet Application, 모바일 등 최신 IT 트랜드를 한곳에서 확인할수 있습니다.
최신 IT 기술과 닷넷 플랫폼 개발 컨퍼런스 참석해보시죠 라잇나우~

* 행사 안내 : http://www.visitmix.co.kr/remix10/index.html
* 참가 등록하기: https://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&EventID=1032451483&IO=DEnKbtiPFhTrucwfcA2jNQ%3d%3d

Posted by LenAWeb

댓글을 달아 주세요

  1. 당신 매력있어, 자기가 얼마나 매력있는지 모르는게 당신매력이야

    2013.07.15 07:29 [ ADDR : EDIT/ DEL : REPLY ]
  2. 태양이 바다에 미광을 비추면,나는 너를 생각한다.

    2013.07.17 16:10 [ ADDR : EDIT/ DEL : REPLY ]