드디어 Visual Studio 2008과 .NET Framework 3.5의 첫 서비스팩이 출시되었습니다. 여러 개발자들의 피드백에 힘입어 추가되고 개선된 부분들이 많아서 Windows Vista SP1이 나왔을 때 만큼이나 반갑습니다. 대강의 내용을 추려보면 이렇습니다.

Visual Studio 2008 Service Pack 1에서 개선되거나 달라진 점

  • WPF 디자이너의 성능 향상
  • SQL Server 2008 지원 추가 (SQL Server 2008의 모든 기능을 이용하려면 반드시 SP1을 설치해야 합니다.)
  • ADO.NET 엔티티 디자이너
  • Visual Basic과 Visual C++을 위한 컴포넌트와 도구들
  • Visual C++의 경우 이전에 커뮤니티를 통하여 소개되었고 국내에서도 몇 차례의 세미나를 통해서 언급된 Visual C++ Feature Pack이 통합되어 TR1 기술은 물론 MFC를 위한 Ribbon UI가 지원됩니다.
  • JavaScript 지원 강화, AJAX와 데이터 도구의 기능 향상, 웹 사이트 배포 기능 향상

.NET Framework 3.5 Service Pack 1에서 개선되거나 달라진 점

  • Windows Presentation Foundation 기반의 응용프로그램을 다시 컴파일하거나 변경하지 않아도 이전보다 최고 45% 이상 더 낳은 성능을 나타냅니다.
  • Windows Communication Foundation의 제어 방법이 더 정교해지고 더 다양해졌습니다.
  • .NET Framework 3.5의 설치가 이전보다 더 쉽고 자연스럽습니다. (Streamlined)
  • ADO.NET 엔티티 프레임워크, 데이터 서비스 및 SQL Server 2008과의 연동을 목표로 데이터 플랫폼 기술들이 더 좋아졌습니다.
  • 클라이언트 전용 런타임을 제공하며 런타임의 크기를 20MB 이내로 줄일 수 있습니다. (이전 .NET Framework 2.0 수준)

이 외에도 Team Foundation Server에 대한 기능이 많이 향상되었으며 좀 더 자세한 내용은 아래 기사를 참고하시기 바랍니다. 조만간 다른 언어 버전 및 Express Edition의 모든 언어 버전에 대한 SP1도 새로 공급될 예정이며, SQL Server 2008 Express Edition 및 SQL Server 2008에 대응되는 Management Studio/Express도 개발될 듯 합니다. 참고로, Visual Studio Shell 엔진도 SP1 코드 기반에 대응되는 버전이 새로 제공되므로 Shell 기반으로 독립 어플리케이션을 만드는 경우에도 새로운 SP1의 기능을 빠뜨리지 말고 가져가시면 도움이 될 것입니다. :-)

Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://rkttu.com/rkttublog/rss/comment/250
  2. OpenID Logo☆~ 2008/08/16 00:56  편집/삭제  댓글 작성  댓글 주소

    Ribbon UI라는 것이 눈에 띄는군요 @_@;
    2008에 포함 되어 있다는게 그냥 뜬구름인줄 알았습니다 ㅎ;;

    • OpenID Logo남정현 2008/08/16 15:14  편집/삭제  댓글 주소

      원래 VC++ 2008에 없던 내용인데 Feature Pack으로 따로 소개되었었죠. 우리나라에서도 VC++ 세미나를 몇 차례하면서 소개했던 적이 있었을 겁니다. (MSDN 세미나였던걸로 기억나네요.)

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Visual C++ 8.0의 ATL 프로젝트를 이용하여 간단히 통신 컴포넌트를 제작해 보았다. 여러 가지를 배울 수 있었는데 무엇보다도 ATL 프로젝트에서 발생하기 쉬운 여러가지 미궁들에 대한 정확한 해답을 배웠다는 점이다. 그리고 ATL과 Visual C++ 컴파일러가 제공하는 "특성" 프로그래밍의 덕을 톡톡히 봤다.

하지만 Visual C++ 8.0이기 때문에 치루어야 했던 문제가 하나 있다. 바로 Visual C++ 8.0 Runtime Distribution을 반드시 고객 PC에 설치해야 한다는 엄청난 문제이다. 응용프로그램과 Visual C++ 런타임 버전을 서로 격리하기 위한 목적으로 Native Assembly Cache가 필요했고 그에 따라 별도의 Distribution Pack을 이용하여 캐쉬를 구성해야 했다는 것은 분명히 납득할만한 설명이지만 이건 .NET Framework 2.0을 설치하는 것과 전혀 다르지 않은 양상이다. 물론, Windows Installer로 포장을 해도 간단히 감추어지고 .NET Framework 2.0 전체를 다 설치하는것보다는 상황이 좋지만 원래 Visual C++ 프로그램이 가졌던 고유의 장점이 일시에 물거품이 되버린 셈이다.

내가 원하는 환경을 사용할 수 있으면서도 이런 문제를 피해가기 위해서는 아무래도 VIsual C++ 7.1 버전을 이용하는 것이 바람직할 것으로 보인다.
Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Visual C++ Debugger는 Breakpoint를 어떻게 감지해내는 것일까? 원리는 아주 간단하다. 어셈블리어를 공부해보신 분들이라면 인터럽트라고 하는 기능을 들어본 적이 있을 것이다. Breakpoint를 지정한 부분에 인터럽트 코드를 삽입하여 컴파일하는 것이다. 그렇다면 우리가 직접 Breakpoint를 코딩으로 구현하는 것도 가능하지 않을까? 가능하다!

__asm
{
   int 3
}

위와 같은 코드를 실행해보면 Visual C++ Debugger가 정확히 해당 위치에서 멈추는 것을 볼 수 있다. 그러면 위와 같은 코드 대신 좀 더 직관적인 코드를 만드는법은 없을까? 매크로 구문을 이용하면 된다. 단, 이와 같은 구문은 디버그 모드에 한정하여 쓰는 것이 좋겠다.

#define BREAKPOINT __asm \
{ \
   int 3 \
} \

inline void SetBreakPoint(void)
{
   #ifdef DEBUG
       BREAKPOINT
   #endif
}

위와 같이 코드를 작성하고 따로 헤더 파일로 분리해 놓은 다음 SetBreakPoint 함수만 원하는 곳에 걸어두기만 하면 된다. SetBreakPoint 안에서 걸리는게 아니냐고 묻는다면 걱정하지 않아도 된다. 왜냐면 inline 함수이기때문이다. 익히 알다시피 inline 함수는 Call Stack에 영향을 주지 않는 함수이다.

그리고 SetBreakPoint 함수를 릴리즈 모드에서 사용할 경우 아무것도 실행하지 않게된다. 그러므로 #ifdef ~ #endif 전처리기 구문을 굳이 써놓지 않더라도 무방하다.

출처: http://www.debuglab.com/knowledge/int3.html
Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://rkttu.com/rkttublog/rss/comment/30
  2. serialx 2006/12/12 14:24  편집/삭제  댓글 작성  댓글 주소

    오옹.. 재미있네. 이 기능을 쓰면 굳이 복잡한 VC 디버거 안배우고 조건에 따른 BP나 재미있는 응용이 가능할듯 ㅎㅎ

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다