Visual Studio 2008과 새로운 개념들

Visual Studio 2008과 새로운 개념들 나머지

2007/12/17 13:35

http://blog.naver.com/muscly/60045421800

[Visual C++ 2008]

http://msdn2.microsoft.com/en-us/library/bb384632(VS.90).aspx

 

# /MP 옵션이 빌드 시간을 감소 ( Build with Multiple Processes )

# UAC 정보가 메니페스트에 임베드됨

# /DYNAMICBASE 옵션. 비스타의 Address Space Layout Randomization 기능을 사용

      -> ASLR은, 이 블로그의 아래에 따로 정리했으니 참조.

# /Wp64 옵션과 __w64 키워드 없어짐. 대신 별도의 64비트용  컴파일러 사용. ( 귀찮게만 하고.. )

# C++도 클래스 디자이너 사용가능. 단 read-only.

# STL/CLR 라이브러리.  .NET에서도 STL 사용 가능

# 비스타 대응의 커먼 컨트롤

# 마샬링 라이브러리. 네이티브와 매니지드 사이의 데이타 전달에 사용. PInvoke의 대체용

# 매니지드 코드도 인크리멘탈 빌드 지원

# Intel Core 시리즈 지원한단 얘기인듯.

# Intrinsics 명령들이 최신의 AMD, Intel 프로세서의 지원.

      - Compiler Intrinsics.  memcpy()처럼 컴파일러가 함수를 호출하는 대신에,

         컴파일러가 함수의 어셈블리 코드를 직접 박아주는 류의 함수를 말한다.

# __cpuid 함수가 최신 AMD, Intel 프로세서를 지원.

       

[Visual C# 2008 (C# 3.0) ]

http://msdn2.microsoft.com/en-us/library/bb383815(VS.90).aspx

 

# var 키워드. 우변을 보고 알아서 변수의 타입을 맞춰준다. ( C++0x의 auto와 같은 듯 )

// i is compiled as an intvar i = 5;// s is compiled as a stringvar s = "Hello";

# 아래처럼 객체를 초기화 할 수 있다.

Cat cat = new Cat { Age = 10, Name = "Sylvester" };

# DB에서 쿼리 하듯이, 콜렉션에서 데이터를 뽑아내는 문법이 생겼다. (LINQ)

IEnumerable<int> highScoresQuery =    from score in scores    where score > 80    orderby score descending    select score;

# 기존 타입에 새 메소드를 추가할 수 있다. 기존 타입의 수정, 재컴파일, 상속없이 가능.

   아래는 String 클래스에 WordCount() 라는 메소드를 추가하는 예.

   this 키워드가 핵심이 되는 듯

namespace ExtensionMethods{    public static class MyExtensions    {        public static int WordCount(this String str)        {            return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;        }    }   }
string s = "Hello Extension Methods";int i = s.WordCount();

# 람다 표현이 가능. 유행인듯.

delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate(5); //j = 25

# 자동 구현되는 프로퍼티. 이제 귀찮게 프로퍼티 정의하고 또 변수 만들고 하지 않아도 된다.

class LightweightCustomer{    public double TotalPurchases { get; set; }    public string Name { get; private set; } // read-only    public int CustomerID { get; private set; } // read-only}

# 파샬 메소드 지원. 파샬 클래스의 한쪽에서 원형을 선언, 다른쪽에서 구현을 정의할 수 있다.

   구현을 정의하지 않아도, 컴파일 에러는 나지 않고, 해당 원형 및 함수 호출 코드는 자동 제거.

// Definition in file1.cspartial void onNameChanged();// Implementation in file2.cspartial void onNameChanged(){  // method body}

# /win32Manifest, /noWin32Manifest 컴파일러 스위치. 역시 비스타를 위한.

# 타겟으로 하는 .NET Framework 버전을 지정할 수 있다.

# WCF, WPF, Web 프로젝트 등을 위한 프로젝트 타입 및 템플릿 추가

# C# 3.0을 위한 IntelliSense 추가, 리펙토링 지원, 코드 포메팅 지원

# using 문 정리 지원. 안쓰이는 using을 제거하거나, 정렬하는 등의 기능 지원

      -> 안쓰이는 using 제거하는 것은 참으로 기대했던 기능 ^^

 

 

[Visual Studio 2008]

http://en.wikipedia.org/wiki/Visual_studio

 

.NET Framework 3.5 기반.

디버깅 중에 .NET Framework 3.5 BCL 소스코드와 디버그 심볼을 다운로드받고

그 안으로 디버깅 해 들어가는 것이 가능하다고 한다.

 

이것저것 추가 되었고. 맘에 드는 것은 다중스레드 디버깅 지원이 강화.

-> 스레드 창에 마우스 가져다 대면 콜스택을 보여준다.

-> 스레드에 이름을 붙이고 표시를 할 수 있다.

-> 코드 창에서 다른 스레드의 인스트럭션 포인트도 표시해준다.

 

[C++/CLI]

http://en.wikipedia.org/wiki/C%2B%2B/CLI

 

C++의 확장인 Managed C++ 을 대체하기 위한 언어.

VC++ 2005 부터 지원하기 시작했다.

__gc 같은 비표준 키워드 대신에 ^ 같은 핸들타입을 도입했다.

그냥 .NET을 타겟으로하는 C++은 Managed C++인줄만 알았는데

용어를 가려서 써야겠다.

 

[Address Space Layout Randomization in Windows Vista]

주소공간배치무작위화(?).

ASLR 이란 실행파일, 라이브러리, 힙, 스택 등의 기본주소가 매번 바뀌게 하는 보안 기술.

비스타에서도 구현했고, 레퍼드에서도 구현했는데 레퍼드의 구현은 욕먹는 듯.. ( 아래 링크 참조 )

       ( http://en.wikipedia.org/wiki/Address_space_layout_randomization)

 

비스타는 부팅할 때마다 시스템 코드가 메모리의 다른 영역에 위치한다.

비스타 베타 2의 경우 exe, dll은 256 개의 위치 중에 한 군데로 로드된다고.

"return-to-libc" 어택으로 socket(), LoadLibrary() 함수등을 호출하기가 어려워진단다.

 

간단한 설명 및 시큐러티 옵션들은 여기를.

http://blogs.msdn.com/michael_howard/archive/2006/05/26/608315.aspx

 

 

 

 

 

by 행복하자 | 2008/01/02 03:42 | 트랙백 | 덧글(0)

트랙백 주소 : http://hongsgo.egloos.com/tb/1677570
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶