다운로드: http://www.microsoft.com/downloads/details.aspx?familyid=1ff0b35d-0c4a-40b4-915a-5331e11c39e6&displaylang=en&tm

Visual Studio 2007 (코드네임: Orcas)의 2007년 1월 CTP가 MS 웹 사이트에서 배포 중입니다. Visual Studio 2005가 2005년 말에 나왔고 그로부터 1년 조금 넘게 걸려서 첫 소식이 나온 셈입니다.

아직 Visual Studio 2007은 Windows Vista와의 호환성은 고려하지 않고 배포 중인 것 같습니다. 기존 시스템에 영향을 주지 않고 테스트할 수 있도록 얼마전에 무료화된 Microsoft Virtual PC 2004와 무료 가상 서버 플랫폼인 Microsoft Virtual Server 2005 R2에서 돌려볼 수 있는 OS를 포함한 전체 가상 PC 이미지도 같이 제공하고 있습니다.

VIsual Studio 2007은 대강 이런 기능들을 새로 선보인다고 하네요.

* ADO .NET 엔티티 프레임워크
* LINQ와 완전히 통합된 ADO .NET API (LINQ는 프로그래밍 언어 수준에서 SQL과 유사한 질의를 사용할 수 있는 언어 확장 기술)
* 문서로만 떠돌던 C# 3.0을 처음으로 정리한 C# 3.0 컴파일러 및 IDE 내장
* LINQ 자체도 ADO .NET 외에 일반적인 컬렉션, 제네릭 컬렉션에 대해서 작동할 수 있도록 확장됨
* ClickOnce 기능의 업그레이드
* 강력한 암호화 기술을 위한 Elliptic Curve Diffie Hellman 및 Elliptic Curve Digital Signature Algorithm 구현 추가
* 오피스 2007 개발 지원
* 향상된 객체 수명 주기 관리 및 응용프로그램 도메인 관리 기능 추가
* ASP .NET을 위한 향상된 로그인/로그아웃/역할 모델 메카니즘 도입
* Windows Vista의 ETW 시스템과 연동되는 이벤트 추적 Listener 지원
* ASP.NET AJAX를 위한 확장된 JScript 인텔리센스 기능 구현
* System.Numeric 네임스페이스가 새로 추가되고 기존의 System.Int64 및 System.UInt64보다 훨씬 넓은 범위의 수를 다룰 수 있으며 이런 범위의 수에 대해 효율적으로 작동하는 전용 수학 알고리즘 대거 추가
* 이번 버전에 포함된 LINQ의 경우 특별히 XML에 관한 기능까지 사용할 수 있게 됨 (XML을 XPath 이외의 방법으로 질의하거나 데이터의 삽입 및 수정이 가능해짐)
* SSCE (SQL Server Compact Edition) 번들링

다운로드: http://www.microsoft.com/downloads/details.aspx?familyid=1ff0b35d-0c4a-40b4-915a-5331e11c39e6&displaylang=en&tm

VMware Workstation이나 VMware Player에서 아직 구동해보지는 않았습니다만 가상 PC 마이그레이션을 통하여 실행하는 것도 가능할 듯 싶습니다. :-)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

IDataReader 인터페이스는 Database Command 객체로부터 데이터 결과 집합을 반환받을 때 주로 사용하는 ExecuteReader 함수의 결과 객체이다. 하지만 이 객체는 "커서"의 개념을 사용하고 있어서 디버거에서 사용하기가 매우 불편하다. 내용을 한꺼번에 살펴볼 수 있는 방법이 없어서 디버거나 NUnit에서 불편했던 적이 많다. 이런 점을 해결하기 위해서 개인적으로 IDataReader 뷰어 폼을 만들어보았다. 참고로 이것은 Windows Forms를 위한 것이다.

public partial class DataReaderViewer : Form
    {
        public DataReaderViewer()
            : this(null)
        {
        }

        public DataReaderViewer(IDataReader oReader)
        {
            this.m_oReader = oReader;
            this.InitializeComponent();
        }

        private IDataReader m_oReader;

        private void DataReaderViewer_Load(object sender, EventArgs e)
        {
            this.RefreshDataView();
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public IDataReader Reader
        {
            get { return this.m_oReader; }
            set
            {
                this.m_oReader = value;
                this.RefreshDataView();
            }
        }

        public bool RefreshDataView()
        {
            if (this.m_oReader != null && !this.m_oReader.IsClosed)
            {
                DataTable oTable = new DataTable();
                oTable.Load(this.m_oReader);
                this.oViewer.DataSource = oTable;
                return true;
            }

            return false;
        }

        public static DialogResult ShowViewer(IDataReader oReader)
        {
            return (new DataReaderViewer(oReader)).ShowDialog();
        }
    }

위의 코드에서 oViewer라고 하는 이름의 컨트롤을 추가하여 디자인하는 것은 실제로 적용할 때의 몫이 되겠다. 하지만 개략적인 원리는 간단하며, 디버거에서 사용하기 편리하게 하기 위하여 ShowViewer라고 하는 정적 함수를 두었다. 또한, 필요하다면 네임스페이스를 따로 두지는 말자. 직접 실행창이나 디버거에서 네임스페이스를 인식할 수 업는 상황도 자주 오기 때문이다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)