'.NET/Visual Studio'에 해당되는 글 95건

  1. 2008.10.28 Visual Studio SDK 개발 중 bison.exe 와 flex.exe 문제 해결
  2. 2008.10.27 VSTS 2010 - 똑똑해진 에디터
  3. 2008.10.27 VSTS 2010 - 새로워진 UI
  4. 2008.10.17 MS HELP 2.0 과 Help Integration Trouble Shooting
  5. 2008.10.09 Visual Studio 2010 Team System (CTP) Download
  6. 2008.09.11 [WebCast] Visual Studio Content Install Manager - VSContent
  7. 2008.08.20 Visual Studio Extensibility Bug Reports
  8. 2008.08.17 Experimental Hive Trouble Shooting
  9. 2008.08.13 Visual Studio Service Pack 정보
  10. 2008.06.23 [웹케스트] Visual Studio 활용 팁 2 탄
  11. 2008.06.23 [웹케스트] Visual Studio 활용 팁 1 탄
  12. 2008.06.10 Visual Studio Integration Package 프로젝트 트러블 슈팅 가이드
  13. 2008.05.11 WCF Visualizers
  14. 2008.05.08 Custom Extension 에 Intellisence 날개를 달자
  15. 2008.03.09 Vista 에서 MSI 설치 파일 권한 상승 하기
  16. 2008.02.02 [웹케스트] 설치 프로젝트를 이용하여 배포하기 #2 (1)
  17. 2008.02.01 [웹케스트] 설치 프로젝트를 이용하여 배포하기 #1 (2)
  18. 2008.01.24 Visual Studio 시작할때 Addin(추가기능) 비활성화 시키기
  19. 2008.01.22 [웹케스트] Visual Source Safe Internet 설정하기 ( VSS Internet )
  20. 2008.01.21 [웹케스트] Visual Source Safe 시작하기 (1)
  21. 2008.01.17 VS2008 SETUP Project 의 설치시 Vista 권한 상승 기능
  22. 2008.01.16 Visual Studio Team System 2010 공식 팀 블로그 오픈
  23. 2007.12.25 Microsoft 무료 E-Book 을 제공합니다.
  24. 2007.12.25 [VS2008] Visual Studio 2008 의 다중 시작 프로젝트 기능
  25. 2007.12.21 [VS2008] VS2008 의 재미있는 using 정리 기능
  26. 2007.11.27 UK Visual Studio 2008 Resource
  27. 2007.11.25 [VS2008] Web Test Recorder 9.0 - 웹 테스트 프로젝트
  28. 2007.11.22 Visual Studio 2008 설치하기
  29. 2007.11.19 Visual Studio 2008 릴리즈
  30. 2007.11.18 실전 빌드 이벤트 (2)
Visual Studio SDK 를 이용하여 개발하다 보면, 자주 접할 수 없는 오류들을 접하게 됩니다.. 이번의 오류 마찬가지로 왠만만 닷넷 개발자는 쉽게 접할 수 없는 오류입니다. 요즘 너무 바쁘게 지내는 관계로 이제서야 포스팅 하게 되었네요.
 
필자의 블로그에 Visual Studio SDK 의 대표적인 알 수 없는 오류
 
 
더욱이 Windows Vista 나 Windows XP 와 같은 Client OS 로 개발을 하게 되면, Windows SDK 에 포함되는 일부 툴 들이 설치되지 않거나, 환경 변수에 등록되지 않는 경우, 또는 일부 툴이 설치가 되더라도 폴더의 위치가 틀려 오류가 발생 하는 경우도 허다합니다.
 
우선 오류 메시지는 다음과 같습니다.
 
[그림1] 오류 메시지
 
빌드 프로세스 중에 bison.exe 와 flex.exe 가 설치가 되지 않았다는 문구입니다. 저의 개발환경은 Windows Vista 였고, Visual Studio SDK 환경입니다.
 
해결방법은 위의 bison.exe 와 flex.exe 파일을 다운로드 받아 해당 폴더에 복사해 주면 끝!!
 
이 파일은 Language Services Wizard 로써 나도 자세히는 모르지만,
Flex.exe 는 generating scanner 로 어휘 분석을 담당하며,
Bision.exe 는 입력 스트림의 값을 분석하는 도구라고 합니다.
 
이 도구는 오픈 소스로써 자유롭게 다운로드 할 수 있지만, GPL 라이선스를 따르고 있습니다.
 
Managed Language Services Technology Overview
 
이 도구는 아래의 주소에서 다운로드 할 수 있습니다. (물론 오픈소스니 여기 말고도 다운로드 할 수 있는 곳이 있습니다)
 
Lex/YACC (actually FLEX and BISON)
 
자 어떻습니까? 이제 해결이 되었지요? ^_^

Posted by 땡초 POWERUMC

댓글을 달아 주세요

VSTS 2010 CTP 의 코드 에디터도 많은 변화가 있습니다. Intellisence 와 풍선 도움말, 그리고 다양한 부가 기능들로 무장하였습니다. 또한, 프로그래밍 코드를 순서도로 변환해 주는 기능들도 상당히 재미있습니다.
 
예뻐진 블록
 
마우스를 드래그 하였을 때, 블록의 영역은 외곽선과 그라데이션의 예쁜 블록으로 영역을 지정할 수 있습니다. 아래의 그림을 보시죠.
 
[그림1] 예뻐진 외곽선과 그라데이션 블록
 
이렇게 예뻐진 블록 덕에 블록 설정의 동작이 약간 더딘감도 없지 않아 있답니다. 하지만 굳이 장점은 갖다 붙히자면, 일단 보기에 좋고, 많은 영역의 블록을 지정할 때 그라데이션 덕택에 현재 보는 곳의 위치가 어디쯤인지 짐작할 수 있겠죠^^;
 
 
연관 단어 시각화
 
복잡한 로직의 코드일 경우 상당히 유용할 것 같네요. 같은 변수나 메서드, 클래스 등에 커서를 가져다 대면 자동으로 관련 단어가 시각화 되어 나타납니다.
 
 
 
 
정말 고마운 기능이군요.
 
 
순서도 만들기 기능
 
메서드 등의 로직을 시각화 하여 순서도로 나타내어 줍니다. 분기 코드, 조건 비교, 메서드 호출 등의 연관도를 알아서 순서도로 만들어 주어 코드를 통해 로직을 이해하는 불편함을 덜어줄 수 있을 것 같습니다.
 
간단한 예제를 통해서 순서도를 만들어 보도록 하죠. 아래의 Main 메서드의 로직을 순서도로 보고 싶다면,
 
[그림5] 예제 샘플에서 메서드의 마우스 우클릭 후 해당 기능 선택
 
[그림6] 메서드에 구현된 기능의 순서도
 
위와 같이 로직에 대한 순서도를 한눈에 볼 수 있고, 경우에 따라서 순서도를 조작하거나 주석을 넣을 수 도 있습니다.
또한, 옵션을 통해서 RelationShip 의 범위를 프로젝트나, 솔루션, 외부 어셈블리로 선택할 수 있으며, 무한정 순서도가 그려지는 것을 방지하기 위해 Depth 를 지정해 줄 수 도 있습니다.
 
아래는 Umc Blog 소스코드의 Sitemap 일부분을 순서도로 변환해 본 것입니다.
 
[그림7] SitemapManager.Init() 메서드의 순서도
크게 보시려면 이미지를 클릭 하세요
 
이로써, 패턴이 적용된 클래스나 로직이 복잡한 코드를 하나하나 쫓아다니면서 볼 필요가 없어졌네요^^
 
 
 

시각적인 인텔리센스(Intellisence)

기존의 Visual Studio 2008 과 비교해 볼 때, 가장 먼저 인텔리센스의 그래픽적인 요소가 변경이 되었습니다.
 
 
기존의 네모난 풍선 도움말이 아닌 둥그스름하게 풍선 도움말이 뜨는군요.
그리고 개체의 설명도 폰트가 변경되고, 폰트의 크기도 커져 한눈에 알아보기가 쉽습니다.
 
 
 
전체적으로…
 
Virtual PC 로 돌려서인지는 모르겠지만, 직감적으로 동작이 약간 더뎌진 것 같기도 합니다. 그리고 기능이 구현되지 않은 것들도 눈에 띄기도 하지만, 보다 나아졌다는 느낌은 확실한 것 같습니다.
 
이후에 살펴볼 아키텍쳐 모델링의 통합, 비주얼한 어셈블리 연관도 및 기타 향상된 기능 등 살펴볼 내용이 상당한 것 같습니다. 정식 제품이 나와야 알겠지만, 이미 Visual Studio 2010 Team System 의 로드맵은 CTP 로써 충분한 것 같네요.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio 2010 Team System CTP 버전이 Microsoft MVP 중 신청자에 한하여 다운로드 받을 수 있게 되었습니다. Virtual PC Image 로 제공되는 이번 ISO 에는 아래와 같은 소프트웨어가 제공이 됩니다.
 
l MICROSOFT WINDOWS SERVER 2008, STANDARD
l MICROSOFT .NET FRAMEWORK 3.5 SP1 FOR MICROSOFT WINDOWS OPERATING SYSTEM
l MICROSOFT OFFICE 2007 SYSTEM DESKTOP APPLICATION SOFTWARE
l MICROSOFT WINDOWS MEDIA PLAYER 11
l MICROSOFT WINDOWS MEDIA ENCODER
l MICROSOFT VISUAL STUDIO TEAM SYSTEM 2010 COMMUNITY TECHNOLOGY PREVIEW
l MICROSOFT VISUAL STUDIO TEAM SYSTEM 2010 TEAM FOUNDATON SERVER COMMUNITY TECHNOLOGY PREVIEW
l MICROSOFT SQL SERVER 2008 ENTERPRISE EDITION
l MICROSOFT .NET FRAMEWORK 4.0, COMMUNITY TECHNOLOGY PREVIEW
 
와우,, 정말 풍성합니다.
 
차차 여러 가지 새로운 기능을 소개해 드리려 합니다만, 오늘은 외관적으로 어떻게 변했는지만 보도록 하지요.
 
우선 Visual Studio 2010 Team System CTP 의 시작 시 Splash 화면은 크게 변한 것이 없습니다.
 
[그림1] Visual Studio Startup Splash 화면
 
하지만, 이번 CTP 의 시작 페이지(Start Page) 는 너무나 새롭습니다.
 
[그림2] Visual Studio 2010 Team System CTP 시작 페이지 화면
 
이하, Projects 와 Visual Studio 의 항목도 굉장히 깔끔해 졌습니다.
 
 
 
보기(View) 메뉴에는 Architecture Explorer 가 새로 생겼습니다. 뭐 하는 놈인지는 차차 봐야 알 것 같네요.
 
[그림5] 새롭게 생긴 Architecture Explorer
 
Analysis 메뉴에는 Visualize Code RelationShip 이 생겼는데, 왠지 모를 포스가 느껴집니다.
 
[그림6] Visualize Code RelationShip
 
사실 Visual Studio 라는 놈들이 하나의 Shell 로써 동작하고, 여러 Package 를 담는 그릇에 불과합니다. 하지만 이번 버전은 외형부터 꽤나 신경을 쓴 흔적이 역력하네요.
 
오늘은 여기까지 간단하게 스크린샷만 보는 걸로 마치고, 저도 뭐 써봐야 좋은 내용 보여드릴 수 있지 않겠습니까? ^^
아무튼 기대 됩니다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

1.    개요
 
MS HELP 2.0 을 통해 우리는 CHM 이나 HELP 형태로 된 도움말 콘텐츠를 만들 수 있습니다. 이러한 형태의 파일을 만드는 방법에 대해서 궁금하신 분은 아래의 동영상 강좌를 보시기 바랍니다.
 
 
좀 더 나아가, MS HELP 파일이 아닌 MSDN Documentation 과 통합할 수 있도록 Visual Studio SDK 에서 Help Integration 을 제공해 주고 있습니다. 바로 로컬에 설치되는 MSDN 도움말과 MS HELP 2.0 과의 통합을 할 수 있습니다.
 
 
2.    문제
 
이러한 MS HELP 파일로 변환하기 위해 Sandcastle 또는 ndoc 와 같은 툴을 이용하게 됩니다. 최근 Sandcastle 은 .NET Framework 3.5 를 지원하고 있기 때문에 이것을 기준으로 이야기를 꺼내보려고 합니다.
 
하지만, Help Integration 은 바로 이러한 XML 형태의 .HxS(Compiled Storage File), .HxC(Collection Definition File), .HxT(Table of Contents) 파일 등이 필요한데, InnovaSysHelpStudio Lite 와 같은 툴이나 Sandcastle 과 같은 툴들은 TOC 정보가 담긴 .HxC, .HxT 이나 기타 다른 파일에 BOM(Byte Order Mark) 이 포함되게 됩니다.
 

[그림1] .HxT 파일에 BOM Binary 가 삽입된 모습
 
BOM 이란?
 
UTF-16, UTF-32 등 다양한 인코딩 방식이 존재합니다. 이러한 인코딩에 대한 정보는 파일의 헤더에 보이지 않는 특정 바이트(Byte) 를 넣는 BOM(Byte Order Mark) 을 통해 구분하게 됩니다. 하지만, UTF-8 은 인코딩 방식을 나타내기 위해 EF BB BF 바이트로 고정되어 있지만, 실제로 UTF-8 은 이러한 정보가 필요가 없습니다.
 
바로 HxComp.exe 를 통해 .HxS 로 컴파일된 콘텐츠를 이용해 Help Integration Setup Package 를 만드려면 곧장 오류를 뱉어내게 될 것입니다.
 
 
3.    해결 방법
 
HxComp.exe 와 Help Integration 은 이러한 BOM 코드를 만나게 되면 오류를 발생하여, 더 이상 작업을 진행할 수 없게 됩니다.
 
일반 NotePad 나 EditPlus 등의 에디터를 통해 이러한 BOM 코드가 보이지 않습니다. 그렇기 때문에, Hex Editor 를 이용하여 이러한 BOM 코드를 제거해야 합니다. (MS DOS 시절에는 다양한 Hex Editor 가 있었지만, Windows 환경으로 넘어오면서 쓸만한 Hex Editor 가 별로 없더군요 ^^;)
 
아래와 같이 HxComp 와 Help Integration 의 Setup Package 를 통해 정상적으로 MSDN Documentation 과 통합이 된 것을 볼 수 있습니다.
 

[그림2] 오류없이 MSDN Documentation 과 통합된 모습
 
언제 한번 시간이 되면 MS HELP 2.0 과 Help Integration 에 대해 끄적여 보도록 하겠습니다. ^^

Posted by 땡초 POWERUMC

댓글을 달아 주세요

미국에서 열리는 PDC 2008 행사를 전후하여 Visual Studio 2010 Team System 을 다운로드 할 수 있습니다. 해당 다운로드는 Virtual PC Image 파일로 제공이 되며, SQL 2008, TFS 2010 등, 모든 환경이 구성이 되어 있습니다.
 
[그림1] 과거의 .NET Logo
 
[그림2] 새로운 .NET Logo
 
VSTS 2010 CTP 는 아래의 주소를 통해 다운로드 할 수 있습니다. 용량이 매우 크니, 인터넷 속도 안되시는 분은 미리 포기 하시길^^;
 
Microsoft Pre-release Software Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP)
 
그나저나 .NET Logo 는 예나 지금이나, 캐안습이네요 ^^;
Posted by 땡초 POWERUMC

댓글을 달아 주세요




VS Content Install Manager 를 통해 매우 쉬운 방법으로 Visual Studio Content 를 배포하는 방법입니다.
 
유용한 팁이라고 생각하시고 보시면 좋을 것 같습니다. ^^

첨부파일의 VSContent-Deploy.vsi 파일은 로컬에 저장하셔서 실행하거나 편집하세요




 더블 클릭 하면 확대 됩니다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio Extensibility(VSX) 에 관련해서 몇 가지 버그를 알려드리고자 합니다.
 
1. VSX 의 이벤트가 먹통이 된다
 
이 부분은 아무래도 VSX 의 실행 주기에 대한 내용인 것 같습니다. 하지만 코드 자체로만 보면 아무런 문제가 없는 코드지요.
 
public void InitDteEvent()
{
        CommandEvents allEvents = xxxxUtil.GetEvents(this.DTE2, Constants.GUID_ALL_EVENT, 0);
        allEvents.AfterExecute += (guid, id, customIn, customOut) =>
               {
                       string name = DTE2.Commands.Item(guid, id).Name;
                       Trace.Write(
                              string.Format("Command {0} invoked - Guid: {1}, ID: {2}\n", name, guid, id));
               };
}
 
위의 코드를 볼 때, 분명 CommandEvents 는 DTE Instance 의 Refer 이고, 그 Refer Object 에게 이벤트를 할당하였을 때 이벤트가 발생해야 합니다.
 
결과를 먼저 알려드리자면, “최초 VSX 로드시 이벤트는 발생합니다.”, 하지만 아무 솔루션을 열고 난 이후엔, “더 이상 이벤트가 발생하지 않습니다”. 이러한 동작을 미루어 볼 때, VS Package 의 동작과 유사합니다.
 
어찌되었던, 이러한 코드는 아래와 같이 코드를 변경해 주시면 됩니다.
 
CommandEvents allEvents;
public void InitDteEvent()
{
        this.allEvents = xxxxUtil.GetEvents(this.DTE2, Constants.GUID_ALL_EVENT, 0);
        this.allEvents.AfterExecute += (guid, id, customIn, customOut) =>
               {
                       string name = DTE2.Commands.Item(guid, id).Name;
                       Trace.Write(
                              string.Format("Command {0} invoked - Guid: {1}, ID: {2}\n", name, guid, id));
               };
}
 
즉, 위의 코드처럼 allEvents 를 Class 의 지역변수로 빼시면, 더 이상 솔루션 로드 후에도 이벤트가 먹통이 되는 현상을 방지할 수 있습니다.
 
 
2. Project Template 을 추가한 후에 값이 null 이 반환된다
 
Project Template 을 솔루션 폴더에 추가하는 코드입니다.
 
folder.AddFromTemplate(template, Path.Combine(path, projectUniqueName), projectUniqueName);
 
위의 AddFromTemplate 의 시그너쳐는
 
[DispId(5)]
Project AddFromTemplate(string FileName, string Destination, string ProjectName);
 
이렇게 Project 개체를 리턴하도록 되어 있습니다.
 
하지만, 항상 이 메서드의 리턴은 Null 이 됩니다. 그렇기 때문에, 상식적으로 현재 생성된 Project Template 의 개체를 가져올 방법이 없습니다.
 
트릭이라고 해야할까요? AddFromTemplate 의 메서드가 실행되고 나면, SelectedItem 은 AddFromTemplate 으로 생성된 Project 를 가리키게 됩니다.
 
아래와 같이 트릭으로 문제를 해결할 수 있습니다.
 
DTE2.SelectedItems
 
 
3. ComVisible 은 마지막에 설정하라.
 
Project 개체의 Properties 프로퍼티를 통해 Project 의 속성을 가져오거나 설정할 수 있습니다. 이 개체를 통해 프로젝트의 속성을 다양하게 바꿀 수 있지만, 문제는 또 생깁니다. 점점 갈수록 어이없는 문제군요 ^^;
 
만약, Strong Key 와 Key File 과 ComVisible 속성을 변경한다고 할 때, ComVisible 의 값을 먼저 변경하고, Strong Key 값을 변경하게 되면, ComVisible 값은 원래의 값으로 원복 됩니다.
 
만약, 이러한 버그가 당신 앞에 펼쳐진다면,,, 원인 모를… 정말 답답했지만, 이 문제를 해결하기 위해선 값의 설정 순서를 바꾸시면 됩니다.
 
Strong Key >> Key File >> ComVisible
 
순서대로 값을 설정하시면 됩니다.
 
 
4. LINQ Query 개체가 초기화 되는 문제 ( 대박! )
 
정말 이건 대박이랍니다. 하하하! 먼저 코드를 보겠습니다.
 
var query                             = commentList.Where(o => o.Hotkey == selection.Text); // 결과는반드시 Null 아닙니다!!
if (query.Count() >= 1 )
{
        selection.Delete(1);// << Text Document 조작하는메서드
        text = query.Single().Content;    // << query Null
}
 
컬렉션의 값을 Where 하는것인데, 위의 빨간 라인의 코드를 만나게 되면, query 의 값이 Null 반환이 됩니다.
 
디버깅을 통해 보면
 
1.      query 값은 null 이 아니고, 값이 있습니다.
2.      query.Count() 는 분명 1개 이상의 값입니다.
3.      selection.Delete(1); 를 수행합니다.
4.      3번이 실행되는 즉시, query 가 null 이 됩니다.
 
정말 미치고 팔짝,, 뛰는 노릇입니다. 어찌되었건 우회방법을 통해서 해결했습니다만,,, 할말을 잃게 하는 버그인 것 같네요.
 
 
이 외에도, DTE 개체에 대해 더 많은 버그에 대한 정보를 봤던 기억이 나는데, 관련 링크를 까묵어서…;;

Posted by 땡초 POWERUMC

댓글을 달아 주세요

한동안 손을 대지 못했던 Umc Framework 의 VS Integration Package 프로젝트를 다시 보려고 하는데, 이상하게 그날따라 빌드가 되지 않았습니다. 불과 얼마 전까지 잘 되던 것이었는데, 회사의 내부 프로젝트를 진행하면서 무언가를 설치했는데, 그것이 화근이었던 것 같습니다.
 
오류 메시지는
 
Failed to retrieve paths under VSTemplate for the specified registry hive
 
위 오류는 주로 개발환경(Debug) 에서 발생합니다.
어찌되었던, 처음 보는 오류 메시지에 당황하지 않고 재빨리 구글링을 시작해보았지만, MSDN Forums 에서도 뭔가 뻘답(?) 주구장창 있었습니다.
 
흔히 볼 수 없는 오류메시지라 검색 결과도 그리 많지는 않았지만, 답은 멀지 않은 곳에 있었습니다. ^.^;

DON'T PANIC
 
바로, VS SDK Command Prompt 에서
 
C:\> VSRegEx.exe GetOrig 9.0 Exp RANU
 
다음과 같이 실행을 하면 됩니다.
 
위 명령은, Visual Studio 2008 Experimental hive 를 Reset 해주는 명령으로, 잘 찾아보시면 VS SDK 에 바로가기에 존재합니다. 귀차니즘으로 스샷은 생략 -_-;
 
그럼 더 이상 위의 오류 메시지는 볼 수 없을 것입니다.
 
References
 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

이곳 저곳에서 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 활용 팁 2 탄
 
알아두면 편리한 Visual Studio 의 활용 팁을 정리해서, 동영상으로 촬영해 보았습니다.
디버깅 챕터에서 캠타시아 단축키 인줄 모르고 F10 을 눌러 종료가 되어버려, 동영상이 두 편으로 나뉘게 되었답니다.^^;
 
이 강의를 꼭 들어야 하실 분
                                                  
1.      Visual Studio = 에디터플러스 ?
2.      Ctrl+C 또는 Ctrl+V 만 잘하면 돼!!
3.      디버깅 = F5 ?
4.      내가 짠 코드는 너무 더러워!
 
 



Posted by 땡초 POWERUMC

댓글을 달아 주세요



Visual Studio 활용 팁 1 탄
 
알아두면 편리한 Visual Studio 의 활용 팁을 정리해서, 동영상으로 촬영해 보았습니다.
디버깅 챕터에서 캠타시아 단축키 인줄 모르고 F10 을 눌러 종료가 되어버려, 동영상이 두 편으로 나뉘게 되었답니다.^^;
 
이 강의를 꼭 들어야 하실 분
                                                  
1.      Visual Studio = 에디터플러스 ?
2.      Ctrl+C 또는 Ctrl+V 만 잘하면 돼!!
3.      디버깅 = F5 ?
4.      내가 짠 코드는 너무 더러워!
 
 



Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio Integration Package 프로젝트를 이용하여 [Umc Projects/Umc.Core] - Umc.Core 란?
Visual Studio 의 통합하려고 합니다. Visual Studio Addin 은 [Umc Projects/VSHelper] - VSHelper 1.0 - Visual Studio 의 부족함을 채워주는...  와 같이 단순히 Visual Studio DTE 인터페이스를 이용하여 말 그대로 Addin(애드인)을 만들 수 있습니다. 반면, Visual Studio Integration Package 는 개체와 컨테이너간의 명령 전달로 Visual Studio 를 보다 세부적이고 구체적으로 접근하여 Visual Studio 의 일부로 흡수 할 수 있습니다.

 

기본적인 동작에도 차이점이 있습니다. Visual Studio Addin 은 비주얼스튜디오 구동과 함께 Addin 어셈블리가 로드됩니다. 하지만 Visual Studio Package VSCTCompile 가 컴파일한 디자인만 로드하고, 실제 어셈블리 로드는 MouseOver 나 실제 사용자의 액션이 있을 때 비로소 어셈블리가 로드됩니다.

 

작업을 시작하자마자 삽질은 시작되었습니다. 삽질의 시작은 윈도우 클래스 라이브러리로 생성하여 작업을 시작했던 것이 화근이었습니다. 그냥 편하게 Visual Studio Integration Package 프로젝트를 생성하였더라면 하루라는 시간을 아낄 수 가 있었는데 말이죠.

 

1. Visual Studio Integration Package Project 로 변환하기

우선 프로젝트 파일에 다음과 같은 XML Element 를 만들어 주셔야 합니다.

 

<PropertyGroup>

    <RegisterOutputPackage>true</RegisterOutputPackage>

    <RegisterWithCodebase>true</RegisterWithCodebase>

</PropertyGroup>

 

위와 같이 프로젝트를 변경하시면 정상적으로 컴파일이 될 겁니다.

 

VS2005 Integration Package VS2008 Integration Package 로 업그레이드 하는 방법

Upgrading VS 2005 Packages to VS 2008: A Basic Guide

 

2. .vsct 빌드 작업 지정하기

하지만 일반 클래스 라이브러리일 경우 또 하나의 문제에 봉착하게 됩니다. 바로 .vsct 라는 Package 의 디자인과 명령을 처리하는 XML 파일은 곧바로 오류를 내뱉을테니까요.

 

오류는 다음과 같습니다.

 

The destination resource can be omitted only if there is exactly one resource file to merge

 

이런 오류 메시지는 다시 프로젝트의 XML 구문을 다음과 같이 추가해 주시면 됩니다.

 

<EmbeddedResource Include="VSPackage.resx">

      <MergeWithCTO>true</MergeWithCTO>

      <SubType>Designer</SubType>

    </EmbeddedResource>

 

 

쉽게 의역하자면, .vsct 파일이 똥인지 된장인지 구분을 못한다고 하네요. 이 파일은 빌드 작업을 VSCTCompile 로 변경을 해 주셔야 합니다.

 

[그림1] .vsct 는 빌드 작업을 VSCTCompile 로 변경

 

괜한 오기에 포기하지 않고 클래스 라이브러리 프로젝트로 작업 하는 중 여기까지의 삽질은 솔직히 삽질도 아니었습니다. 이 다음의 삽질은 정말 생각만 해도… onu


3. .vsct 파일은 루트에 위치시키자

 

제가 만든 프로젝트의 .vsct 파일은 프로젝트의 루트가 아닌 솔루션 폴더 하위에 존재하도록 구성하였습니다. .vsct VSCTCompile 타입으로 변경하였고 특별히 VS Integration Project 와 다른 부분을 못 찾았음에도 다음과 같은 오류를 내뱉고 있었습니다.

 

[그림2] 솔루션 폴더에 위치한 .vsct 파일

 

CtoResourceMerger 작업중 예상치 못한 오류가 발생하였습니다. System.IO.FileNotFoundException

 

해결방법은 더욱 더 어처구니 없었습니다. 이 문제는 .vsct 파일을 프로젝트의 루트로 옮기면 됩니다. 그럼 더 이상 위와 같은 오류는 나지 않습니다만, 다시 .vsct 파일을 솔루션 폴더로 이동하였음에도 불구하고 더 이상 위의 오류는 나지 않는다는 것입니다. 그리고 전 이런 어이없는 결과에 10분 동안 멍~ 하니 모니터만 바라보고 있었답니다 ^^; 정말 재미있는 현상이었습니다.

 

Visual Studio Package 를 개발하시는 분들의 위해 서비스로 URL 하나 드립니다.

 

[VS2005] Todos los Iconos de Microsoft Office en solo 481 KB !!!

 

 

 

PS. 촛불 집회 실시간 생방송을 보면서

 

집에 와서 내내 촛불 집회를 오마이뉴스 생방송을 통해 보고 있는데, 시간가는 줄 모르고 재미있게 보고 있습니다. 생방송 중에 청와대 홈페이지를 다운시키자는 제의가 있었고, 청와대 홈피를 다운시키는데 이곳의 네티즌과 함께 공언했답니다^^

 

채 얼마 되지도 않아 1분만에 청와대 홈페이지는 다운이 되었고, 1시간 후에 정말 기막히게 청와대 홈페이지는 되살아 났습니다. 어떻게 된 건지 다시 청와대 홈페이지를 방문해 보았는데, 사이트 관리자 분 정말 톡톡 튀는 아이디어 높게 삽니다.

 

바로, 사이트 전체를 통 이미지로 바꾸어 버렸더군요. 대략 난감하면서도 대단하네요 ㅎㅎ

Posted by 땡초 POWERUMC

댓글을 달아 주세요

WCF Visualizers

.NET/Visual Studio 2008.05.11 01:53 |
WCF Visualizers
 
이스라엘의 유명한 .NET 컨설팅 회사에서 만든 WCF Visualizers (비주얼라이져) 가 CodePlex 에 등록이 되었습니다.
 
[그림1] WCF Service Visualizers
 
[그림2] WCF Client Visualizers
 
아직, 전 그렇게 쓸 일이 없지만 당장 프로젝트에서 WCF 를 사용하신다면 꽤 유용하게 사용할 수 있을 것 같네요.
 
 

Posted by 땡초 POWERUMC
TAG wcf

댓글을 달아 주세요

[.NET/ASP.NET] - Custom Config 에 Intellisence 날개를 달자
[.NET/Visual Studio] - Custom Extension 에 Intellisence 날개를 달자

Custom Extension Intellisence ( 사용자 확장자 자동완성 기능 )

지난 [.NET/ASP.NET] - Custom Config 에 Intellisence 날개를 달자 로 Custom Config 를 더 효율적으로 사용하고자 Intellisence(자동완성) 기능을 넣는 방법을 알아보았습니다. 이번에는 Custom Extension(확장자) 에 Intellisence 를 넣는 방법입니다. 제 블로그를 관심있게 구독하셨다면 약간의 응용으로 가능할겁니다. 그렇다면 어떤 방법을 통해 Custom Extension 에 Intellisence 기능을 넣을까요?

우선 Custom Extension 은 XML 형식이어야 합니다. Web.Config / App.Config / .Sitemap / .Html 파일과 같은 XML 형태의 파일에 자동완성 기능을 제공합니다. 이 다양한 XML 형식들은 각각 개별의 XML Schema 파일이 존재하며[.NET/ASP.NET] - Custom Config 에 Intellisence 날개를 달자
 포스트에서 이미 언급을 한 적이 있습니다.

그렇다면, 이 각각의 XML Schemas 를 관리하는 XML 문서가 있을 거라는 추측을 할 수 가 있는데요. 맞습니다. 이 XML Schemas 를 관리하는 XML 이 있습니다.

 

catalog.xml

바로 이 catalog.xml 이 XML Schemas 를 관리하는 XML 입니다. 이 XML 은 이미 언급했었던 %ProgramFiles%\Microsoft Visual Studio 9.0\Xml\Schemas 에 존재합니다. ( VS2005 는 Visual Studio 8.0 폴더입니다 )

    1 <SchemaCatalog xmlns="http://schemas.microsoft.com/xsd/catalog">

    2   <Schema href="%InstallRoot%/Common7/IDE/Policy/Schemas/TDLSchema.xsd"

    3           targetNamespace="http://www.microsoft.com/schema/EnterpriseTemplates/TDLSchema"/>

    4   <Schema href="%InstallRoot%/Common7/IDE/Policy/Schemas/Policy.xsd"

    5           targetNamespace="http://schemas.microsoft.com/VSPolicy/PDLSchema"/>

    6   <Schema href="%InstallRoot%/xml/schemas/%LCID%/snippetformat.xsd"

    7           targetNamespace="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"/>

    8   <Schema href="%InstallRoot%/xml/schemas/%LCID%/vstemplate.xsd"

    9           targetNamespace="http://schemas.microsoft.com/developer/vstemplate/2005"/>

   10   <Schema href="%InstallRoot%/xml/schemas/%LCID%/Microsoft.Build.xsd"

   11           targetNamespace="http://schemas.microsoft.com/developer/msbuild/2003"/>

   12   <Schema href="%InstallRoot%/xml/schemas/%LCID%/vscontent.xsd"

   13           targetNamespace="http://schemas.microsoft.com/developer/vscontent/2005"/>

   14   <Schema href="%InstallRoot%/xml/schemas/%LCID%/customUI.xsd"

   15           targetNamespace="http://schemas.microsoft.com/office/2006/01/customui" />

   16   <Schema href="%InstallRoot%/common7/packages/SDM/Schema/SystemDefinitionModel.xsd"

   17           targetNamespace="http://schemas.microsoft.com/SystemDefinitionModel/2005/1" />

   18   <Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig20.xsd" condition="%TargetFrameworkVersion% = 2.0" />

   19   <Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig30.xsd" condition="%TargetFrameworkVersion% = 3.0" />

   20   <Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig.xsd" condition="%TargetFrameworkVersion% != 2.0 and %TargetFrameworkVersion% != 3.0" />

   21   <Association extension="message" schema="%InstallRoot%/xml/schemas/message.xsd"/>

   22 </SchemaCatalog>

 

위는 catalog.xml 파일입니다. 그중에서 21 Line 이 제가 추가한 부분입니다. message 라는 확장자의 XML Schema 를 지정하는 모습입니다. 이렇게 하시면, 이제 .message 확장자의 자동완성 기능은 catalog.xml 에 추가한 부분의 XML Schema 를 참조하게 됩니다. 하지만 이게 전부가 아닙니다. ( 단, catalog.xml 을 수정하시면 Visual Studio 를 재시작 해야 적용이 됩니다 )

 

 

텍스트 편집기에 Custom Extension 추가

위의 작업을 통해 .message 라는 확장자의 자동완성 XML Schema 를 지정해 주었지만, 이것이 전부가 아닙니다. 왜냐하면 Visual Studio 는 .message 확장자가 XML 인지 HTML 인지 TEXT 타입의 확장자인지 전혀 알 수 없기 때문입니다. 그렇기 때문에, Visual Studio 에게 .message 확장자는 XML 타입의 확장자임을 알려줄 필요가 있습니다.

이 부분도, 이미 지난 포스트에서 언급했던 부분입니다. 아래에 스샷을 첨부하지만, 궁금하신 분은 ASPX 확장명 변경과 Visual Studio 에 적용하기  을 참고하세요


[그림1] .message 를 XML 타입으로 설정하는 방법

위의 [그림1] 과 같이 .message 확장자를 Visual Studio 에게 XML 타입으로 설정해 줄 수 있습니다. 그럼 확장자를 .message 로 XML 파일을 만들어 보세요. 자동으로 <?xml> 선언문이 추가되는 것을 알 수 있습니다.


[그림2] .message 을 만든 화면

 

다국어 사이트를 위한 Message XML Schema 정의 ( 예제 )

여기에서 간단하게 다국어 사이트를 위한 Message XML 을 작성하기 위한 XML Schema 를 만들어 보았습니다. 여러개의 Culture Name 을 외우기도 쉽지 않기 때문에, 이러한 XML Schema 를 작성하게 되면 보다 효율적이고, 자동완성 기능으로 빠르게 XML 을 작성할 수 있습니다. 아래는 XML Schema 를 작성하는 간단한 예입니다.

    1 <?xml version="1.0" encoding="utf-16"?>

    2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" elementFormDefault="qualified" attributeFormDefault="unqualified">

    3     <xs:element name="message">

    4         <xs:complexType>

    5             <xs:choice minOccurs="0" maxOccurs="unbounded">

    6                 <xs:element name="code">

    7                     <xs:complexType>

    8                         <xs:choice minOccurs="0" maxOccurs="unbounded">

    9                             <xs:element name="kr"></xs:element>

   10                             <xs:element name="jp"></xs:element>

   11                             <xs:element name="en"></xs:element>

   12                             <xs:element name="fr"></xs:element>

   13                         </xs:choice>

   14                         <xs:attribute name="controlID"></xs:attribute>

   15                     </xs:complexType>

   16                 </xs:element>

   17             </xs:choice>

   18         </xs:complexType>

   19     </xs:element>

   20 </xs:schema>

 

위와 같이 XML Schema 를 정의하게 되면, 아래와 같이 XML 을 빠르게 작성할 수 있습니다.

 



 

위의 [그림3], [그림4] 와 같이 Custom Extension 에 자동완성을 통해 XML 을 작성할 수 있다는 것을 알 수 있습니다.

 

 

역시 Visual Studio !!!

여러 가지 삽질을 통해서 Visual Studio 를 체험해 보면서, 역시 Visual Studio 라는 감탄밖에 나오지 않습니다. 그냥 코드를 만들고 디버깅하는 그러한 툴로만 생각했다면 크나큰 오산이었다는 것입니다. 강력한 툴이라고만 선전하는 Visual Studio 라고만 생각했었지만, 점점 알아갈 수록 강력한 툴이라는 것을 실감하게 됩니다. 미쳐 내가 알아차리지 못한 많은 세세한 부분까지 고려되어 설계되었다는 것을 알게 될 수록 역시 Visual Studio 라는 감탄만 나온답니다. 강력한 툴 만큼 개발자에게 강력한 생산성과 위력을 발휘하는 것 같다는 사담과 함께 이만 마칩니다.


Posted by 땡초 POWERUMC

댓글을 달아 주세요

비스타에서 설치 프로젝트 권한상승 하기
 
비스타가 출시되면서 화려해진 인터페이스 만큼 수많은 부분에서 이슈가 생겼습니다. 게임/시스템/개발 등의 대체로 전반적인 부분에서 사용자들의 따가운 질타를 받아왔습니다.
 
그 중에서 배포 프로젝트와 관련하여 알아보았던 [.NET/Visual Studio] - VS2008 SETUP Project 의 설치시 Vista 권한 상승 기능
을 이용하여 해결할 수 있었습니다. 하지만 Windows Installer 에 의한 MSI 설치 파일을 약간 다른 방법으로 해결해야 합니다.
 
 
Windows Installer 에 의한 MSI 설치 파일 권한 상승 방법
 
Windows Installer 는 msiexec 에 의해 설치파일(.MSI) 설치 환경을 제공해 줍니다. 때문에 근본적으로 MSI 설치 파일의 관리자 권한을 획득하기 위해서는…
 
1.     비스타의 UAC 기능을 제거하는 방법입니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 의 EnableLUA 키값을 변경하여 UAC 기능을 허용/제거 할 수 있습니다. ( 1은 UAC On/ 0은
UAC Off)

2.     Msiexec.exe 를 관리자 권한으로 실행하는 것이 가장 손쉽게 관리자 권한을 얻는 방법일 것입니다. Msiexec.exe 에 의해 MSI 설치 파일이 호스팅 된다는 것을 생각해 본다면 아마도 당연한 방법일 것입니다.

3.     지난번에 말씀드렸던 Orca Tool 을 이용하여 MSI 파일의 스크립트를 조작하는 방법입니다. 하지만, 빌드 후에 매번 Orca Tool 로 스크립트를 조작하기엔 너무나도 번거롭고 불편합니다.
하지만, 이 툴을 이용하여 빌드 단계를 거치지 않고, 설치 프로젝트의 제목이나 설치 경로 등의 스크립트를 조작할 수 있기 때문에, 가끔씩 매우 유용하게 사용할 수 있습니다
.

 
하지만, 강제로 사용자의 UAC 기능을 제거하는 방법은 그다지 좋은 방법이 아니고. 또한, 나머지 방법들도 효율적이지 않습니다.
 
 
빌드 이벤트를 이용한 MSI 설치 파일 권한 상승 하기
 
우선 Windows Installer Development Kit 을 다운로드 받도록 합니다. 제법 용량이 크고, 설치도 오래 걸립니다. 이 Kit 의 WiRunSql.vbs 파일이 필요한데, 이 파일만 구할 수 있다면 굳이 Windows Installer Development Kit 전체를 받을 필요는 없을 것 같네요.
 
1.     WiRunSql.vbs 파일을 설치 프로젝트 폴더에 복사합니다.
2.     속성 창에 PostBuildEvent 을 찾아 다음의 스크립트를 삽입합니다.
( 참고 : 빌드 이벤트는 여기 아티클에서 다루었습니다 )



cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOuputPath)" "UPDATE CustomAction SET CustomAction.Type=3073 WHERE CustomAction.Type=1025 AND CustomAction.Source='InstallUtil' AND CustomAction.Target='ManagedInstall'"
 
cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOuputPath)" "UPDATE CustomAction SET CustomAction.Type=3585 WHERE CustomAction.Type=1537 AND CustomAction.Source='InstallUtil' AND CustomAction.Target='ManagedInstall'"

Orca Tool 로 MSI 프로젝트 내부를 한번이라도 보셨다면 저 희한한 문장이 무엇을 의미 하는지는 아실 것 같습니다.
 
위와 같이 간단하게 Windows Installer Development Kit 의 vbs 스크립트를 이용하여 MSI 설치 파일의 비스타 권한 상승 효과를 얻을 수 있습니다. 단, MSI 설치 파일 실행 시 관리자 권한 상승 창이 뜨는 것은 아니고, 실제 설치 중 ProgressBar 가 나타나게 되면, 권한 상승 창이 뜨게 됩니다.
 
 
너무 쉬었네… ㅠ.ㅠ
 
그 동안 너무 쉬었던 탓에, 블로그 글 쓰는 것이 너무너무 버겁습니다;; 이거 써놓고, 또 한 달을 띵가띵가 쉴 지 모르죠 ㅋ;;; 아무튼 이번 달에 Silverlight 2.0 Beta 출시를 시작으로 많은 MS 의 신제품이 출시가 되네요. 정말 기대가 많습니다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

 
설치 프로젝트와 System.Configuration.Install 네임스페이스의 Installer 를 이용하여 다양한 작업을 하는 방법을 녹화한 동영상 입니다.
 
화면이 작으신 분은 전체화면으로 보시면 크게 보실 수 있습니다.


Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 닷넷초보 2011.04.11 19:28 Address Modify/Delete Reply

    안녕하세요. 설치프로젝트 강의 정말 큰 도움이 됬습니다.

    헌데 하나만 여쭤볼게 있습니다.

    저는 rollback 이벤트가 인스톨 도중 취소했을경우 발생하는것인줄 알았는데 아니더군요..

    제가 지금 하고있는 패키지화는, 설치하다 취소하는 경우도 반드시 알아야 하는데요

    이것도 이벤트로 처리할수 있는 방법이 없을까요?

    설마 불가능한건 아니겠죠?;

    C# 닷넷 정말 초보라서요;

    힌트라도 주시면 감사하겠습니다. ㅠㅠ

 
설치 프로젝트를 이용하여 배포하는 방법입니다.
Visual Studio 를 이용하여 설치 프로젝트를 만들고, 배포 파일을 만들어 내는 방법을 동영상으로 녹화하였습니다.
 
웹 설치 프로젝트 또한 위와 같은 방법으로 만들 수 있기 때문에, 설치 프로젝트를 통해 자신이 만든 웹사이트를 배포할 수 도 있습니다.
 
필요한 분에게 도움이 되었으면 좋겠고요. 화면이 작으신 분은 전체화면으로 보시면 더 크게 볼 수 있습니다.



Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 김호상 2013.09.04 21:38 Address Modify/Delete Reply

    유용하게 보고 갑니다...
    쉽게 알아볼 수 있게 해주셔서 감사드립니다.
    그런데, 설치프로그램을 이용하여 설치하면 제어판>프로그램 추가 및 제거메뉴에 등록이 되는건가요?

    • 땡초 2013.09.04 23:13 Address Modify/Delete

      예, 프로그램 추가,제거에 만드신 프로그램 제거 항목이 생깁니다.

      프로그램 제거 목록은 운도우 레지스트리에서 가져오는데,
      설치 프로젝트로 패키징을 해서 설치하면 이 레지스트리에 설치 제거 항목에 등록이 됩니다.

Visual Studio 에는 참으로 숨어있는 기능이 많이 있는 것 같습니다. 오늘 소개할 내용도 그런 숨어있는 기능 중의 하나입니다. 대단하거나 그렇게 유용하지는 않을 것 같지만, 이런 것도 있다는 것 정도 알아두시면 언젠가는 필요하지 싶네요.
 
 
숨어있는 Visual Studio 2005 / 2008 의 그 기능!
 
Visual Studio 와 함께 공개된 수많은 Addins 이 있습니다. WinAPI 를 호출할 때 편리한 PInvoke 나 그 외에 편리한 Comment Helper(^^) 와 같은 Addin 을 사용하다가도, 가끔씩은 이것들이 잠시만 사라져 주었으면 좋을 때가 있더라구요.
 
물론, 추가기능 관리자(Addin-Manager) 를 통해 사용 여부를 편집할 수 있지만, Visual Studio 를 재시작을 해 주어야 하는 불편합도 있지요.
 
그럴 때 사용하십시오.
 
Visual Studio 가 실행되면서 Left-Shift 키를 누르고 계십시오
 
이 기능은 Visual Studio 2005/2008 에서 작동합니다
 
어떤가요? VS Addin 들이 모두 사라졌죠? VS-Addin 을 개발하시는 분이라면 아마도 유용하게 쓰실 수 있을 것 같아요. ( Test Addin 이 실행중인 상태에서 디버깅을 할 경우 어셈블리가 다른 프로세서에 의해 잠길 때 )
 
이상 팁 아닌 팁이였습니다.
 
참고 : http://wpfwonderland.wordpress.com/2008/01/18/disable-visual-studio-add-ins-on-startup/
Posted by 땡초 POWERUMC

댓글을 달아 주세요


Visual Source Safe 를 통해 Internet 공유를 하는 방법입니다.
 
인터넷에 공개된 매뉴얼이 있긴 하지만, 그리 간단하진 않더라구요.
그렇지 않으면 저 또한 하루를 넘게 삽질하지 않았을 테니까요 -_-;

VSS Internet 을 이용해서 주변의 친구들이나 커뮤니티 사람들과 팀 프로젝트를 해도 참 좋을 것 같네요
 
아래 동영상은 VSS Internet 을 설정하는 방법입니다.



 



Posted by 땡초 POWERUMC

댓글을 달아 주세요



Visual Source Safe 를 사용/설정 하는 방법입니다.

처음 사용하시는 분들에게 유용했으면 하네요^^




Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 개발자 2012.08.20 13:31 Address Modify/Delete Reply

    정말 잘 봤습니다. 고맙습니다.

비스타의 UAC(사용자 계정 컨트롤)에 대응하는 권한 상승 시키기
 
Vista 가 나오면서 응용 프로그램의 .manifest 를 추가함으로써 UAC 에 대응할 수 있는 권한 상승 효과를 얻을 수 있었습니다. 설치 프로젝트의 경우 VS2005 까지 그러한 기능이 제공 되지 않았기 때문에, 이번 VS2008 의 배포 프로젝트의 권한 상승 기능은 환영할 만합니다.
 
그럼 VS2005 버전(그 이하버젼) 에서는 어떻게 비스타 배포를 할 수 있는지 알아보죠.
 
1.      .Manifest 를 작성하여 Setup.exe 와 Setup.exe.manifest 배포하기
간단히 실행파일(확장자포함).manifest 의 파일을 추가함으로써 권한 상승 효과를 볼 수 있습니다.

2.      .Manifest 를 리소스에 포함하여 Setup.exe 파일 배포
Windows SDK mt.exe를 통해 manifest 정보를 리소스에 포함할 수 있습니다.
사용예) mt.exe /manifest MyApp.exe.manifest /outputresource:MyApp.exe;#1

만약 서명된 어셈블리라면 리소스 포함 manifest 를 사용할 수 없습니다. 왜냐하면 서명된 이후 이셈블리가 변경이 가해졌기 때문에 실행될리 없겠죠.
 
 
VS2008 설치 프로젝트의 새로운 권한 상승 기능
 
아쉽게도, 이 기능은 VS2008 설치 프로젝트에서 어떠한 UI 도 제공하지 않습니다.
이게 무슨 뚱딴지 같은 소리냐! 맞습니다…
VS IDE 에서 이 옵션을 제어할 수 있는 어떠한 Property 도 제공되지 않습니다.
 
[그림1] VS IDE 의 Setup Project 의 권한 상승 기능 Property 가 제공되지 않는다
 
하지만, 실망할 것 없습니다. 간단하게 프로젝트 파일을 열어 약간의 속성을 변경해 주면 되기 때문이죠.
 

 
1.      Setup Project 의 .vdproj 파일을 텍스트 편집기를 통해 엽니다
2.      MsiBootstrapper의 RequireElevation 속성을 FALSE 에서 TRUE 로 변경합니다
 

만약, VS2005 의 설치 프로젝트를 VS2008 로 컨버팅 작업을 하게 되면, 위의 RequireElevantion 속성을 따로 넣어 주셔야 합니다.

 
 
이렇게 한 후, 다시 컴파일 한 후에 Setup.exe 를 실행시켜 보면 권한 상승 요구 창이 뜨는 걸 확인할 수 있습니다.
이 기능이 IDE 의 Property 속성에 들어갔으면 참 편리할텐데 라고 생각하는데, 왜 꼬깃꼬깃 기능을 숨겨놓았는지 아이러니 하네요 ^^;
 
여기서 한가지 주의할 것은, MSI 설치 파일은 Setup.exe 와 다르게 권한 상승이 되지 않습니다. Orca Tool 이나 script 를 이용하여 권한 상승을 할 수 있는데, 다음 기회에 살펴보도록 하겠습니다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio Team System(VSTS) 2010 CTP 가 나온지 벌써 2달이나 지났네요. 처음에는 Microsoft MVP 대상으로 공개하였지만, 곧이어 Microsoft Download 사이트에 올라왔습니다. 얼마 전까지만 해도 Visual Studio 2008 + SP1, .NET Framework 3.5 + SP1, .Team Foundation Server 2008 + SP1 등등 동시 다발적으로 Service Pack 이 제공이 되었죠. 하지만, 얼마 지나지 않아 Visual Studio Team System 2010 CTP 버전이 세상에 공개가 되었습니다.
 
 
언제나 이런 새로운 변화의 조짐이 보일 때 세 가지 부류의 사람이 존재합니다.
 
1.     “나온지 얼마 됐다고, 또 신버전이 나와!! 미치겠네”
2.     “쓰던 버전에선 불편했는데, 개선이 되었을까? 궁금한데 한번 볼까?”
3.     난 코더라 관심 없음!!
 
자신은 어떤 부류에 속하시나요? 제가 장담하건데, 어떤 부류의 사람들은 언제나 현실에 안주하고 있으며, 어떠한 팀 프로젝트에서도 핵심 맴버가 아닌 그 밑에서 일하게 될 사람들이라는거… 맞나요? 이제는 최신 트랜드나 새로운 기술을 모르고선 고객이나 사용자를 더 이상 만족시킬 수 가 없게 된 것입니다. 이미 고객이나 사용자의 감각은 우리보다 훨씬 더 높고, 그들 스스로가 원하고 있기 때문입니다.
 
[그림2] ( 출처는 여기 )
 
하지만, 다행입니다. 왜냐하면 아직도 늦지 않았기 때문입니다. 지금이야 말로 자신의 가치를 상승시키고, 새로운 도전을 할 수 있는 기회 아닌 기회가 온 것입니다. .NET 이 처음 세상에 문을 두드리고, .NET 2.0 이 나오면서 크나큰 폭풍을 일으켰다면, 우리 앞에 기다리고 있는 .NET 4.0 은 바로 그 후폭풍이 될 것임이 분명합니다.
 
자 이제 새로운 패러다임에 누가 먼저 발을 담구느냐입니다. 여러분도 늦지 않았고, .NET 4.0 은 Visual Studio Team System 2010 공식 팀 블로그와 함께 하십시오. ^^
 
Visual Studio Team System 2010 공식 팀 블로그
 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Microsoft 가 무료로 배포하는 책 3가지를 소개하고자 합니다.
다음 3가지의 책이 PDF 파일로 공개가 되었답니다.
 
1.     Introducing LINQ
2.     Introducing ASP.NET AJAX
3.     Introducing Microsoft Silverlight 1.0
 
Introducing LINQ 책을 살펴보니, 책 내용은 그렇게 어렵지는 않습니다. 예제를 중심으로 샘플만 보아도 될 정도로 쉽게 작성이 되어 있습니다.
 
이 책에 대해서 에서 이미 관련 내용과 다운로드를 링크하셨네요^^
 
또는, 다음의 링크의 다운로드 사이트에 가셔서 다운로드 받으시면 됩니다. 단, 핫메일(HOTMAIL) 로그인 과정이 필요합니다.
http://csna01.libredigital.com/
Posted by 땡초 POWERUMC
TAG E-book

댓글을 달아 주세요

다중 시작 프로젝트는 Visual Studio 2008 에서 추가된 기능입니다.
예를 들어, Server/Client 프로그램을 작성하거나 솔루션의 여러 개의 웹 프로젝트를 동시적으로 실행시킬 때 무척이나 편리하게 사용할 수 있답니다.
 
우선 솔루션에서 마우스 오른쪽 버튼을 클릭하여 속성(Properties) 를 클릭합니다.
 
그럼 Solution Property Pages 창이 뜨면, 프로젝트의 실행을 원하는 항목의 Action 을 Start 로 바꾸어 주면 됩니다.
 
 
Start Without Debugging 옵션을 선택해 주면, 디버깅이 불가능 하지만 좀 더 빠르게 실행 할 수 있답니다.
 
원문 - http://blogs.msdn.com/webdevtools/archive/2007/12/24/tips-tricks-start-up-options-and-instances-of-asp-net-development-server-in-a-multi-project-solution.aspx

UPDATE -----
이 기능은 Visual Studio 2003 부터 있던 기능이었네요~
전 왜 2008 에서 눈에 띄었는지 모르겠네요. 정정합니다^^;
잘못된 게시를 정정해 주신 정성태님 감사합니다..

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

댓글을 달아 주세요


오늘 MS 내부 직원에게 "Visual Studio 2008 에 대한 자료를 어디에서 찾을 수 있나요?" 라고 질문을 했다.

바로 UK 팀과 Daniel 의 최근 포스트에 좋은 내용이 있다는 것을 알게 되었다.

나는 UK 행사에 함께 가는 것이 좋을거라 생각했으나, 그렇지 못하게 되었다.(스크린캐스트이벤트 페이지를 보면 웹사이트의 이슈를 알 수 있다.) 그런 의미에서, 나는 VS2008에 관한 UK 자료들을 함께 가져다 주는 포스트를 얻기위해 링크하는게 좋다고 생각했다.(물론, 그 밖에 더욱더 많은 자료가 있다.)

블로그

아마 여기에 개인적으로 작성한 많은 포스트가 있다. 그 사람들은 , Daniel, Martin, Mike 다.
나와 Daniel, Martin, Mike 는 많은 포스트들을 개인적으로 포스팅 하였다.

여기를 클릭하면 피드를 볼 수 있습니다.

동영상

TechEd 에서 촬영한 VS2008 과 .NET Framework V3.5 에 대한 동영상을 소개한다.  나와 Daniel이 토픽에 대한 이야기를 하는 것과 약간의 농담의 채팅이지만, 링크를 걸어놓았다. ( 아래로 스크롤하면 TechEd 이틀째 동영상을 찾을 수 있다)

image

이건 약간 좀 길다 ( 일부 페이지가 다운 )

image

Recorded Events

최근 VS2008에 대한 다양한 이벤트가 있다. 그것을 녹화하여 스크린캐스트에 대한 링크를 포함했다.

Visual Studio 2008 과 .NET Framework V3.5 살펴보기

웹 개발자를 위해 Visual Studio 2008 과 .NET Framework V3.5 는 무엇이 새로워졌나?

좀 더 많은 동영상이 있지만, 조금 아쉬운 부분이 많다.(그래서 추후에 업데이트 할 것이다.)

TechEd EMEA에 녹화된 세션에 가면, 우리가 VS와 LINQ를 했던 세션을 찾을 수 있을 것이다. 여기 를 클릭. 세션의 상세한 내용은 (TLA201 VS2008과 .NET Framework 3.5의 여행, Daniel Moth)과, (TLA309 XML로 LINQ:XML데이터와 함께 언어를 통합하는(LINQ) framework의 사용, Mike Taulty) 이다.

Screencasts

RTM 릴리즈 이후 더이상 베타버젼을 사용하지 않도록 한다. 아래는 VS2008 의 모든 기능은 아니다. 하지만 점차적으로 이를 관리하도록 할것이다.

언어

VB9 - Object Initialisers

VB9 - Implicit Types

VB9 - Anonymous Types

VB9 - Relaxed Delegates

Partial Methods in C# v3 and VB9

VB Intellisense In VS2008

C# Version 3.0 - Object Initialisers

C# Version 3.0 - Implicit Typing

C# Version 3.0 - Collection Initialisers

C# Version 3.0 - Anonymous Types

C# Version 3.0 - Extension Methods

C# Version 3.0 - Lambda Expressions

C# Version 3.0 - Expression Trees

C# Version 3.0 - Pieces of LINQ

Partial Methods in C# v3 and VB9

Decomposing LINQ

개발환경

VS2008 Multitargeting

Multi-threading Debugging Enhancements in Visual Studio 2008

VS2008 designed for Vista with better aesthetics and usability

.NET Framework

.NET Framework v3.5 Overview

웹 개발

New CSS support in Visual Studio 2008

Script Intellisense and Debugging

오피스

Deploying Office 2007 Add-Ins with ClickOnce in VS 2008

Office Ribbon Customisation in Visual Studio 2008

Outlook Form Regions in Visual Studio 2008

VBA interop with VSTO managed code in VS 2008

Word Content Controls in Visual Studio 2008

Office Task Panes and Actions Pane in VS2008

윈도우 폼

Using ASP.NET Client Application Services in Windows Forms Apps

Windows Forms Interop with WPF

WCF 과 WF

Durable Services with WCF V3.5

Offering Syndicated RSS/ATOM Data from WCF V3.5 Services

 

LINQ to XML

VB9 - XML Support

Creating XML in VB with LINQ to XML

Querying XML in VB with LINQ to XML  

Namespaces in VB with LINQ to XML

Creating XML in C# with LINQ to XML

Querying XML in C# with LINQ to XML

Namespaces in C# with LINQ to XML

 

LINQ to SQL

Introduction to LINQ to SQL

Understanding the DataContext

Mapping Schemas to Classes in LINQ to SQL

Code Generation Tools in LINQ to SQL

Inserts with LINQ to SQL

Deletes with LINQ to SQL

Updates with LINQ to SQL

Concurrency in LINQ to SQL

Joining Data with LINQ to SQL

Working with NULLs in LINQ to SQL

When Do LINQ to SQL Queries Execute?

Deferred Loading of Related Entities in LINQ to SQL

Querying with Stored Procedures in LINQ to SQL

Updating with Stored Procedures in LINQ to SQL

Using SQL Functions in LINQ to SQL

User Defined Functions in LINQ to SQL

Inheritance in LINQ to SQL

Transactions in LINQ to SQL

윈도우 비스타

Build UAC aware apps with VS2008

 

출처 - http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/11/21/9951.aspx
번역 - 엄준일

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

댓글을 달아 주세요

오늘은 Visual Stuido 2003 부터 제공이 되어왔던 빌드 이벤트(Build Event) 에 대해서 알아보자. 종종 굉장히 편리하게 사용되는 기능이니 한번쯤 알아놓는 것도 도움이 될 것 같다.
 
여기에서 사용하는 툴은 Visual Studio 2005 Team Suite 기준이다.
 
 
빌드 이벤트
 
빌드 이벤트는 이름에서 알 수 있듯이 빌드(소스코드 컴파일) 작업을 할 때 발생하는 VS.NET IDE 에서 발생하는 이벤트이다.
 
빌드 이벤트는 다음의 두가지 단계에 거쳐 이벤트를 줄 수 있다.
빌드 전 이벤트
빌드 후 이벤트
 
빌드 전 이벤트는 개발자가 빌드를 수행하기 전에 발생하는 이벤트이다.
빌드 후 이벤트는
 
다시 빌드 후 이벤트는 총 3가지 옵션을 선택할 수 있다.
항상 허용
빌드가 성공한 경우
빌드에서 프로젝트 폴더를 업데이트한 경우
 
대체적으로 가장 많이 사용하게 될 옵션은 “빌드 후 이벤트”가 될 것 같다. 또한, 빌드 후 이벤트에서 “빌드가 성공한 경우” 가 가장 효율적인 옵션이 될 것이다.
 
빌드 이벤트는 프로젝트 이름에서 마우스 오른쪽 버튼을 눌러, “속성” 을 클릭하면 “빌트 이벤트” 탭에서 쉽게 찾을 수 있다.
 
[
그림1] 프로젝트 속성의 빌드 이벤트 ( 클릭하면 확대 됩니다 )
 
 
 
빌드 이벤트의 매크로
 
VS.NET 의 매크로 기능으로 좀더 쉽게 빌드 이벤트 명령줄을 작성할 수 있다.
 
[
그림2] 빌드 이벤트의 매크로
 
다음은 빌드 이벤트의 매크로로, 다음과 같은 값을 반환한다. (MSDN 참조)
 
매크로
설명
$(ConfigurationName)
현재 프로젝트 구성의 이름입니다. 예: "Debug|Any CPU"
$(OutDir)
출력 파일 디렉터리의 경로로서 프로젝트 디렉터리에 대해 상대적인 경로입니다. 이 경로는 출력 디렉터리 속성의 값이 됩니다. 뒤에는 백슬래시('\')가 붙습니다.
$(DevEnvDir)
드라이브와 경로로 정의되는 Visual Studio 2005의 설치 디렉터리로, 뒤에는 백슬래시(\)가 붙습니다.
$(PlatformName)
현재 대상 플랫폼의 이름입니다. 예: "AnyCPU".
$(ProjectDir)
드라이브와 경로로 정의되는 프로젝트의 디렉터리로, 뒤에는 백슬래시(\)가 붙습니다.
$(ProjectPath)
드라이브, 경로, 기본 이름 및 파일 확장명으로 정의되는 프로젝트의 절대 경로 이름입니다.
$(ProjectName)
프로젝트의 기본 이름입니다.
$(ProjectFileName)
기본 이름과 파일 확장명으로 정의되는 프로젝트의 파일 이름입니다.
$(ProjectExt)
프로젝트의 파일 확장명입니다. 파일 확장명 앞에는 '.'이 붙습니다.
$(SolutionDir)
드라이브와 경로로 정의되는 솔루션의 디렉터리로, 뒤에는 백슬래시(\)가 붙습니다.
$(SolutionPath)
드라이브, 경로, 기본 이름 및 파일 확장명으로 정의되는 솔루션의 절대 경로 이름입니다.
$(SolutionName)
솔루션의 기본 이름입니다.
$(SolutionFileName)
기본 이름과 파일 확장명으로 정의되는 솔루션의 파일 이름입니다.
$(SolutionExt)
솔루션의 파일 확장명입니다. 파일 확장명 앞에는 '.'이 붙습니다.
$(TargetDir)
드라이브와 경로로 정의되는 빌드용 기본 출력 파일의 디렉터리입니다. 뒤에는 백슬래시('\')가 붙습니다.
$(TargetPath)
드라이브, 경로, 기본 이름 및 파일 확장명으로 정의되는 빌드용 기본 출력 파일의 절대 경로 이름입니다.
$(TargetName)
빌드용 기본 출력 파일의 기본 이름입니다.
$(TargetFileName)
기본 이름과 파일 확장명으로 정의되는 빌드용 기본 출력 파일의 파일 이름입니다.
$(TargetExt)
빌드용 기본 출력 파일의 파일 확장명입니다. 파일 확장명 앞에는 '.'이 붙습니다.
 
 
 
 
Visual Studio 2005 에서 빌드 이벤트의 문제
 
만약 Visual Studio 2003 과 Visual Studio 2005 가 설치되어 있는 PC 라면 한가지 문제가 발생하는 부분이 생긴다. VS.NET 2005 에서 제공하는 SDK 유틸리티들이 VS.NET 2003 버전이 실행된다는 것이다. 이 문제를 해결하기 위해 빌드 이벤트 명령줄에 SDK 유틸리티의 전체경로(Full Path) 를 적어주면 해결된다.
 
아래의 주소에 이 문제에 대한 해결방법이 자세히 나와있다.
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=451712&SiteID=1
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1188
( MSDN Forum 에 가면 상당히 좋은 정보의 질의응답이 많답니다 )
 
 
 
그럼 이제 실무 프로젝트에서도 사용 가능한 예제를 중심으로 가상의 상황을 만들어 빌드 이벤트를 활용해 보도록 하자.
 
1. 실전 빌드 이벤트 ( GAC 자동 등록하기 )
 
팀 프로젝트에서 프로젝트의 공통된 부분을 소위 “프레임웍”으로 구축하여 개발하는 곳이 많다. 이런 팀 프로젝트에서 “개발 표준”을 정의하여 개발자 마다 같은 똑같은 폴더에 프로젝트를 만들어서 개발하면 큰 문제가 발생하지 않지만, 그렇지 않을 경우 대부분이 프로젝트의 참조가 깨지는 문제가 발생한다.
 
이런 문제를 해결하기 위해, 프로젝트의 공통 부분은 GAC 에 등록하여 GAC 을 참조하는 형태로 개발하면 이런 참조가 깨지는 오류를 방지할 수 있다. 이럴 경우, 프로젝트 공통 부분을 개발하면서 매번 소스가 수정된 후, GAC 에 어셈블리를 등록하기 위해 Visual Studio 의 명령 프롬프트의 Gacutil.EXE 를 사용하여 GAC 에 등록하기에 무척 번거롭다.
 
그럼, 다음과 같이 빌드 이벤트를 작성하여 프로젝트의 소스가 변경되어 컴파일 될 때 자동으로 GAC 에 등록하는 빌드 이벤트를 작성한다.

"D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /u "$(TargetName)"
"D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /i "$(TargetPath)"
 
위 빌드 이벤트의 매크로에서 반드시
 
$(TargetPath)
 
양쪽 따옴표를 삽입하자. 만약 그렇지 않으면 Documents and Settings 폴더명이 제대로 인식이 되지 않는 현상이 발생하여, 빌드 이벤트가 실패 하는 현상이 발생하게 된다.
 
출력창을 통해서 빌드 이벤트가 어떻게 실행되었는지 살펴보면 다음과 같다.
 
"D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /u "BuildTest"
"D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /i "D:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\TestSolution 2005\BuildTest\bin\Debug\BuildTest.dll"
 
$(TargetName) 과 $(TargetPath) 등의 매크로가 자동으로 폴더명이나 프로젝트 이름으로 리턴되는 것을 알 수 있다.
 
빌드 결과 다음과 같이 BuildTest 프로젝트의 BuildTest.DLL 이 GAC 에 등록됨을 알 수 있다.
 
[
그림3] GAC 에 BuildTest 어셈블리가 등록됨
 
마지막으로 GAC 에 등록된 어셈블리를 참조 추가 대화상자에 등록하기 위해 두가지의 레지스트리 중 하나에 등록을 해야 한다.
 
1.      [HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
2.      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
 
만약 현재 시스템에 로그인한 사용자에게만 보이도록 하고 싶다면 HKEY_CURRENT_USER 에 추가하고, 현재 시스템의 모든 유저에게 보이도록 하고 싶다면 HKEY_LOCAL_MACHINE 에 추가하면 된다.
 
[
그림4] 레지스트리 등록을 통한 참조 대화 상자에 어셈블리 등록 ( 클릭하면 확대 됩니다 )
 
위와 같이 레지스트리에 등록하게 되면 다음과 같이 참조를 추가하여 사용할 수 있다.
 
[
그림5] 참조 추가 대화상자에 추가된 BuildTest 어셈블리
 
 
 
2. 실전 빌드 이벤트 ( Release 빌드시 자동 배포 )
 
위의 1번 예제를 눈여겨 본 독자라면 쉽게 이번 예로 쉽게 따라할 수 있을 것이라 생각한다.
우선 우리가 자동배포 하도록 다음고 같은 작업을 진행할 것이다.
 
1.      배포 폴더가 존재하지 않을 경우 배포 폴더 생성
2.      배포 폴더에 파일이 존재할 경우 무조건 삭제
3.      빌드 된 파일을 배포 폴더로 복사
 
약간의 DOS 명령 구문을 사용할 줄 안다면 그리 어려운 작업은 아닐 것이다.
그럼 작성된 빌드 이벤트를 보도록 하자.
 
IF NOT EXIST D:\Publish MD D:\Publish
DEL D:\Publish /Q
IF $(ConfigurationName)==Release XCOPY "$(TargetDir)*" "D:\Publish\"
 
위에 사용된 매크로 중
 
$(ConfigurationName)
 
는 현재 빌드된 프로젝트가 Debug 인지 Release 인지의 값을 반환한다. 그래서 프로젝트의 빌드 모드를 Release 로 변경하고 빌드를 하게 되면 다음과 같이 자동으로 배포 폴더에 빌드 작업 후 생성된 파일이 자동으로 복사된다.
 
[
그림6] 빌드 후 자동으로 Publish 가 생성되고 빌드된 파일이 복사된다.
 
 
 
3. 실전 빌드 이벤트 ( 자동 압축을 통한 소스 백업 )
 
아마 프로그램을 작성하다 보면 잘못된 구성으로 코딩되어 어제 코딩했던 소스가 필요하다거나, 어제 작성했던 EXE/DLL 이 갑자기 필요할 경우 형상 관리 툴을 사용한다고 하더라도 약간의 복잡한 절차를 거쳐야 할 것이다. 하지만 여기서 빌드 이벤트를 사용하여 자동 압축 또는 빌드된 파일을 자동으로 압축하는 기능도 구현할 수 가 있다.
 
이미 1,2 번 예제를 잘 이해하고 따라해 본 독자라면 조금만 신경쓰면 3번 실전 예제도 금방 따라할 수 있을 것이다.
 
여기에서는 ALZIP(알집) 을 사용하여 빌드시 마다 자동으로 소스 코드를 압축하는 빌드 이벤트 명령줄이다.
 
IF NOT EXIST D:\Source_Backup MD D:\Source_Backup
alzip -a "*.*" "D:\Source_Backup\"
 
정말 간단하다. ALZIP(알집)의 –a 옵션을 통해 압축을 수행하는 명령줄을 볼 수 있다.
 
[
그림7] 빌드시 마다 자동으로 소스코드를 압축하여 백업해 둔다.
 
 
 
이상 이번 아티클을 통해 간단하지만 많은 내용을 다룬 것 같다. 실제 팀 프로젝트에서 적절하게 사용한다면 많은 귀찮은 작업을 최소화 할 수 있을 것이다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 그라파이어 2011.01.18 12:00 Address Modify/Delete Reply

    좋은 정보 감사합니다!
    헌데 ALZIP을 이용하여 소스를 압축하신다고 하셨는데
    ALZIP은 어떻게 등록하여 사용하는 건가요?

    • 땡초 POWERUMC 2011.01.18 12:14 신고 Address Modify/Delete

      ALZIP 을 그냥 다운로드 받아서 설치하시면 됩니다.
      설치하시면 PATH 환경 변수가 잡힐텐데,
      만약 잡히지 않으시면

      1. ALZIP 실행파일 경로를 FULL PATH 로 주셔도 되고요,
      2. SET PATH=%PATH%;C:\알집경로 로 PATH 경로를 잡아주세도 됩니다.