실버라이트 4 이전의 버전에서 Visual Studio에서 성능 프로파일을 지원하지 않은 것은 아닙니다. 다만, 개발 도구에서 지원하지 않았을 뿐이고, Command Line을 이용하여 브라우저를 Attached 하여 성능 프로파일을 할 수 있었습니다.

물론, 예전에도 실버라이트에서 성능 프로파일링을 위해 커맨드 라인으로 프로파일링을 할 수 있었습니다. 아래와 같은 순서대로 커맨드를 실행하면 되었습니다.

  1. VSPerfClrEnv /sampleon
  2. "c:\Program Files (x86)\Internet Explorer\iexplore.exe" C:\Breakout\Breakout\Bin\Release\TestPage.html
  3. VSPerfCmd /start:sample /output:MyFile /attach:<PID of iexplore.exe process>
  4. Run your scenario
  5. VSPerfCmd /detach
  6. VSPerfCmd /shutdown
  7. VSPerfClrEnv /off

 

이번 Visual Studio 2010 SP1에서는 개발 도구에서 직접 성능 프로파일을 지원합니다. 번거로이 Command Line을 사용할 필요 없이, 기존의 성능 프로파일의 사용 경험을 그대로 실버라이트 4에 적용할 수 있습니다.

Visual Studio 2010의 분석->성능 마법사 시작 메뉴를 클릭하여 실버라이트 응용 프로그램을 프로파일링 할 준비를 합니다.

 

아래와 같이 성능 프로파일을 시작하면 성능 마법사 페이지가 실행됩니다.

  • CPU 샘플링
    예를 들어, 많은 데이터 작업이나 UI요소 핸들링에서 CPU에 얼만큼의 부담을 주는지 측정할 수 있는 방법입니다.

  • 계측
    관리되는 응용 프로그램이 런타임에 얼마만큼의 리소스와 실행 시간을 갖는지 측정할 수 있습니다. 모듈/클래스/메서드 수준에서 성능을 측정할 수 있는 방법입니다.

  • .NET 메모리 할당
    관리되는 응용 프로그램이 얼만큼의 메모리를 소비하고, 가비지 컬렉션(Garbage Collection) 되는지 등의 수준 높은 메모리 정보를 제공합니다.

  • 동시성
    운영체제 차원에서 메모리의 교착 및 컨텍스트 스위칭(Context Switching)을 관찰하고 다른 프로세스에 어떤 영향을 받는지 Low Level의 정보를 제공합니다.

     

 
필자는 CPU 샘플링을 선택하였고, 2단계 페이지에서는 어떤 응용 프로그램을 프로파일링 할 지 선택합니다. 만약 솔루션 탐색기에 로드 되지 않은 프로젝트는 실행 파일(.EXE) 형태의 파일을 선택하면 소스 코드 없이 다음 단계로 이동할 수 있습니다.

 

3단계 마법사 페이지는 즉시 프로파일링을 시작할지 여부를 선택합니다. 기본 설정으로 마침을 선택하면 선택한 프로젝트 또는 실행 파일을 실행하고 프로파일링을 시작하게 됩니다.

 

응용 프로그램이 실행되면 다양한 테스트 시나리오로 테스트를 진행하고, 응용 프로그램을 마치면 수집된 프로파일링 정보로 프로파일링 결과 페이지를 볼 수 있습니다.

 

 

화면의 좌측 상단의 뷰를 변경하면서 성능 구간을 다양한 측면에서 분석을 할 수 있습니다.

 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio 2010에서 단위 테스트 프로젝트를 생성하면 .NET Framework 4.0 의 단위 테스트 프로젝트를 지원했습니다. 단위 테스트 프로젝트를 .NET Framework 3.5 로 변경을 하게 되면 올바로 단위 테스트가 수행되지 않았던 문제가 있었습니다. 바로 아래와 같이 .NET Framework 버전을 변경하게 되면 발생하는 오류 메시지입니다.

 

그림 1 Visual Studio 2010에서 .NET Framework 3.5 로 변경할 경우

 

때문에 MSBuild 4.0으로 .NET Framework 3.5 빌드 및 테스트를 하게 되면 올바르게 빌드가 되지 않는 문제가 있었습니다.

필자 또한 이러한 문제로 인하여 다음과 같은 불편한 과정을 겪어야 했습니다.

참고

VS2008 을 VS2010 에서 동시에 개발하기

http://blog.powerumc.kr/314

 

VS2008 과 VS2010 동시에 개발하기 : 테스트 프로젝트가 포함 될 경우

http://blog.powerumc.kr/315

 

Visual Studio 2010 SP1은 이제 .NET Framework 3.5 버전의 단위 테스트도 지원이 가능하게 되었습니다.

그림 2 Visual Studio 2010에서 .NET Framework 3.5, 4.0 모두 단위 테스트 지원

 

다만, Visual Studio 2010 SP1은 .NET Framework 3.5까지 단위 테스트 프로젝트를 지원하며, 그 이하(.NET Framework 2.0, 3.0) 단위 테스트는 지원하지 않습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio 2010 SP1 의 실버라이트 4 개발 환경

Visual Studio 2010 SP1은 실버라이트 4 개발자 툴 킷이 포함이 되어 바로 실버라이트 4 개발을 할 수 있습니다.

 

그림 4 실버라이트 프로젝트 템플릿 선택

 

기존의 실버라이트 프로젝트 템플릿을 선택하여 프로젝트를 생성하면, 실버라이트 버전을 선택하여 원하는 실버라이트 버전으로 개발을 할 수 있습니다.

그림 5 실버라이트 버전 선택

 

실버라이트 4는 많은 사용자의 요구 사항과 코어의 변화가 있습니다. 자세한 내용은 아래의 링크를 ㅋ통해 MSDN 을 참고하십시오

참고

Silverlight 4의 새로운 기능 http://msdn.microsoft.com/ko-kr/library/dd772166(v=vs.95).aspx

 

실버라이트 4 의 새로운 기능

  • 컨트롤
  • 브라우저 외부에서 실행
  • 미디어
  • 네트워킹
  • 인쇄
  • 사용자 인터페이스
  • XAML
  • 데이터
  • 응용 프로그램 모델
  • 코어
  • Silverlight 디자이너
  • Windows Forms 플랫폼 지원
  • 관련 항목
Posted by 땡초 POWERUMC

댓글을 달아 주세요

웹 브라우저 도움말이 데스크탑 응용 프로그램으로 변경

Visual Studio 2010 이전의 도움말 설명서(Help Documentation) 은 별도의 클라이언트 응용 프로그램으로 구동되었습니다. 하지만 Visual Studio 2010버전에서는 웹 브라우저를 통해 MSDN Online과 같은 화면으로 도움말 설명서가 로컬 웹 서버를 통해 구동이 되었습니다.

 

그림 1 Visual Studio 2008 도움말 설명서

 

그림 2 Visual Studio 2010 로컬 웹 도움말 설명서

 

두 가지 방식의 장단점은 다르겠지만, Visual Studio 2010 로컬 웹 도움말 설명서는 입력한 내용의 인덱스를 보여주지 않아 매우 불편했었습니다. 클래스 이름이나 네임스페이스 이름으로 검색할 때 AJAX 기술로 키워드의 인덱스를 보여주었더라면 그나마 좋았을 텐데 하고 불편함을 감수하기도 하였습니다.

 

Visual Studio 2010 SP1 에서는 로컬 웹이 구동되고 키워드가 인덱스 되지 않는 부분을 개선하여 기존의 로컬 도움말 설명서로 개선이 되었습니다.

 

그림 3 Visual Studio 2010 SP1 의 로컬 도움말 설명서

 

기존의 Visual Studio 2008 과 유사한 로컬 도움말 설명서 응용 프로그램으로 구동이 됩니다. 다만, 필자는 색인 창을 오른쪽에 도킹하여 쓰는데, 현재 Visual Studio 2010 SP1 에서는 도킹 기능은 제공하지 않습니다.

 

개선해야 할 점

기존의 웹 브라우저 방식보다 Help Viewer 1.1 이 낫긴 하지만, 여전히 사용자의 측면에서 불편하기는 마찬가지 입니다.

첫 번째, 여전히 로컬 웹 서버가 동작하여 도움말이 구동됩니다. 닫아버리고 싶은 왠지 모를 강박감…!

두 번째, 도움말의 폰트 크기가 제각각 입니다. 폰트도 작은데, 크게 키우면 너무 크고...
좌측은 Help Viewer 1.1, 우측은 MSDN 온라인 도움말.


세 번째, 샘플 코드 구조가 사정없이 깨집니다.
좌측, Help Viewer 1.1, 우측은 MSDN 온라인 도움말

 

네 번째, 개인적으로 인덱스 창을 오른쪽에 도킹하는데, 도킹 기능이 없네요^^;

다섯 번째, MSDN Documentation 2008 에서는 고유 URL 이 있는데, 지금은 도움말 에이전트의 URL 도 보여주지 않네요.
좌측은 MSDN Documentation 2008, 우측은 Help Viewer 1.1

 

그 밖에, 사용자 경험은 여러분께 맡기겠습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. kkamsean 2011.08.03 10:34 Address Modify/Delete Reply

    덕분에 Help Viewer 잘사용하고 있습니다.
    도움말-도움말설정관리 - 온라인 업데이트 확인 - 업데이트 하니 샘플 코드 구조가 깨지는현상은 해결 되네요

    • 땡초 2011.08.05 09:29 Address Modify/Delete

      와... 좋은 정보 감사합니다.^^

      그치만 저희 회사는 개발장비가 폐쇄망이라 업뎃이 불가능 ㅠㅠ

Microsoft Research 프로젝트로 알아보는 새로운 세대의 시작

Microsoft Research 프로젝트는 Microsoft 에서 진행하는 오픈된 기술과 연구를 하는 R&D 조직으로, 새로운 비즈니스와 기술을 결합하는 프로젝트입니다. 최근 들어 Microsoft Research 사이트의 프로젝트는 작년과 비교해 엄청나게 늘어났습니다. 작년까지만 해도 불과 10~30개의 오픈된 프로젝트가 현재 수백 개의 프로젝트로 늘어난 것이 굉장히 놀랍니다. 그만큼 기술의 트랜드가 빠르게 변한다는 반증이 되겠지요.

Microsoft Research 프로젝트를 열람해 보는 것은 매우 중요합니다. 왜냐하면 당장 2~3년 내에 현실화되는 기술들도 있으며, 현재의 기술이 작년의 Microsoft Research 프로젝트와 통합된 것이 많기 때문이죠. 앞으로 나와는 상관 없는 것들도 있지만, 간접적으로 영향권에 들게 될거라고 생각합니다. 과연 스마트 폰이 어느샌가 내 호주머니 속에 들어가게 될지 모르는 것 처럼 말이죠^^

그럼 Microsoft Research 프로젝트에서 진행하고 있는 재미있는 프로젝트를 소개해 드립니다. 말씀 드렸다시피 이 프로젝트들은 언제 사라질지 모르는 것들이지만, 가치가 있는 것들은 모조리 비즈니스/웹/개발 영역에 접목이 될 수 있습니다.

   

Microsoft Research 진행 프로젝트 소개

A programming language for composable DNA circuits

http://research.microsoft.com/en-us/projects/dna/

이 프로젝트는 프로그래밍 언어의 핵심 로직을 시각화(Visualization)해 주는 프로젝트입니다. 가령 아래와 같은 로직이 있다고 치면, 참 답답하죠. 왜냐하면 제가 무슨 뜻인지 모르니까요^^

directive sample 20000.0 1000

directive plot <kkks t^ kkksr>; <kkppl t^ kkpp x^>; <kpp t^ kppr>;

<kkk t^ kkkr>; <kkl t^ kk x^>; <k t^ kr>; <kkpl t^ kkp x^>; <kp t^ kpr>

directive scale 10.0

def bind = 0.0003 (* /nM/s *)

def unbind = 0.1126 (* /s *)

def Init = 50

def Low = 1

def Excess = 100

   

new x@ bind,unbind

new t@ bind,unbind

   

def SpeciesL(N,al,a) = N * <al t^ a x^>

def SpeciesR(N,a,ar) = N * <a t^ ar>

def BinaryLRxLR(N,al,a,b,br,cl,c,d,dr) = (* A + B ->{N} C + D *)

new i

( constant N * t^*:[a x^ b]<i cl t^ i t^ dr>:t^*

| constant N * Excess * x^*:[b i]:[cl t^]<c x^>:[i]:<d>[t^ dr]

)

   

new e1l new e1 new kkk new kkkr new kkl new kk new k new kr

new e2l new e2 new kkpase new kkpaser new kpasel new kpase

new kkks new kkksr new kkpl new kkp new kkppl new kkpp

new kp new kpr new kpp new kppr

   

( SpeciesL(1,e1l,e1) (* E1 *)

| SpeciesR(10,kkk,kkkr) (* 10 KKK *)

| SpeciesL(100,kkl,kk) (* 100 KK *)

| SpeciesR(100,k,kr) (* 100 K *)

| SpeciesL(1,e2l,e2) (* E2 *)

| SpeciesR(1,kkpase,kkpaser) (* KKPase *)

| SpeciesL(1,kpasel,kpase) (* KPase *)

| BinaryLRxLR(Init,e1l,e1,kkk,kkkr,e1l,e1,kkks,kkksr) (* E1 + KKK ->{r} E1 + KKKs *)

| BinaryLRxLR(Low,e2l,e2,kkks,kkksr,e2l,e2,kkk,kkkr) (* E2 + KKKs ->{r} E2 + KKK *)

| BinaryLRxLR(Init,kkl,kk,kkks,kkksr,kkpl,kkp,kkks,kkksr) (* KK + KKKs ->{r} KKP + KKKs *)

| BinaryLRxLR(Init,kkpl,kkp,kkks,kkksr,kkppl,kkpp,kkks,kkksr) (* KKP + KKKs ->{r} KKPP + KKKs *)

| BinaryLRxLR(Low,kkppl,kkpp,kkpase,kkpaser,kkpl,kkp,kkpase,kkpaser) (* KKPP + KKPase ->{r} KKP + KKPase *)

| BinaryLRxLR(Low,kkpl,kkp,kkpase,kkpaser,kkl,kk,kkpase,kkpaser) (* KKP + KKPase ->{r} KK + KKPase *)

| BinaryLRxLR(Init,kkppl,kkpp,k,kr,kkppl,kkpp,kp,kpr) (* KKPP + K ->{r} KKPP + KP *)

| BinaryLRxLR(Init,kkppl,kkpp,kp,kpr,kkppl,kkpp,kpp,kppr) (* KKPP + KP ->{r} KKPP + KPP *)

| BinaryLRxLR(Low,kpasel,kpase,kpp,kppr,kpasel,kpase,kp,kpr) (* KPase + KPP ->{r} KPase + KP *)

| BinaryLRxLR(Low,kpasel,kpase,kp,kpr,kpasel,kpase,k,kr) (* KPase + KP ->{r} KPase + K *)

)

어찌되었건 이런 코드는 다양한 방법으로 시각화를 해줍니다. 아래는 제가 시뮬레이션해 보니 이런 결과가 나오네요.

중요한 것은 이런 형태의 시각화(Visualization)은 지속적으로 발전하고 있습니다. 모델링(Modeling) 과 DSL(Domain Specifically Language) 의 중요성과 함께 지속적으로 발전하게 될 테니까요.

이 데모는 실버라이트로 작성되어 웹에서 직접 테스트해 보실 수 있습니다. http://lepton.research.microsoft.com/webdna/

   

   

Ajax View

http://research.microsoft.com/en-us/projects/ajaxview/

AJAX 기술로 직격타를 받고 성장한 것이 바로 Web 2.0 입니다. 그리고 Web 2.0을 넘어 Web 3.0이 언급이 되었고, 더 나아가 SNS(소셜 네트워크 서비스)로 발전한 가운데, 가장 영향력을 미친 기술이 AJAX 입니다. 기술적으로 트래픽의 라운드 트립을 줄이고, 분산 아키텍처에 지대한 영향을 미쳤으며, 더 나아가 브라우징(Browsing) 사용성을 극대화한 기술입니다.

하지만 사실상, AJAX 기술은 불필요한 라운드 트립을 증가시킬 수 있는 가장 적절한 수단이기 때문에 잘 사용하는 것이 어려운 기술이기도 합니다. Ajax(Asynchronous JavaScript and XML) 는 순수한 자바스크립트 기술로써 많은 부분을 클라이언트에 의존하지만 자바스크립트와 더불어 HTML CodeDom, XML, DHTML 까지 확장되어 그 영역이 상당하게 복합된 기술이라고 보셔도 됩니다.

   

그렇다면 과연 AJAX 를 어떻게 잘 쓸 것인가에 대한 고민을 이 Ajax View 프로젝트가 도움을 줄 것 같습니다. 이 기술을 중심으로 파생되어 AJAX Performance Profiling, Monitoring 기술의 기반이 되는 것 같습니다. 자세한 내용은 위의 사이트 링크를 참고하세요.

   

Automated Test Generation (ATG)

일찍이 Microsoft 는 1990년대 이후부터 테스팅 기술에 대한 연구를 꾸준히 해온 정통 소프트웨어 기업입니다. 코드 레벨의 테스트는 물론이며, Windows 95 시절에 지원되기 시작한 Plug-and-Plug(하드웨어를 꽂으면 인식하는 기술) 등 상상하지도 못했던 많은 기능을 자동화 테스팅한 기업이기도 합니다. 지금 우리 세대에서 맛보고 있는 테스팅 기술은 Microsoft 의 실제 내부의 기술과는 매우 격차가 있지요. (인정합니다.^^;)

처음 공식적으로 나온 White Box Automation Test 도구인 PEX 가 Visual Studio 2008 시절부터 나오긴 하였지만, 완성된 기술은 아니며 계속 발전하는 기술입니다. PEX 와 관련하여 온라인 세미나를 찍은 것이 있는데 못찾겠군요.;; 대신 아래의 테스팅과 관련된 내용을 참고 하세요.

[ALM-Test] 6. Load Runner vs Visual Studio 2010 테스팅 비교 분석 - http://willstory.tistory.com/4 제공
[ALM-Test] 5. 테스트 계획
[ALM-Test] 4. 테스터(SDET) 의 역할
[ALM-Test] 3. 테스터에 대한 오해와 진실
[ALM-Test] 2. 왜 단위 테스트를 해야 하는가? [2]
[ALM-Test] 1. 왜 단위 테스트를 해야 하는가? [1]
[Testing] Moq.NET (T/B Driven Development)
[Testing] BDD (Behavior-Driven Development–행위 주도 개발)
[Testing] TDD (Test-Driven Development-테스트 주도 개발)

아무튼 이런 테스팅을 위해서 Dynamic Proxy 기술과 Dynamic MSIL Injection 같은 기술이 필요한데, 이미 이런 부류의 닷넷 기술이 존재하긴 합니다. 그 중에 대표적인 것이 Microsoft.CCI 와 Code Contract, Castle Dynamic Proxy, Mono Cecil, Moles 등등등…

하지만 이번 이 프로젝트는 이 기반 기술 들을 통합하려는 의지를 보이는 것 같습니다. 개인적으로 굉장히 기대를 하고 있는 프로젝트이기도 합니다.

   

Code Contracts

http://research.microsoft.com/en-us/projects/contracts/

Code Contracts 는 이미 유명한 기술입니다. 초기에 Microsoft Research 프로젝트로 진행 중이다가 Visual Studio 2008 시절에 릴리즈가 되었으며, .NET Framework 4.0 와 Visual Studio 2010 에는 아예 탑재 시켜버렸습니다. Code Contract 를 직역하면 코드 계약(Code Contract) 인데, 코드간의 명확한 명세를 코드 레벨에서 작성하는 것입니다. 이것도 예전에 온라인 세미나를 했었는데 못찾겠군요;;

명확한 코드 계약이 왜 필요하냐…? 라고 물으신다면 당시 세미나에서 예시를 든 것이, "당신이 회사를 다닌다면 회사와 계약을 합니다. 계약서에는 연봉 정보도 있고, 근태 규칙도 있고 여러 가지가 있습니다..." 마찬가지로 내가 만든 코드를 누군가 써야 할 때 바로 그 명세가 되는 것이 Code Contract 입니다.

이 기술로 파생될 수 있는 기술은 상당히 많습니다. 명확하게 코드를 계약하게 되면 테스트에 굉장히 용이하며, 더 나아가 자동화 테스트(PEX 와 같은)에서 훨씬 여유로워 집니다. 그리고 정적 분석(Static Analytics) 기술과 접목하여 잠재적인 코드의 계약 관계를 파악하여 미리 경고나 오류를 발생해 줄 수 도 있고요.

하지만 저의 경우는 그리 톡톡히 효과를 보지는 못했습니다. 왜냐하면 명확한 계약은 1:1 계약에서 효과가 있지만, 1:N, N:N 간의 계약에서는 그 계약 조건이 명확해 질 수가 없습니다. 현재 나온 PEX 기술과 Code Contract 를 조합하여 계약을 파생시키는 기술적인 부분이 부족하며, 계약의 제약 조건 등 아직은 적극적으로 사용하기에는 부족해 보입니다.

하지만 이 기술을 근간으로 하여 더 효과적인 많은 방법들이 위의 Automated Test Generation (ATG) 프로젝트 등으로 활발히 연구 중이며, 앞으로도 지속적으로 관심을 가질 기술은 분명합니다.

   

Composable Virtual Earth

http://research.microsoft.com/en-us/projects/cve/

제가 설명드릴 만큼 깊이 이해를 못하고 있기 때문에, 참고하세요^^; 중요한 것은 이미지 프로세싱 등의 기술로 효과적으로 운용을 하고자 하는 것 같습니다.

   

DryadLINQ

http://research.microsoft.com/en-us/projects/dryadlinq/

이 프로젝트는 C#의 LINQ+Parallel 기술을 접목하여 분산된 데이터의 접근성을 극대화한 기술입니다. 이미 잘 알고 있는 LINQ 와 .NET 4.0부터 제공되는 TPL(Task Parallel Library)를 이용하여 단순한 분산 데이터에 접근하는 방법입니다. 기존의 LINQ to SQL, Entity Framework 과 같이 단일 데이터 소스가 아닌 클러스터링 된 분산 데이터에 대상이 됩니다.

이 프로젝트는 기존에 존재하는 기술을 접목하여 새로운 기술의 탄생의 근원이기도 합니다. 하지만 생각해보면 분산된, 클러스터링된 데이터를 왜 DryadLINQ 를 써야 할까. 그만큼 대규모의 데이터면 '데이터베이스 관리자를 따로 둘텐데' 말이죠.

제 짧은 소견으로는 분명히 이 기술은 Microsoft Cloud 기술인 Azure 에 접목될 가능성이 농후합니다. 즉, Azure 기반의 클라우드 기술을 엔터프라이즈(Enterprise) 급으로 끌어올릴 수 있는 전략적인 기술이기도 합니다. 이런 부분에서 아직 Azure 는 완성된 기술은 아닙니다. 계속 발전하는 기술이지…

   

Doloto

http://research.microsoft.com/en-us/projects/doloto/

이 프로젝트는 정말인지 기대가 됩니다. 아까 말씀 드린 'Ajax View' 프로젝트와 연관이 있어 보이지만, 이 프로젝트는 나름대로 효과를 톡톡히 보여줄 것 같습니다.

문제는 Web 2.0 은 말씀 드린대로 AJAX 기술과 떨어질 수 없는 관계이기도 합니다. 그런데 데이터 처리를 서버&클라이언트로 분산하면서 결국은 서버를 거치게 되고, 원치않던 라운드 트립은 증가하게 되고, 결국은 사용자의 사용성(광범위한…)은 저하될 수 있습니다. 뭐가 문제일까요? AJAX 가 문제일까, Web 2.0 이 문제일까, 코드가 문제일까, 시스템이 문제일까….

Doloto 는 과분하게도 이런 문제를 큰 고민 없이 해결해 줍니다. 아래는 그래프는 Doloto 를 적용하면 대략 50%에 근사하게 성능이 개선되는 수치입니다. 성능을 개선하기 위해 특별히 코드를 변경할 필요도 없다고 합니다. 그렇다면 연관된 기술은 서버 코드/클라이언트 코드 분석 기술 이외에 캐싱(Caching) 일 텐데…

일단 기대가 됩니다.

   

ExtendedReflection - Dynamic Analysis Framework for .NET

http://research.microsoft.com/en-us/projects/extendedreflection/

이 기술은 'Automated Test Generation (ATG)' 과 없지 않아 연관이 될 수 있을 것 같습니다. 여기에서는 분석 도구라고 설명하지만, 이런 Low-Level의 구현이 가장 잘 되어 있는 프레임워크는 Mono.Cecil입니다. 그러고 보면 약간은 중복성이 있어 보이는 프로젝트이기도 합니다.

적어도 Microsoft.CCI 는 그렇다쳐도 Microsoft.Unity.ObjectBuilder, Castle.DynamicProxy와 Mono.Cecil은 .NET 오픈 소스 중에 가장 대표적인 Dynamic Proxy 및 MSIL 기술인데, 어찌될지 그냥 지켜보고 있습니다.

단순히 기존 존재하는 오픈 소스 대체용도인지, 다양한 기술을 접목하고자 하는 진정한 프레임워크 기반 기술인지는 두고 볼 일입니다.

   

F#

http://research.microsoft.com/en-us/projects/fsharpproj/

깜놀하셨죠? 바로 F# 도 Microsoft Research 에서 태생한 언어입니다. 그냥 그렇다구요^^

   

Graphical tools for text analysis

특별히 아래의 그림만으로 이해하시리라 믿고, 패스!

   

HD View

예전에 Silverlight 의 딥줌(DeepZoom) 을 기억하십니까? 저는 사실 결과물에 대해 다른 것은 없지만, 뭔가 이미지 프로세싱 측면에서 다른 접근 방식을 가지고 가는 것 같습니다. 워낙 자료도 적어서 뭐라고 설명 드리기는 힘들 것 같아요.

다만, 아래의 그림을 보시면 딥줌과 유사하지만, 그래도 유사할 것 같아요^^… 어떤 알고리즘인지가 궁금할 뿐;;

   

HD View SL

위의 'HD View' 의 실버라이트 버전입니다. 참고^^

   

   

정리

Microsoft 는 소프트웨어 개발 기업으로 세계에서 1위 기업입니다. 그 중, Microsoft Research 프로젝트는 여러분들에게 오픈된 프로젝트일 뿐이며, 내부적으로 더 많은 연구가 계속되고 있습니다. 예를 들어, http://codeplex.com 은 여러분들에게 공개된 오픈 소스 커뮤니티지만, Microsoft 내부에는 더 많은 프로젝트들이 수백 개씩 오픈 되어 있습니다. (제가 어떻게 아냐구요? Microsoft 직원이 쓴 책에 그렇다고 말하더군요^^)

다만, 그 중에서 저희에게 오픈된 기술 R&D 영역이 Microsoft Research 프로젝트입니다. 그리고 관심이 없으셔도 상관은 없답니다. 최근 기술 트랜드는 너무나도 빨리 나오고, 변하기 때문에 모두 따라가기가 벅차기도 합니다. 그리고 이 모든 것을 자세하게 알 수 없게 되었습니다. 중요한 것은 내가, 여러분들이 받아들일 기술/트랜드를 준비할 수 있겠지요. 모르고 아는 것과 알고 아는 것은 상당히 다릅니다.

직접적으로 이런 기술들이 나에게는 관련이 없지만, Microsoft 는 비즈니스/웹/시각화/클라우드에 지속적으로 시도를 하는 것을 알 수 있으며, 장차 알게 모르게 도움이 될 거라고 믿습니다. 그리고 이 서비스/기술을 이용하는 사람은 여러분들이 될 수도….^^

Posted by 땡초 POWERUMC

댓글을 달아 주세요

지난 아티클에서 Visual Studio 2008 과 Visual Studio 2010 을 동일한 소스 코드와 프로젝트로 개발하기 위한 환경을 구성하는 방법을 알아보았습니다.

문제 원인

하지만 지난 시간에 언급한 듯이 테스트 프로젝트가 포함된 경우는 VS2008 과 VS2010 을 동시에 사용할 수 없는 문제가 발생합니다. 그 이유는 Microsoft.VisualStudio.Quality 프레임워크가 개선이 되고, Microsoft.VisualStudio.TestTools 프레임워크가 도입되면서 기존의 테스트 프레임워크와 비호환적인 부분이 존재하게 됩니다.

아래와 같이 VS2008 에서 작업한 테스트 프로젝트가 있을 경우,

지난 아티클의 방법으로 프로젝트를 변환하게 되면 아래의 오류가 발생합니다.

기존 프로젝트는 기존의 .NET Framework 버전을 그대로 사용할 수 있지만, 테스트 프로젝트는 반드시 .NET Framework 4.0 으로만 사용할 수 있습니다.

만약 하위 프레임워크 버전인 .NET Framework 3.5 로 변경하고자 할 경우 아래와 같은 오류 메시지가 나타나고, 다시 .NET Framework 4.0 버전으로 변경이 됩니다.

일부 이미 완성된 테스트 프로젝트인 경우 이것보다 더 다양한 오류 메시지를 볼 수 있습니다.^^;

어쨌든, Microsoft.VisualStudio.QualiltyTools 프레임워크가 .NET Framework 4.0 버전으로 고정되어 자칫 테스트 프로젝트가 굉장히 큰 우범을 저지를 수 있는 문제가 될 수 있습니다.

반대로 Visual Studio 2010 에서 만든 테스트 프로젝트는 .NET Framework 4.0 이 기본이고 Microsoft.VisualStudio.QualityTools 프레임워크와 Microsoft.VisualStudio.TestTools 프레임워크가 기본 참조(RTM 에서는 제외 됨)이며, 이 프레임워크의 버전도 4.0.xxxxx 버전이라 하위 버전과 호환되지 않습니다.

VS2010 이든 VS2008 이든 테스트 프로젝트가 한번 VS2010 으로 업그레이드 되었다면, VS2008 에서 테스트 프로젝트를 사용하기 위해서는 다운그레이드는 그리 쉽지 만을 않습니다. 왜냐하면 VS2008 에서 테스트 프로젝트를 로드하면 프로젝트의 참조가 깨져있습니다.

그 이유는 .csproj 파일을 열어보면 답이 나오는데요. 아예 Microsoft.VisualStudio.QualityTools 프레임워크의 버전 번호를 명시하여 해당 VS2008 에서는 어셈블리 리디렉션(Assembly Redirection) 을 시키기가 좀 애매해 집니다.

   

문제 해결 기본 지식

이 문제를 해결하기 위해서는 테스트 프로젝트간의 비 호환적인 테스트 프레임워크로 인한 문제이므로, 문제를 해결하기 위한 접근 측면에 제한을 둘 수 밖에 없습니다. Visual Studio 2010 에서는 Coded UI, Test Impact 등 새로운 기능이 추가되었고, 기존 테스트 또한 비주얼한 부분이 개선이 되면서 강제적으로 테스트 프레임워크의 버전을 .NET Framework 4 로 고정을 시키는 것 같습니다.

이 문제는 MSBuild 를 통해 해결하기 위한 기본적인 지식을 알려드립니다. 여러분이 알다시피 MSBuild 는 Microsoft 의 통합 빌드 솔루션입니다. 예전에는 "빌드"라는 말 대신 "컴파일"이라는 단어를 사용했었죠. 컴파일이란 소스 코드를 목적 파일 또는 실행 파일로 변환하는 과정을 "컴파일"이라고 합니다.

컴파일과 빌드를 비교하는 아주 간단한 그림 입니다.
컴파일은 목적은 소스 코드를 목적 파일로 변환하여 실행 파일 또는 라이브러리로 만들기 위한 목적입니다.

빌드는 컴파일의 일련의 과정을 플로우(Flow) 로 처리하여 컴파일 중에 더 많은 작업을 하기 위한 목적입니다.
가장 대표적인 빌드 솔루션이 MSBuild 이며, 이 외에 Ant 또는 NAnt 등이 바로 이러한 솔루션입니다. 그리고 Team Foundation Server 의 팀 빌드도 바로 MSBuild 에 기반하고 있다는 것입니다.

필자 또한 MSBuild 를 접하면서 나의 지식의 끝을 무한하게 확장해 주었던 것이 MSBuild 입니다. MSBuild 는 정적인 컴파일 방식에서 동적인 방식의 빌드로 거듭나면서 굉장히 많은 가능성을 보여주는 부분이기도 합니다. Microsoft 의 MSBuild 의 대략적인 구조는 아래와 같습니다.

기본적으로 MSBuild 는 Task 의 집합이라고 해도 과언이 아닙니다. 그리고 이 Task 중에 빌드와 연관된 Task 도 있습니다. 이 Task 를 .NET Framework 버전에 따라 Project References(프로젝트 참조)를 변형시키는 방법입니다.

 

해결 방법

이 테스트 프로젝트를 VS2008, VS2010 양 쪽에서 사용하도록 하기 위해서는 이 어셈블리 참조를 동적으로 변화시킬 필요가 있습니다. 이 방법도 MSBuild 의 Choose 라는 조건문으로 제어를 분기할 수 있는 방법입니다.

1. 먼저 솔루션 탐색기에서 열려 있는 프로젝트를 언로드 한 후, 편집을 클릭합니다.

2. 그럼 아래와 같이 참조와 관련되어 있는 부분이 ItemGroup 요소에 있는 것을 확인할 수 있습니다.

3. 이 ItemGroup 에서 VS2008, VS2010 에서 공통적인 참조 어셈블리를 별도의 ItemGroup 으로 분리합니다. 그럼 아래와 같은 형태가 되겠지요?

4. 테스트와 관련된 ItemGroup 에 Choose 조건 분기 요소를 사용하여 조금 변형해 봅시다. .NET Framework 의 버전 별로 말이죠.

위의 $(MSBuildBinPath) 는 실제로 빌드가 수행할 때의 MSBuild 의 경로를 나타냅니다. 하지만 여기에는 한 가지 함정이 있습니다. Visual Studio 2008 에서는 <Message Text="$(MSBuildBinPath)" /> 가 아래와 같이 C:\Windows\Microsoft.NET\Framework\v2.0.50727 로 나타납니다. 하지만 내부적으로 이 MSBuild 는 v3.5 경로의 MSBuild.exe 를 실행하게 됩니다. 자세한 이유와 내막은 Microsoft.Common.targets 파일을 뒤져보시면 아실거라고 생각합니다.

그리고 Choose 조건 분기 요소는 if ~ else 와 같은 구문입니다. ItemGroup 요소는 하나의 항목을 담는 필드라고 보시면 되고, PropertyGroup 은 한 Property 에 여러 항목을 담는 속성이라고 보시면 됩니다. 이 부분은 MSBuild 를 공부해 보시면 어렵지 않는 기본적인 부분이니 자세한 설명은 여기에서 하지 않겠습니다.

5. 모두 완료 되었습니다. 각각의 VS2008, VS2010 에서 테스트 프로젝트를 모두 사용할 수 있게 되었습니다.

만약 Coded UI 와 같은 VS2010 의 새로운 기능을 사용할 경우 아래와 같이 추가적인 어셈블리를 참조하게 됩니다.

이 경우도 위의 4번과 같이 ItemGroup 의 VS2010 용 어셈블리를 아래와 같이 넣어버리면 됩니다.

그럼 VS2008 인지 VS2010 인지에 따라서 참조 어셈블리가 완벽하게 분리가 됩니다.

하지만 VS2008 에서 빌드를 할 경우 아래와 같이 오류가 발생하게 됩니다. 당연히 VS2008 에서는 Coded UI 등에서 필요한 Microsoft.VisualStudio.TestTools 프레임워크가 존재하지 않고, 이 프레임워크를 재사용하기 힘들기 때문입니다.

하지만 이 문제로 해결해 볼까요? 위에서 Property 를 재정의한 구문이 생각나실 겁니다. 전처리 지시문의 상수 값으로 사용되는 <DefineConstants> 에 NET4.0 빌드인지, NET3.5 빌드인지 알 수 있도록 상수 값을 선언하였습니다.

이 상수 값을 이용하여 CodedUI 등 VS2010 에서 새로 추가된 부분에, #if ~ #endif 지시문을 사용하여 감싸 주시면 됩니다.

   

이제 Visual Studio 2008 이든 Visual Studio 2010 이든 테스트 프로젝트를 양 쪽 어떤 도구를 사용하든 테스트가 가능하도록 구성하는 방법을 완료하였습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. file recovery software 2010.07.06 14:15 Address Modify/Delete Reply

    이건 정말 좋은하고 유용한 정보를 비주얼 스튜디오 2008비주얼 스튜디오 2010에 대한 기사입니다

  2. 박진혁 2010.10.19 14:30 Address Modify/Delete Reply

    우와..고민하고 있던것을..감사합니다!!^^

6월 1일 REMIX10 행사를 기점으로 Visual Studio 2010 한글판이 대중에 공개가 되었습니다. Visual Studio 2010 의 영문 버전은 그 이전에 출시가 되었지만 한글판이 출시된 이후에 더 많은 관심을 받게 되었습니다.

Visual Studio 2010 으로 개발 환경을 업그레이드를 진행하는 곳이 특히 해외에서 많습니다. 제가 그걸 어떻게 다 아냐구요? 항상 트위터 검색을 통해 해외에서 Visual Studio 2010 를 어떻게 사용하고 있는지 매일 매일 관심 있게 보고 있답니다. ^^

어쨌든 Visual Studio 2008 을 쓰고 있지만, Microsoft MVP 이거나 회사에서 MSDN Subscription 라이선스가 있다면 Visual Studio 2008, Visual Studio 2010 개발 도구가 혼합해서 사용될 경우가 있습니다. 이런 경우 두 개발 도구에서 쌍방 개발 가능하게 구성을 할 수 있습니다.

이 방법은 제니퍼소프트의 정성태 과장님의 블로그에서 예전에 소개했던 VS2005, VS2008 혼합해서 사용하는 방법과 동일합니다.

1. 간단한 예제로 Console Application 을 Visual Studio 2008 에서 생성했습니다.

   

2. 기존의 솔루션 파일의 복사본을 하나 만듭니다.

   

3. 솔루션 파일을 노트패드로 ConsoleApplication - VS2010.sln 파일을 열어 다음의 항목을 수정합니다.

   

4. 프로젝트 파일을 열어 ToolsVersion 의 '3.5' 를 '4.0' 으로 수정합니다. 'ConsoleApplication1.csproj'

  

만약 다수의 프로젝트일 경우, 위의 3번에서 수정한 솔루션 파일을 열면 프로젝트를 변환하는 마법사로 진행하면 쉽게 변경이 됩니다.

   

5. 모두 완료 되었습니다. Visual Studio 2010 와 Visual Studio 2008 에서 각각의 솔루션 파일로 동시에 작업을 할 수 있습니다.

   

위의 방법을 이용하여 Visual Studio 2008 과 Visual Studio 2010 에도 모두 개발이 가능합니다. 하지만 만약 테스트 프로젝트가 포함이 되어 있다면 두 개발 도구에서 사용할 수 없습니다. 왜냐하면 .NET Framework 4.0 에서는 테스트와 관련된 Microsoft.VisualStudio.Quality 프레임워크가 개선되고, Microsoft.VisualStudio.TestTools 프레임워크가 추가되면서 이전 Visual Studio 2008 과 프로젝트가 호환이 되지 않습니다.    

하지만 불가능할 것 같은 테스트 프로젝트도 Visual Studio 2008과 Visual Studio 2010에서 동시에 사용할 수 있는 방법이 있습니다. 이것은 다음에 알아보도록 하겠습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 2013.05.12 17:35 Address Modify/Delete Reply

    비밀댓글입니다

Visual Studio 2010, 2008 버전에서는 .NET Framework 2.0, 3.5, 3.5 SP1 을 선택할 수 있는 Multi Targeting(멀티 타게팅) 기능을 제공합니다. 최신의 .NET Framework 버전을 선택하여 개발할 수 있으며, 하위 호환성 있는 개발을 위해 최신의 Visual Studio 에서 하위 .NET Framework 버전을 선택할 수 있습니다.

하지만 Visual Studio 2010, 2008 의 Multi Targeting 은 .NET Framework 1.x 를 지원하지 않습니다. 프레임워크 버전과 개발 도구간의 비호환성 문제 때문에 .NET Framework 1.x 버전은 Visual Studio 2003 으로만 개발이 가능합니다.

이번에 소개하는 방법을 통하여 Visual Studio 2010, 2008, 2005 도구를 이용하여 .NET Framework 1.x 를 개발할 수 있는 환경을 구성할 수 있습니다.

단, 기존의 Visual Studio 2003 은 MSBuild(Microsoft 통합 빌드 솔루션) 를 지원하지 않기 때문에, .NET Framework 4.0 SDK 에 포함된 MSBuild Targets 를 사용하였습니다.

(Visual Studio 2008, 2005 버전에서도 아래와 같은 방식으로 MSBuild Targets 을 수정하시면 .NET Framework 1.1 개발 및 빌드 환경을 구축할 수 있습니다)

   

Visual Studio 2003 으로 개발된 프로그램

아래와 같이 간단한 ConsoleApplication1 프로젝트를 만들었습니다.

이 응용 프로그램을 실행하면 다음과 같은 결과가 나옵니다.

Mscorlib.dll 의 버전이 1.0.5000.0 인 것을 확인할 수 있습니다.

   

Visual Studio 2010 으로 프로젝트 컨버팅 하기

만들어진 Visual Studio 2003 프로젝트를 Visual Studio 2010 버전으로 컨버전합니다.

컨버전이 완료되었으면 프로젝트 파일(.csproj) 을 열어 아래와 같이 수정합니다.

먼저 기존의 .NET Framework 어셈블리를 .NET Framework 1.1 의 어셈블리로 강제로 변경해 줍니다. Visual Studio IDE 에서 .NET Framework 1.1 을 추가하면 2.0 이상의 어셈블리가 추가되므로 반드시 .csproj 파일에서 변경해 주어야 합니다.

그리고 Import 노드에 Microsoft.Csharp.v1.1.targets 의 라인을 추가해 줍니다.

   

Microsoft.CSharp.v1.1.targets 파일 만들기

$(MSBuildToolsPath) 의 폴더인 C:\Windows\Microsoft.NET\Framework\v4.0.30128 경로에서 Microsoft.CSharp.targets 파일의 복사본 이름을 Microsoft.CSharp.v1.1.targets 파일로 만들어 줍니다.

위의 방법으로 Microsoft.Common.target 파일을 Microsoft.Common.v1.1.targets 파일 이름으로 복사본을 만듭니다.

 

Microsoft.CSharp.v1.1.targets 파일 수정하기

아래의 노드를 찾아서 <NoWarn> 노드의 1701; 1702 값을 제거합니다. 이 값은 .NET Framework 1.1 의 경고 값으로 사용할 수 없는 값입니다.

그리고 아래의 CSC 노드를 찾아서 ErrorReport 속성을 제거합니다. .NET Framework 1.1 SDK 의 CSC.exe 는 ErrorReport 기능이 존재하지 않기 때문입니다.

추가로 CSC 노드의 ToolPath 의 경로를 아래와 같이 수정합니다. 이 경로에 포함되는 csc.exe 를 사용하여 .NET Framework 1.1 로 빌드하는 중요한 구문입니다.

아래의 Import 노드를 찾아서 복사본으로 만들었던 Microsoft.Common.v1.1.targets 파일명으로 변경합니다.

   

Microsoft.Common.v1.1.targets 파일 수정하기

아래의 노드를 찾아 붉은 영역의 노드를 추가합니다. 만약 TargetFrameworkVersion 노드를 .csproj 파일에 명시적으로 수정하게 되면, Visual Studio 2010 은 v2.0 이상 버전으로 변경을 해야 프로젝트 파일을 로드할 수 있기 때문에 Microsoft.Common.v1.1.targets 파일에서 변경해야 합니다.

아래의 ReportingServiceTargets 노드를 찾아 주석으로 처리하거나 삭제합니다.

아래의 _DebugSymbolsIntermediatePath 노드의 ItemGroup 을 주석으로 처리합니다. $(IntermediateOutputPath) 이미 기존의 Microsoft.CSharp.targets 에서 값이 선언되었으므로 같은 값이 추가되거나 할 경우 Collection Type 으로 간주하기 때문에 이 구문은 필요가 없습니다.

마찬가지로 아래의 구문도 $(IntermediateOutputPath) 는 Collection Type 으로 처리가 되는 것을 방지하기 위해 아래의 구문도 주석으로 처리하거나 제거합니다.

아래의 구문도 위와 같은 이유로 제거하거나 주석으로 처리합니다.

아래의 Code Analysis 기능은 Visual Studio 2003 에서 통합되어 제공되지 않기 때문에 제거하거나 삭제합니다.

   

Visual Studio 2010 에서 .NET Framework 1.1 빌드 하기

모든 구성이 완료 되었으면, Visual Studio 2010 에서 ConsoleApplication 을 실행해 봅니다. 빌드가 .NET Framework 1.1 로 빌드된 것을 확인할 수 있습니다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. resisa 2010.05.08 23:42 Address Modify/Delete Reply

    아 왜 저는 빌드 자체가 잘안되죠? ㅠ.ㅠ
    월요일날 파일 좀 공유해요~ ㅋㅋ

  2. rkttu.com 2010.05.12 01:18 Address Modify/Delete Reply

    이런게 가능하다고 하면, Visual Studio 2010을 가지고 Mono나 Rotor 같은 프레임워크를 타겟으로 잡는것도 가능할것처럼 보이네요 @_@

  3. 질문있어요.. 2010.07.14 10:21 Address Modify/Delete Reply

    전 똑같이 했는데
    경고 1 "D:\Downloads\Consol\Consol.csproj.user"을(를) 다시 가져올 수 없습니다. "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (26,5)"에서 이미 가져왔습니다. 이는 빌드 작성 오류일 가능성이 높으며 이 후속 가져오기는 무시됩니다. [D:\Downloads\Consol\Consol.csproj] Consol
    이런 메시지가 주루룩 나오네요.. 어찌 처리하면 될런지요.. 도움 부탁 드리겠습니다.

    • 땡초 2010.07.15 19:38 Address Modify/Delete

      혹시 방명록에 문의하신 분인가요?
      그렇다면 메일로 회신해 드렸습니다.^^

이곳 저곳에서 Visual Studio 2008 SP1 에 소식이 끊이지 않고 있네요.
 
먼저 Service Pack 에 대한 Product 정보는 다음의 MSDN 문서를 참고하시면 됩니다.

 
이곳을 보면, Service Pack 1 에 대한 정보를 볼 수 있습니다.

 
닷넷엑스퍼트의 안재우 수석님의 포스팅입니다.

 
MS 의 장현춘 부장님의 포스팅도 눈에 띄는군요.

 
그리고 Visual Studio 2008 과 Team Foundation Server SP1 에 대한 정보입니다.
굵직한 내용중에,
l Windows Server 2008 지원
l SQL Server 2008 지원
l TFS 의 Drag&Drop 등
부가적인 Bug Fixed 와 편의 기능들이 추가 되었습니다.

 
또한, WPF 에 대한 내용인데 DataGrid Preview 에 대한 내용도 있습니다.

 
그 외에도, 다양한 Service Pack 이 출시 되었습니다.
Visual Studio Shell with Service Pack1 이 그것인데, Shell Isolated 와 Integration Package 입니다.

한꺼번에 볼게 너무 많이 생겨버렸네요 ^^; 울어야 할지, 웃어야 할지 ㅋㅋ

Posted by 땡초 POWERUMC

댓글을 달아 주세요

이번에는 Visual Studio 2008 Team Suite 의 재미있는 기능을 소개하고자 합니다.
매번 코드파일(Code Behind)를 작성하면서 using 을 이용하여 Namespace 를 임포트 하지요.
그런 using 의 네임스페이스를 정렬하고 필요없는 네임스페이스를 삭제하는 기능이랍니다.
 
Code Behind 에서 마우스 오른쪽 버튼을 누르면 해당 메뉴가 나온답니다.

 
Organize Usings (Using 문 정리) 쯔음 부르면 되겠네요~
이 기능은 코드내에 사용된 클래스를 조사하여 필요없는 using 문을 정리하거나, 정렬하는 기능을 가지고 있습니다.
 
여기에 보이는 하위 메뉴는 총 세가지가 있습니다.
1.      Remove Unused Usings - 필요없는 using 문을 정리합니다.
2.      Sort Usings - using 문을 순서대로 정렬 합니다.
3.      Remove and Sort – 필요없는 using 문을 정리하고, 정렬합니다.
 
사용법은 무척 간단합니다. Code Behind 에서 마우스 오른쪽 버튼을 눌러, 위의 원하는 기능을 클릭한 하면 된답니다.
 
위와 같이 순서대로 실행하였을 때 using 문이 깔끔히 정리된 것을 볼 수 있습니다.
 
재미난 것은 using 문의 Alias(별칭)을 주었을 때도 정리가 완벽하게 동작합니다.
아래는 Alias using 과 일반 using 이 있는 경우 using 정리를 마친 다음의 스크린샷입니다.
 


Visual Studio 2008 덕분이 개발환경이 많이 편해지네요~ 내년 3월 정식 런칭이 기대됩니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio 2008 은 기존 UI 를 많이 유지한 채 Release 되었다. 하지만, 많은 부분에서 새롭게 기능이 추가되고 개선되었다고 한다.
 
그 중, Web Test Recorder(웹 테스트 레코더) 이다. (사실 그닥~~ 좋아진건 없는 것 같다)
Visual Studio 2008 을 설치하면 우선 Internet Explorer(인터넷 익스플로러)용 Addin인 Web Test Recorder 9.0 버전이 함께 설치 된다.
 
[그림1] IE Plugin 이 설치된 Web Test Recorder 9.0
 
 
What Web Test Recorder ?
 
Web Test Recorder 는 Visual Studio 2008 과 통합된 웹 테스트 도구이다. 웹사이트에 대한 요청을 기록하여, 넘겨진 Query String 이나 데이터를 분석할 수 있다. 이러한 웹사이트 분석 도구와 같은 유형의 프로그램을 프록시 레코더 라고 부른다.
 
그럼 이런 유형의 대표적인 프록시 레코더는 어떤 프로그램이 있을까?
 
 
위 프록시 레코더 툴은 웹 개발자라면 자주 사용하게 될 프로그램이다.
자세한 내용과 사용법은 다음의 블로그에서 참고하도록 하자.
http://www.netfighter.pe.kr/blog_post_193.aspx
 
 
Overview Web Test Recorder 9.0
 
그럼 Visual Studio 2008 의 Web Test Recorder 9.0 는 타 프록시 레코더에 비해 CSS나 이미지, Javascript 와 같은 데이터는 기록하지 않는다. 이러한 데이터는 Web Test Viewr(웹 테스트 뷰어)에서 런타임으로 확인하기 때문에, 이미지에 대한 기록을 줄임으로써 복잡하지 않는 테스트를 할 수 있다.
 
l CSS, 이미지, Javascript 는 기록하지 않음
l 때문에, 이미지의 기록을 없앰으로써 유연하게 테스트 진행
l 동적 매개 변수 승격 기능
- HTTP 요청을 캡처한 다음 후속으로 HTTP 요청을 바인딩 함으로써 재생 오류 방지
l Transaction 기능 ( Batch 기능와 유사함 )
l Network Credential 기능 ( 자동 인증 기능 )
l Comment 기능 ( 주석 달기 기능 )
 
 
Start Web Test Recorder
 
이 기능은 이미 Visual Studio 2005 부터 포함되어졌던 기능이다. 이번 Visual Studio 2008 도 이전 버전에 비해 크게 변화된 점이 없지만, 복습하는 차원에서 다시 한번 차근히 따라해 보자.
 
Test -> New Test 를 클릭하면 새로운 Test Project 를 만들 수 있다.
 
[그림2] Web Test Project 만들기
 
프로젝트를 만들게 되면 [그림3] 과 같이 빈 페이지로 Internet Explorer 가 실행된다.
 
[그림3] about:blank 페이지의 Internet Explorer 가 실행된 화면
 
Record / Pause / Stop 버튼을 이용하여 웹 요청을 기록할 수 있다. 단, Stop 버튼을 누르면 더 이상 요청을 기록하지 않고, Visual Studio 2008 창으로 전환이 되고, 기록된 요청에 대한 목록이 [그림4] 와 같이 Treeview 형태로 표시가 된다.
 
[그림4] Web Test Recorder 기록
 
그럼 이제 Run Test 버튼을 클릭하여 테스트를 진행해 보자.
 
[그림5] Run Testing
 
테스트가 완료되면 각각의 페이지에서 랜더링된 html 이나 javascript 등이 Web Browser 탭에 표시가 된다. 해당 페이지에서 Image 또는 css 파일등을 확인하고 싶다면 Testing 이 완료된 Treeview 에서 더블클릭을 하게 되면 페이지 내에서 요청된 다른 형태의 파일정보들을 볼 수 있다.
 
Query String 의 값을 변경하여 테스트를 진행할 수도 있다. Webtest 프로젝트에서 페이지의 하위 트리를 클릭하면 페이지로 전달된 Query String 의 값을 볼 수 있는데, Properties 창을 통해 이 값을 [그림6] 과 같이 변경하면 된다.
 
[그림6] Query String 을 변경하여 테스트
 
물론 더 필요한 Query String 이 있다면 추가도 가능하다.
 
 
Microsoft.VisualStudio.QualityTools.WebTestFramework.DLL
 
웹 테스트 프로젝트는 Microsoft.VisualStudio.QualityTools.WebTestFramework.DLL 어셈블리를 참조한다. 이 어셈블리를 참조하면 프로그래밍 적으로 테스트를 만들고 테스트 할 수 있다.
 
참고 : Generate Code 를 통해 이미 기록된 Web Test Recorder 를 코드로 변환할 수 있다.
 
Microsoft.VisualStudio.QualityTools.WebTestFramework.DLL 어셈블리를 참조하게 되면 WebTestRequest 와 같은 클래스로 프로그래밍 적으로 테스트를 만들 수 있다.
 
웹 테스트 기록은 다음과 같이 자동 생성 코드로 변환된다.
 
WebTestRequest request3 = new WebTestRequest("http://umc.pe.kr/ScriptResource.axd");
request3.QueryStringParameters.Add("d", this.Context["QueryStringParam1.d"].ToString(), false, false);
request3.QueryStringParameters.Add("t", "633293840692451055", false, false);
yield return request3;
request3 = null;
 
좀 더 자세한 정보를 얻고자 한다면 다음의 주소를 참고 하도록 하자.
Visual Studio 2008 Beta 2 를 기준으로 작성된 문서지만, 스펙은 크게 변하지 않았으니 큰 문제가 없을 거라 생각한다.
http://msdn2.microsoft.com/ko-kr/library/microsoft.visualstudio.testtools.webtesting(VS.90).aspx
 
 
Hope…
 
이번 Web Test 프로젝트는 Internet Explorer Plug-in 용 버전이 업그레이드 된 것 이외에 크게 두드러진 점을 발견하지 못했다. 이미 기능적으로 VS2005 부터 Test 용도로 사용하기에 충분하지 않았나 하는 생각이다.
 
VS 2005 부터 툴 자체가 무거워 지면서 Web Test 또한 무겁다는 생각을 지워버릴 수 없다. 하지만, 웹 개발용 디버깅 툴인 Fiddler 와 함께 그 막강한 기능은 여전하다.
 
Fiddler 또한 XML WebService나 SmartClient 등의 개발에 필 수 유틸리티 이지만, 웹 요청에 대한 기록을 보기 위한, 그 이상 활용하기에 직관성이 조금 떨어지는 것 같다. 하지만, VS.NET 의 Web Test Recorder 는 직관성과 좀 더 깊은 테스트 목적에 더할나위 없는 툴이 될것이다.
 
좀더 자세한 정보를 얻고자 한다면 Visual Studio 2008 Beta 2 기준으로 작성된 한글 문서를 참고하도록 하자.
http://msdn2.microsoft.com/ko-kr/library/ms182539(VS.90).aspx
Posted by 땡초 POWERUMC

댓글을 달아 주세요

일찍 VS2008 의 인스톨에 후기를 올리려고 캡쳐도 다 떠놓았는데, 쓸대 없이 바쁜 바람에 이제야 후기를 올려본다.
여기서 사용된 버전은 Visual Studio Team System 2008 Team Suite (x86 WoW) - DVD (English)이다.

MSDN 라이센스가 없다면 다음의 주소에서 90 일 Trial 버젼을 다운받을 수 있습니다.
http://www.microsoft.com/downloads/details.aspx?FamilyId=D95598D7-AA6E-4F24-82E3-81570C5384CB&displaylang=en
 
VS2008 Beta 버전과 함께 설치된 .NET Framework 3.5 Pre-Release 버전은 삭제하도록 하라~ 그렇지 않으면 설치 유효성 체크에서 다음의 경고 메시지와 함께 설치가 중단된다.
 
[
그림0] .NET Framework 3.5 Pre-Release 버전을 삭제하라는 메시지
 
 
우선 VS2008 의 ISO 를 가상 시디로 실행하면, 다음과 같이 눈에 익은 화면이 뜬다.
설치시간은 약 40분이 소요된다. ( 노트북, 코어2듀오 2.0, HDD 5200rpm, RAM 2GB )
 
[
그림1] DVD 자동실행 화면
 
[
그림2] 설치 유효성 검사
 
[
그림3] 제품 라이센스 등록 화면
 
나는 VS2008 를 Full Install 해 보았다.
 
r[
그림4] 설치 옵션 화면
 
설치화면 우측에는 기존 VS2005 에서 자주 보아왔던 아저씨들 대신 새로운 아저씨들이 등장한다. 개인적으로 VS2005 아저씨들이 더 인상이 좋았던 것 같다;;
 


r[그림5] 설치 진행중
 
조금 눈여겨 본다면, 설치 항목에 보지못했던 몇가지 항목들이 눈에 띈다.
 
l Microsoft Visual Sudio Web Authoring Component
l Microsoft Office System 2003 Primary Interop Assemblies
l Microsoft Device Emulator version 3.0
l Microsoft Windows SDK for Visual Studio 2008 Headers and Libraries
l Microsoft Visual Studio 2008 Performance Collection Tools
 
뭐하는 놈들인지는 나중에 차차 뜯어보기로 하자.
 
[그림6] VS2008 실행 화면
 
변화한건 VS2008 Release 를 설치한 후에 재부팅을 요구한다. 살포시 재부팅을 해 부자.
기존에 VS2008 Beta 버전의 솔루션이나 프로젝트 파일도 별도의 변환과정 없이 로딩할 수 있다.
 
 
다음은 MSDN 도움말을 설치해 보자.
 
[그림7] MSDN 설치 초기 화면
 
[그림8] MSDN 설치 화면
 
MSDN Library 는 더더욱 특별한 건 없다.
이제 본격적으로 VS2008 세계로 빠져~ 봅시닷~~
Posted by 땡초 POWERUMC

댓글을 달아 주세요

협정 세계시 기준으로 2007-11-19 06:46:35 를 기준으로 Visual Studio 2008 Team Suite 버전이 나왔습니다. 
DVD 영문판 버전으로 x86 버전과 x64 버전입니다.
 

Visual Studio Team System 2008 Team Suite (x86 and x64 WoW) - DVD (English)
 
용량은 4GB 가 조금 안되는 3921MB 로 이제 약 1/6 다운로드 중이라 좀 더 상세한 정보는 나중에 다시 포스팅 해야할 것 같습니다~
 
MS MVP 또는 MSDN 구독 라이센스가 있으신 분은 지금 바로 다운로드 할 수 있답니다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

VS 2008 Beta 2 가 출시되고, 오래되지 않아 VS 2008 Beta 2 한글판이 출시되었다. 하지만, 출시가 되면서 많은 버그 리포트들이 쏟아져 나왔고, 실제 그 버그들을 몸소 체험하게 되는 불운을 격게 되었다. -_-; 버그 중에 VS 2005 과 VS 2008 Beta 의 동시 설치시에 발생하는 문제 몇가지를 살펴 보고, 이에 대한 해결책을 찾아 보기로 하자.
 
VS 2005 이후 VS 2008 Beta 2 의 설치 후 발생하는 문제점
VS 2008 Beta2 설치시 VS 2005 를 통한 AJAX 웹사이트 배포 오류
VS 2008 Beta2 한글판을 설치시 VS 2005 의 XML 코드주석이 모두 영어로 변경되는 오류
 
 
첫번째, VS 2008 Beta2 설치 후 VS 2005 의 AJAX 웹사이트 배포 오류
 
우선 오류 내용은 다음과 같다.
 
'/' 응용프로그램에서버오류가있습니다.

파서오류
설명: 요청을제공하는필요한리소스를구문분석하는동안오류가발생했습니다. 아래의구문분석오류정보를확인한다음소스파일을적절하게수정하십시오.

파서오류메시지: 파일이나어셈블리 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 또는여기에종속되어있는파일이나어셈블리하나를로드할없습니다. 지정된파일을찾을없습니다.

소스오류:
 
1: <%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_default.aspx.cdcab7d2" %>
2: <%@ Import Namespace="Umc.Core.Modules.Blog" %>
3: <%@ Import Namespace="Umc.Core.WebAdmin.Sitemap" %>

소스파일: /Default.aspx    : 1

어셈블리로드추적:다음정보는 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 어셈블리를로드할없는이유를알아내는도움이됩니다.
 
경고: 어셈블리바인딩로깅이꺼져있습니다.
어셈블리바인딩오류로깅기능을사용하려면레지스트리 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 1설정하십시오.
참고: 어셈블리바인딩오류로깅기능을사용하도록설정하면그렇지않은경우보다성능이약간떨어집니다.
기능을끄려면레지스트리 [HKLM\Software\Microsoft\Fusion!EnableLog]제거하십시오.
 

버전정보: Microsoft .NET Framework 버전:2.0.50727.832; ASP.NET 버전:2.0.50727.832
 
아에 , .NET Framework 3.5 (Pre Release Version 을 삭제하게 되면, 또다시 VS 2008 Beta2 에 다음과 같은 오류가 발생하게 된다.
 
[
그림1] .NET Framework 3.5 (Pre Release Version) 제거 후 VS 2008 Beta 오류
 
위와 같이 VS 2008 Beta 에서 프로젝트를 제대로 로드하지 못하게 된다.
 
다시 처음으로 되돌아 가서 VS 2008 Beta 부터 기본적으로 포함되는 System.Web.Extension 3.5(AJAX.NET) 어셈블리가 기존 VS 2005 의 System.Web.Extension 1.0 버전을 무시한 채 컴파일 되는 것 같다. 그래서 아무리 VS 2005 의 AJAX 웹프로젝트를 아무리 컴파일 하여도 배포 후엔 위와 같은 응용 프로그램 오류가 된다.
 
해결책은 다음의 블로그 글을 참고하도록 하자.
http://blogs.msdn.com/webdevtools/archive/2007/07/30/using-vs-2008-to-target-asp-net-ajax-1-0.aspx
 
또한, 이 부분에 대해 이미 Scott 아저씨는 해당 오류를 패치 할 수 있는 BAT 파일을 선보였다.
 
Important Beta 2 Information
A few days before we shipped Beta2 on the web, we discovered a side-by-side issue with ASP.NET AJAX.  If you read my original VS 2008 and .NET 3.5 Beta Released blog post, you'll remember that I called out this post-install patch step to fix this issue:
You should download and run this batch file.  This takes only a few seconds to run, and fixes an issue we found earlier this week with the version policy of System.Web.Extensions.dll - which is the assembly that contains ASP.NET AJAX.  If you don't run this batch file, then existing ASP.NET 2.0 projects built with ASP.NET AJAX 1.0 and VS 2005 will end up automatically picking up the new version of ASP.NET AJAX that ships in .NET 3.5 Beta2.  This will work and run fine - but cause you to inadvertently introduce a .NET 3.5 dependency in the applications you build with VS 2005.  Running the batch file will change the version binding policy of the new System.Web.Extensions.dll assembly and ensure that you only use the new .NET 3.5 ASP.NET AJAX version with projects that you are explicitly building for .NET 3.5.
 
위의 링크를 통해 오류를 패치할 수 있는 BAT 파일을 다운받아 실행하면, 문제는 깔끔하게 해결된다.
 
 
 
두번째, VS 2008 Beta2 한글판을 설치시 VS 2005 의 XML 코드주석이 모두 영어로 변경되는 오류
 
이 내용은 VS 2008 Beta2 영문판을 설치 하였다면 상관없는 부분이다. 만약, 자신이 VS 2008 Beta2 한글판을 설치하였다면, VS2005 의 XML 코드주석이 모두 영문으로 바뀌게 되는 걸 알 수 있다.
 
[
그림2] VS 2008 Beta2 한글판 설치 후 VS 2005 의 코드주석이 영문으로 변함.
 
아쉽게도 이 문제점은 아직 해결책을 찾지 못했다. .NET Framework 2.0 어셈블리의 XML 코드 주석 내용이 모두 영문으로 변경되어, 해당 .XML 파일을 모두 교채해 보았지만 여전히 문제는 해결되지 않았다. 아마, .XML 코드주석 파일을 통째로 .NET Framework 3.5 어셈블리의 XML 파일에서 참조하는 것 같다는 느낌이다.
 
비록 해결책은 아니지만, VS 2008 Beta2 의 한글판을 지우고, 영문판을 설치하면 문제는 해결 될 수 있다. 단, 아래의 [그림3] 과 같이 VS 2005 의 기능/추가를 통해 Visual C# 과 .NET Framework SDK 를 재설치 한 후, VS 2008 Beta2 영문판을 설치해야 한다는 것에 반드시 주의 하도록 하자.
 
[
그림3]
 
위의 빨간색 영역의 체크박스를 푼 후, 다시 클릭하여 체크박스를 체크하게 되면 해당 기능만 재설치 할 수 있다. 순서를 정확히 지키면서 따라하게 된다면, XML 주석코드의 문제를 해결할 수 있다.
 
 
VS 2008 정식 버전을 기대하며
좋은 주말임에도 불구하고, 위 두가지 문제 때문에 하루종일 너무나도 많은 삽질을 했다. 아마 VS 2008 Beta2 만해도 한글판, 영문판 을 번갈아 가며 15번 이상 설치/제거를 한 것 같다 OTL. 아직 Beta 버전이라 이 정도의 아량은 갖아야 정신건강에 이로울 것 같다. 부디, 다음 사람들은 이러한 문제로 삽질을 하지 않았으면 하는 바램이다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요


원문 : http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx

Visual Studio 2008 Downloads

Get an early look at Visual Studio 2008
The next version of Visual Studio, Microsoft® Visual Studio® 2008, will provide an industry-leading developer experience for Windows Vista, the 2007 Microsoft Office system, and the Web. In addition, it will continue in the Microsoft tradition of development language innovation. To enable early feedback, this page provides links to prerelease versions of Visual Studio 2008, and for technologies that we plan to include in it. As previews of additional technologies become available, we will make them available from this page.


We encourage you to download and try these early releases. Before installing a release, review the prerequisites as some releases may require additional software prior to installation. As with all prerelease software, we encourage you only to install these on a secondary machine, or in a virtual machine, as they are not supported by Microsoft Services support teams. As the goal of these previews is to gather feedback from the developer community, please use Microsoft Connect to report any issues, or to suggest improvements.


 

Visual Studio 2008 Beta 2

Visual Studio 2008 is the next generation development tool for Windows Vista, the 2007 Office system, and the Web. The Beta 2 release includes most of the products found in the Visual Studio product line. MSDN Subscribers can also download these files from MSDN Subscriber Downloads.

Installation Disc Images

If you prefer to install the software yourself, you can download separate disc images for the following products:

IMPORTANT:

  • After the Beta 2 installation has finished, you should run this script to ensure that the installation of .NET Framework 3.5 Beta 2 will not affect the development of ASP.NET AJAX 1.0 applications.
  • To install Team Foundation Server, you must follow the steps and system requirements details on the download page.
  • When installing prerelease software, we advise that you do not install it on a production machine.

VPC Images

If you prefer the convenience of evaluating prerelease software in a virtual machine environment, you can download VPC images for the following products that include pre-installed instances of the prerelease software indicated, including any required prerequisite software. You will need Virtual PC or Virtual Server to run this image. Depending on your hardware, the download files make take between 30-60 minutes to decompress these self-extracting files.

IMPORTANT:

  • After extracting and opening the VPC, you should run this script to ensure that the installation of .NET Framework 3.5 Beta 2 will not affect the development of ASP.NET AJAX 1.0 applications.
  • These downloads are differencing disks. To use them, you must also download Visual Studio Code Name Orcas Base Image contains the OS and is a one-time download for all the Virtual PC images that lay on top of it.

Visual Studio Express Editions

Visual Studio Express Editions are lightweight, easy-to-use and easy-to-learn tools for the hobbyist, novice and student developer.

Microsoft .NET Framework 3.5 Beta 2

The Microsoft .NET Framework 3.5 Beta 2 is a preview release of the latest version of the .NET Framework. Many ISV’s, enterprises and Microsoft product teams are successfully building on the new features Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF) and Windows CardSpace in the .NET Framework 3.0. Microsoft plans to continue to invest in the .NET Framework developer platform and in support of existing users the .NET Framework 3.5 has a minimal number of breaking changes.

Posted by 땡초 POWERUMC

댓글을 달아 주세요