2008년 01월 02일
Visual Studio 2008과 새로운 개념들
Visual Studio 2008과 새로운 개념들 2007/12/17 13:35 |
[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)

















☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]