SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
VISUAL STUDIO 2010 으로의
마이그레이션
김용현 DRVOSS@GMAIL.COM
WWW.YHKIM.COM
MICROSOFT MVP
2010-05-31
1
개발 프로세스와 결과물
2010-05-31
2
MOTIVATION
새로운 기능
• 클래스 위자드
문법 자동 완성 기능
개선된 기능
• 인텔리 센스
레이 인트
수정된 기능
• 컴파일러 버그 수정
향상된• 문법 자동 완성 기능
• 인텔리센스 라이브 에러
리포팅
• WPF를 이용한 UI 구성
• 브레이크 포인트
• 디버깅 기능
• Find and Replace
• Call Hierarchy
• 향상된 Add-in Support
• SQL Compact
Database를 이용한 인
텔리 센스 DB파일WPF를 이용한 UI 구성
• PPL
• 병열 스택 윈도우
• 병열 작업 디버그 윈도
우
Call Hierarchy
• 자주 사용하는 클래스의
임베딩
• 최신 윈도즈용 애플리케
이션 개발 지원
• 대용량 코드 지원
• 멀티 스레드 디버깅
• 덤프 파일 분석
우
• C++0x
• MSBuild
이션 개발 지원
• 최신 윈도즈에 VS가 잘
운영되도록 수정
• 브레이크 포인트 관리레이 인 관리
• 세밀한 빌드/링크 정보
2010-05-31
3
최신의 개발환경을 지원
2010-05-31
4
EMBEDDED CLASS -
SAFEINT
오버 플로우로 인한 오류를 방지하는 정수형 클래스
8bit 정수의 경우 200 + 100의 결과는 44
기계적으로 우아하게 이루어 지는 오버 플로우
#include <safeint.h>
i l tilitiusing namespace msl::utilities;
void foo()
{
SafeInt<unsigned int, _SAFEINT_DEFAULT_ERROR_POLICY> safeInt;
}}
2010-05-31
5
DEMO
최신 개발 환경 지원
Add-in : Go To Definition
데이터 피닝
DUMP파일
2010-05-31
6
MOTIVATION
새로운 개발툴이 출시되면
새로운 기능
소개와 수정
코드 및 라이
브러리 점검소개와 수정 브러리 점검
2010-05-31
7
AGENDA
Visual Studio 와 SDK
새로워진 Build System 소개
Multi Targeting
새로운 키워드
auto, static_assert, nullptr(__nullptr)
CRT 강제 종료 문구
트라이그래프
Library 배포 정책 변경b a y 배 정책 변경
2010-05-31
8
컴파일러와 SDK
Windows SDK for Visual Studio 2010
Windows SDK for Windows7
2010-05-31
9
BUILD SYSTEM
빌드 환경을 꾸미기에 제한적임
모든 빌드 과정은 커맨드 라인으로 기술 되어 컴파일러 바
이너리 내부적으로 처리.
개발툴의 버전마다 모두 다름
제품 개발툴 컴파일툴 업그레이드 긴급패치
app1.exe VS2003 VS2003 x o
2 VS200 VS200app2.exe VS2005 VS2005 x o
app3.exe VS2008 VS2008 o o
2010-05-31
10
BUILD SYSTEM
애플리케이션에 따라 빌드 환경을 꾸미기 위한 Visual Studio 혹은
Visual C++툴을 설치
프로젝트 파일(.vcproj)이 VS에 종속되어 있음.
크로스 컴파일이 안됨 (VS2005 <-/-> VS2008)
상위 버전의 VS에서 하위버전의 VS 프로젝트 파일을 여는 방법은
오로지 마이그레이션 위자드,
제품 개발툴 컴파일툴 업그레이드 긴급패치
app1.exe VS2003 VS2003 x o
app2 exe VS2005 VS2005 x oapp2.exe VS2005 VS2005 x o
app3.exe VS2008 VS2008 o o
2010-05-31
11
DEMO
변경된 프로젝트 파일
MSBuild
2010-05-31
12
MULTI TARGETING
멀티타겟팅
최신버전이 제공하는 IDE 및 코딩, 디버깅 환경을 이용
하위 호환의 바이너리 생성
다양한 플랫폼의 프로젝트를 섞어 사용
Visual Studio 2005에서 .NET 언어에 지원
Native 언어를 위한 멀티타겟팅
VS2010은 Windows 2000을 지원하지 않음. 그럼 어떻게?
2010-05-31
13
MULTI TARGETING
프로젝트 파일이 VS의 버전에 종속되지 않는 XML양식으로 변경
툴셋을 설정하여 범용적인 컴파일러를 선택하는 환경
새로운 프로젝트 파일을 참조하여 툴셋마다 다른 방법을 제공하는
빌드환경이 가능해짐
VS2010을 에디터로 사용하면서 컴파일러 멀티 타겟팅이 가능해짐
이전 VS를 풀로 설치할 필요 없이 컴파일러만 설치 하면 됨.
VS2010과 필요한 SDK 설치 만으로 많은 플랫폼 지원 가능
2010-05-31
14
MULTI TARGETING
Project -> Properties -> Configuration Properties -> General -
> Platform Toolset
플랫폼 툴셋 = 컴파일러 + 컴파일에 필요한 도구 + 라이브러리 + 헤
더파일 + 링커
IDE를 제외하고 바이너리를 생성하는데 필요한 전체 셋IDE를 제외하고 바이너리를 생성하는데 필요한 전체 셋
2010-05-31
15
MULTI TARGETING
지원하는 플랫폼
플랫폼 툴셋을 만들 수 있는 모든 환경 지원
VS2008, 2005… 2002… VC6… CE/Windows Mobile..
문제가 있을 경우 도움을 받으세요
“특정 버전의 플랫폼 툴셋을 구성하기 위해서 해당 Visual Studio
혹은 Visual C++을 모두 설치해야 하나요?”
VC6 : Platform SDK Feb. 2003
VS2008 : Windows SDK for Windows server 2008
VS2010 : Windows SDK for Windows7
2010-05-31
16
MULTI TARGETING
커스텀 컴파일러 설정
%PROGRAMFILES%MSBuildMicrosoft.Cppv4.0Platforms
Win32PlatformToolsets
Microsoft.Cpp.<Platform>.<PlatformToolset>.props
Microsoft.Cpp.Win32.v100.props
Microsoft.Cpp.Win32.v100.targets
기본 컴파일러 설정
%PROGRAMFILES%MSBuildMicrosoft.Cppv4.0Platforms
Win32Microsoft.Cpp.Win32.default.props
2010-05-31
17
NEW KEYWORD -
AUTO
기억 부류 지정자(Storage Class Specifier) : 일반적으로 선언자
앞에 쓰여 컴파일러에게 할당되는 공간의 존속시간과 가시성을 알
려주는 키워드려주는 키워드
auto, register, static, extern / mutable
auto
l l lif ti 을 가지는 t ti 변수local lifetime을 가지는automatic 변수
블록 안쪽에서만 유효하며 선언시 초기화를 해야 함.
2010-05-31
18
NEW KEYWORD -
AUTO
C++0x에서 auto는 기억 부류 지정자가 아닌 타입 연역자(Type
Deduction)로 키워드가 사용됨
타입 연역자 : 초기화 되는 값에 따라 변수의 타입이 정해지게 됨타입 연역자 : 초기화 되는 값에 따라 변수의 타입이 정해지게 됨.
템플릿의 이터레이터 선언이나 람다 표현식, 함수포인터등에 유연하게
사용됨
auto a = 1; // int
auto b = “abcd”; // basic_string<char>
auto c = new A(); // class A
t 를 타입 연역자가 아닌 기억 부류 지정자로 사용
auto c   new A(); // class A
auto를 타입 연역자가 아닌 기억 부류 지정자로 사용
Project -> Properties -> Configuration Properties ->
C/C++ -> Command Line에 /Zc:auto- 추가
2010-05-31
19
NEW KEYWORD –
STATIC_ASSERT
실행시점 이전인 컴파일 시점에 코드를 검증
템플릿의 구현체 코드를 정확하게 사용했는지 검증하는데 유용하게
사용
template<typename T>
b l C (T 1 T 2)bool Compare(T v1, T v2)
{
static_assert(std::tr1::is_integral<T>::value, "숫자가 아님");
return v1 > v2;
}}
2010-05-31
20
NEW KEYWORD –
NULLPTR, __NULLPTR
C++에선 없는 값을 표현하는 값이 존재하지 않았음.
델파이의 nil
#ifdef __cplusplus
#define NULL    0
#else
void foo(TCHAR const * str) {};
void main()
#else
#define NULL    ((void *)0)
#endif
{
foo(false);  // 컴파일 성공
foo(true); // 컴파일 실패
}
0이 특정 값이면 0xFFFFFFFF0이 특정 값이면 0
nullptr, __nullptr이 새로운 키워드로 추가
2010-05-31
21
그밖에,..
CRT 함수가 사용하는 힙 지정 __MSVCRT_HEAP_SELECT 환경
변수 제거
/OPT:WIN98, /OPT:NOWIN98 제거
삭제된 항목들은 대안이 없음.
2010-05-31
22
DEMO
변경 사항 검사
2010-05-31
23
CRT ABORT DIALOG
terminate(), abort()
애플리케이션에서 terminate가 호출됐다는 것은 종료가 의도
CRT의 종료 메시지는 불필요
만일, 종료 다이얼로그 및 메시지를 인식하는 UI테스트 코드와 같은
경우 변경이 필요
2010-05-31
24
TRIGRAPH
C코드는 7비트 ASCII에 포함된 문자로 구성되는 것이 표준
1983년에 지저오딘 83개의 문자를 가진 ISO 646-1983 문자셋 지원
83개의 문자를 벗어나는 문자는 별도의 방법을 통해 입력할 수 있도
록 트라이 그래프를 지원 및 인식
Visual C++ 컴파일러는 트라이 그래프를 지원
Trigraph Equivalent Trigraph Equivalent Trigraph Equivalent
??= # ??( [ ??< {
??/  ??) ] ??> }??/  ??) ] ??> }
??' ^ ??! | ??- ~
??=include <iostream> // #include<iostream>
id i ()void main()
??<
std::cout << "??/??/" << std::endl; // cout << "" << endl;
??>
2010-05-31
25
TRIGRAPH
잘 쓰이지 않는 지원에 따른 불편함이 존재
C4837 Warning
‘?’는 이스케이프 시퀀스로 ‘?’ 사용
TCHAR* str1 = TEXT("C:*.P??");
TCHAR* str2 = TEXT("Typ1 (*.p??)|*.p??|Typ2 (*.d??)|*.d??|Alle Dateien
(*.*)|*.*||");
CFileDialog FileDialog(TRUE, NULL, str1, OFN_FILEMUSTEXIST, str2, NULL);
Visual Studio 2010에서는 트라이그래프의 기본 옵션이 Disablesua Stud o 0 0에서는 라이 래 의 기본 옵션이 sab e
/Zc:trigraphs
2010-05-31
26
LIBRARY 배포 정책 –배 정책
LEGACY
지금까지의 Library 배포 정책은 격리된 응용 프로그램(Isolated
Application), Side-by-side로 요약됨
격리된 응용 프로그램 : manifests를 이용하여 private 어셈블리와,
shared 어셈블리를 애플리케이션의 manifest로 기술
Shared 어셈블리는 Side by side 어셈블리 형태로 설치 재배포 패Shared 어셈블리는 Side-by-side 어셈블리 형태로 설치. 재배포 패
키지를 이용.
Private 어셈블리는 실행파일과 함께 배포/설치 되고 해당 설치 프Private 어셈블리는 실행파일과 함께 배 /설치 되 해당 설치
로그램만을 위해 사용되는 어셈블리.
Shared 어셈블리 권장.
2010-05-31
27
LIBRARY 배포 정책 – SIDE-LIBRARY 배포 정책 SIDE
BY-SIDE ASSEMBLIES권장
Side-by-side 어셈블리는 DLL 버전이 충돌하는 것을 막아줌
다양한 버전의 COM이나 윈도즈 어셈블리가 실행 되도 side-by-
side 어셈블리를 공유함.
애플리케이션 제공 업체나 관리자는 Side-by-side 어셈블리를
publisher configuration file이나 per application configurationpublisher configuration file이나 per-application configuration
파일 생성/변경으로 업데이트 할 수 있다.
Side-by-side 어셈블리 업데이트 과정에서 반드시 재배포 패키지를Side by side 어셈블리 업데이 과정에서 반 시 재배 패키지를
설치하거나 제품을 다시 설치할 필요가 없다
2010-05-31
28
LIBRARY 배포 정책 – 어배 정책 어
셈블리 검색 순서
1. Side-by-side는 ko-kr 버전을 WinSxS에서 찾음.
2. c:myappko-krmyasm.dll
3. c:myappko-krmyasm.manifest
4. c:myappko-krmyasmmyasm.dll
5. c:myappko-krmyasmmyasm.manifest5. c:myappko krmyasmmyasm.manifest
6. Side-by-side는 ko 버전을 WinSxS에서 찾음.
7. c:myappkomyasm.dll
8. c:myappkomyasm.manifest
9. c:myappkomyasmmyasm.dll
10 c:myappkomyasmmyasm manifest10. c:myappkomyasmmyasm.manifest
11. Side-by-side는 en-us 버전을 WinSxS에서 찾음.
12. c:myappen-usmyasm.dll
13. c:myappen-usmyasm.manifest
14. c:myappen-usmyasmmyasm.dll
15 c:myappen usmyasmmyasm manifest15. c:myappen-usmyasmmyasm.manifest
16. Side-by-side는 en 버전을 WinSxS에서 찾음.
17. c:myappenmyasm.dll
18. c:myappenmyasm.manifest
19. c:myappenmyasmmyasm.dll
20     if t20. c:myappenmyasmmyasm.manifest
21. Side-by-side는 언어가 없는 버전의 라이브러리를 WinSxS에서 찾음.
22. c:myappmyasm.dll
23. c:myappmyasm.manifest
24. c:myappmyasmmyasm.dll
2010-05-31
29
25. c:myappmyasmmyasm.manifest
LIBRARY 배포 정책 –배 정책
LEGACY
<assembly xmlns="urn:schemas microsoft com:asm v1" manifestVersion="1 0"><assembly xmlns= urn:schemas-microsoft-com:asm.v1 manifestVersion= 1.0 >
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>q g
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1"
A hit t " 86" bli K T k "1f 8b3b9 1 18 3b"></ bl Id tit >processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8"y y yp
processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
서비스팩 설치 이후 라이브러리를 모두 재 컴파일, 바인딩 상수 선언
Static 빌드, policy 확인 또는 <이미지이름>.config의 bindingRedirect로 정책 변경
임의의 버전을 선택해서 메니페스트를 구성
2010-05-31
30
LIBRARY 배포 정책 –배 정책
LEGACY
“같은 폴더에 라이브러리가 있는데도 실행이 안되요”
“재배포 패키지를 삭제하니 애플리케이션이 실행되지 않아요”
“시키는 대로 다 했는데도 애플리케이션이 실행되지 않아요”
“클라이언트 PC의 정책 설정과 manifest설정이 어려워요”
2010-05-31
31
LIBRARY 배포 정책
중앙 배치
CentralCentral
Deployment
지역 배치
정적 링크
Local
Deployment
정적 링크
static linking
2010-05-31
32
LIBRARY 배포 정책
중앙 배포 : system32 폴더에 라이브러리들을 복사, system32안
에 들어 있기 때문에 윈도우 업데이트가 쉽게 찾을 수 있어 라이브러
리 업데이트가 용이 재배포 패키지나 머지 모듈을 통하여 배포리 업데이트가 용이. 재배포 패키지나 머지 모듈을 통하여 배포.
지역 배포 : 애플리케이션이 위치한 폴더에 라이브러리 파일들을 위
치 시키는 방식이며 간편하게 해당 애플리케이션만 적용. 중앙 배포
와의 차이점은 윈도 라이브러리를 통하여 업데이트를 하지 않는가
차이
정적 링크 애플리케이션 안쪽에 라이브러리를 포함정적 링크 : 애플리케이션 안쪽에 라이브러리를 포함.
2010-05-31
33
LIBRARY 배포 정책
Visual Studio 2010의 라이브러리는 Side-by-side 폴더에 생성되
지 않는다.
지역 배치 방식이 우선적임
OS 관련 라이브러리는 중앙 배포 우선
2010-05-31
34
궁금한 것이 있을 때 포럼을
http://social.msdn.microsoft.com/Forums/en-
US/category/visualc
2010-05-31
35
REFERENCE
Breaking Changes in Visual C++ - MSDN 라이브러리
http://msdn.microsoft.com/en-
us/library/bb531344(v=VS.100).aspx
Exploring New C++ and MFC Features in Visual Studio 2010 -
Sumit KumarSumit Kumar
http://msdn.microsoft.com/en-us/magazine/ee336130.aspx
D l t i Vi l C++ 2010Deployment in Visual C++ 2010
http://msdn.microsoft.com/en-
us/library/dd293574%28VS.100%29.aspxus/library/dd293574%28VS.100%29.aspx
2010-05-31
36

Contenu connexe

Tendances

테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)SangIn Choung
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기Kenneth Ceyer
 
Design pattern 옵저버
Design pattern 옵저버Design pattern 옵저버
Design pattern 옵저버Sukjin Yun
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙Hyosang Hong
 
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템강 민우
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Testbeom kyun choi
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드SangIn Choung
 
Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례SangIn Choung
 
시작하자 단위테스트
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트YongEun Choi
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2SeungHyun Hwang
 
오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례SangIn Choung
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 YoungSu Son
 

Tendances (17)

sdet수행 사례
sdet수행 사례sdet수행 사례
sdet수행 사례
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 
Design pattern 옵저버
Design pattern 옵저버Design pattern 옵저버
Design pattern 옵저버
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
 
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
 
Java 기초
Java 기초Java 기초
Java 기초
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드
 
Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례Io t에서의 소프트웨어단위테스트_접근사례
Io t에서의 소프트웨어단위테스트_접근사례
 
시작하자 단위테스트
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2
 
오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표
 

Similaire à S#03 김용현:VS2010으로 마이그레이션

Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기hanbeom Park
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅흥배 최
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#명신 김
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Eunbee Song
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
Windows Debugging Technique #3
Windows Debugging Technique #3Windows Debugging Technique #3
Windows Debugging Technique #3Wooseok Seo
 
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)Sang Don Kim
 
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장MinPa Lee
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7sung ki choi
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AILablup Inc.
 

Similaire à S#03 김용현:VS2010으로 마이그레이션 (20)

Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅
 
llvm 소개
llvm 소개llvm 소개
llvm 소개
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
Windows Debugging Technique #3
Windows Debugging Technique #3Windows Debugging Technique #3
Windows Debugging Technique #3
 
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
 
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 

S#03 김용현:VS2010으로 마이그레이션

  • 1. VISUAL STUDIO 2010 으로의 마이그레이션 김용현 DRVOSS@GMAIL.COM WWW.YHKIM.COM MICROSOFT MVP 2010-05-31 1
  • 3. MOTIVATION 새로운 기능 • 클래스 위자드 문법 자동 완성 기능 개선된 기능 • 인텔리 센스 레이 인트 수정된 기능 • 컴파일러 버그 수정 향상된• 문법 자동 완성 기능 • 인텔리센스 라이브 에러 리포팅 • WPF를 이용한 UI 구성 • 브레이크 포인트 • 디버깅 기능 • Find and Replace • Call Hierarchy • 향상된 Add-in Support • SQL Compact Database를 이용한 인 텔리 센스 DB파일WPF를 이용한 UI 구성 • PPL • 병열 스택 윈도우 • 병열 작업 디버그 윈도 우 Call Hierarchy • 자주 사용하는 클래스의 임베딩 • 최신 윈도즈용 애플리케 이션 개발 지원 • 대용량 코드 지원 • 멀티 스레드 디버깅 • 덤프 파일 분석 우 • C++0x • MSBuild 이션 개발 지원 • 최신 윈도즈에 VS가 잘 운영되도록 수정 • 브레이크 포인트 관리레이 인 관리 • 세밀한 빌드/링크 정보 2010-05-31 3
  • 5. EMBEDDED CLASS - SAFEINT 오버 플로우로 인한 오류를 방지하는 정수형 클래스 8bit 정수의 경우 200 + 100의 결과는 44 기계적으로 우아하게 이루어 지는 오버 플로우 #include <safeint.h> i l tilitiusing namespace msl::utilities; void foo() { SafeInt<unsigned int, _SAFEINT_DEFAULT_ERROR_POLICY> safeInt; }} 2010-05-31 5
  • 6. DEMO 최신 개발 환경 지원 Add-in : Go To Definition 데이터 피닝 DUMP파일 2010-05-31 6
  • 7. MOTIVATION 새로운 개발툴이 출시되면 새로운 기능 소개와 수정 코드 및 라이 브러리 점검소개와 수정 브러리 점검 2010-05-31 7
  • 8. AGENDA Visual Studio 와 SDK 새로워진 Build System 소개 Multi Targeting 새로운 키워드 auto, static_assert, nullptr(__nullptr) CRT 강제 종료 문구 트라이그래프 Library 배포 정책 변경b a y 배 정책 변경 2010-05-31 8
  • 9. 컴파일러와 SDK Windows SDK for Visual Studio 2010 Windows SDK for Windows7 2010-05-31 9
  • 10. BUILD SYSTEM 빌드 환경을 꾸미기에 제한적임 모든 빌드 과정은 커맨드 라인으로 기술 되어 컴파일러 바 이너리 내부적으로 처리. 개발툴의 버전마다 모두 다름 제품 개발툴 컴파일툴 업그레이드 긴급패치 app1.exe VS2003 VS2003 x o 2 VS200 VS200app2.exe VS2005 VS2005 x o app3.exe VS2008 VS2008 o o 2010-05-31 10
  • 11. BUILD SYSTEM 애플리케이션에 따라 빌드 환경을 꾸미기 위한 Visual Studio 혹은 Visual C++툴을 설치 프로젝트 파일(.vcproj)이 VS에 종속되어 있음. 크로스 컴파일이 안됨 (VS2005 <-/-> VS2008) 상위 버전의 VS에서 하위버전의 VS 프로젝트 파일을 여는 방법은 오로지 마이그레이션 위자드, 제품 개발툴 컴파일툴 업그레이드 긴급패치 app1.exe VS2003 VS2003 x o app2 exe VS2005 VS2005 x oapp2.exe VS2005 VS2005 x o app3.exe VS2008 VS2008 o o 2010-05-31 11
  • 13. MULTI TARGETING 멀티타겟팅 최신버전이 제공하는 IDE 및 코딩, 디버깅 환경을 이용 하위 호환의 바이너리 생성 다양한 플랫폼의 프로젝트를 섞어 사용 Visual Studio 2005에서 .NET 언어에 지원 Native 언어를 위한 멀티타겟팅 VS2010은 Windows 2000을 지원하지 않음. 그럼 어떻게? 2010-05-31 13
  • 14. MULTI TARGETING 프로젝트 파일이 VS의 버전에 종속되지 않는 XML양식으로 변경 툴셋을 설정하여 범용적인 컴파일러를 선택하는 환경 새로운 프로젝트 파일을 참조하여 툴셋마다 다른 방법을 제공하는 빌드환경이 가능해짐 VS2010을 에디터로 사용하면서 컴파일러 멀티 타겟팅이 가능해짐 이전 VS를 풀로 설치할 필요 없이 컴파일러만 설치 하면 됨. VS2010과 필요한 SDK 설치 만으로 많은 플랫폼 지원 가능 2010-05-31 14
  • 15. MULTI TARGETING Project -> Properties -> Configuration Properties -> General - > Platform Toolset 플랫폼 툴셋 = 컴파일러 + 컴파일에 필요한 도구 + 라이브러리 + 헤 더파일 + 링커 IDE를 제외하고 바이너리를 생성하는데 필요한 전체 셋IDE를 제외하고 바이너리를 생성하는데 필요한 전체 셋 2010-05-31 15
  • 16. MULTI TARGETING 지원하는 플랫폼 플랫폼 툴셋을 만들 수 있는 모든 환경 지원 VS2008, 2005… 2002… VC6… CE/Windows Mobile.. 문제가 있을 경우 도움을 받으세요 “특정 버전의 플랫폼 툴셋을 구성하기 위해서 해당 Visual Studio 혹은 Visual C++을 모두 설치해야 하나요?” VC6 : Platform SDK Feb. 2003 VS2008 : Windows SDK for Windows server 2008 VS2010 : Windows SDK for Windows7 2010-05-31 16
  • 17. MULTI TARGETING 커스텀 컴파일러 설정 %PROGRAMFILES%MSBuildMicrosoft.Cppv4.0Platforms Win32PlatformToolsets Microsoft.Cpp.<Platform>.<PlatformToolset>.props Microsoft.Cpp.Win32.v100.props Microsoft.Cpp.Win32.v100.targets 기본 컴파일러 설정 %PROGRAMFILES%MSBuildMicrosoft.Cppv4.0Platforms Win32Microsoft.Cpp.Win32.default.props 2010-05-31 17
  • 18. NEW KEYWORD - AUTO 기억 부류 지정자(Storage Class Specifier) : 일반적으로 선언자 앞에 쓰여 컴파일러에게 할당되는 공간의 존속시간과 가시성을 알 려주는 키워드려주는 키워드 auto, register, static, extern / mutable auto l l lif ti 을 가지는 t ti 변수local lifetime을 가지는automatic 변수 블록 안쪽에서만 유효하며 선언시 초기화를 해야 함. 2010-05-31 18
  • 19. NEW KEYWORD - AUTO C++0x에서 auto는 기억 부류 지정자가 아닌 타입 연역자(Type Deduction)로 키워드가 사용됨 타입 연역자 : 초기화 되는 값에 따라 변수의 타입이 정해지게 됨타입 연역자 : 초기화 되는 값에 따라 변수의 타입이 정해지게 됨. 템플릿의 이터레이터 선언이나 람다 표현식, 함수포인터등에 유연하게 사용됨 auto a = 1; // int auto b = “abcd”; // basic_string<char> auto c = new A(); // class A t 를 타입 연역자가 아닌 기억 부류 지정자로 사용 auto c   new A(); // class A auto를 타입 연역자가 아닌 기억 부류 지정자로 사용 Project -> Properties -> Configuration Properties -> C/C++ -> Command Line에 /Zc:auto- 추가 2010-05-31 19
  • 20. NEW KEYWORD – STATIC_ASSERT 실행시점 이전인 컴파일 시점에 코드를 검증 템플릿의 구현체 코드를 정확하게 사용했는지 검증하는데 유용하게 사용 template<typename T> b l C (T 1 T 2)bool Compare(T v1, T v2) { static_assert(std::tr1::is_integral<T>::value, "숫자가 아님"); return v1 > v2; }} 2010-05-31 20
  • 21. NEW KEYWORD – NULLPTR, __NULLPTR C++에선 없는 값을 표현하는 값이 존재하지 않았음. 델파이의 nil #ifdef __cplusplus #define NULL    0 #else void foo(TCHAR const * str) {}; void main() #else #define NULL    ((void *)0) #endif { foo(false);  // 컴파일 성공 foo(true); // 컴파일 실패 } 0이 특정 값이면 0xFFFFFFFF0이 특정 값이면 0 nullptr, __nullptr이 새로운 키워드로 추가 2010-05-31 21
  • 22. 그밖에,.. CRT 함수가 사용하는 힙 지정 __MSVCRT_HEAP_SELECT 환경 변수 제거 /OPT:WIN98, /OPT:NOWIN98 제거 삭제된 항목들은 대안이 없음. 2010-05-31 22
  • 24. CRT ABORT DIALOG terminate(), abort() 애플리케이션에서 terminate가 호출됐다는 것은 종료가 의도 CRT의 종료 메시지는 불필요 만일, 종료 다이얼로그 및 메시지를 인식하는 UI테스트 코드와 같은 경우 변경이 필요 2010-05-31 24
  • 25. TRIGRAPH C코드는 7비트 ASCII에 포함된 문자로 구성되는 것이 표준 1983년에 지저오딘 83개의 문자를 가진 ISO 646-1983 문자셋 지원 83개의 문자를 벗어나는 문자는 별도의 방법을 통해 입력할 수 있도 록 트라이 그래프를 지원 및 인식 Visual C++ 컴파일러는 트라이 그래프를 지원 Trigraph Equivalent Trigraph Equivalent Trigraph Equivalent ??= # ??( [ ??< { ??/ ??) ] ??> }??/ ??) ] ??> } ??' ^ ??! | ??- ~ ??=include <iostream> // #include<iostream> id i ()void main() ??< std::cout << "??/??/" << std::endl; // cout << "" << endl; ??> 2010-05-31 25
  • 26. TRIGRAPH 잘 쓰이지 않는 지원에 따른 불편함이 존재 C4837 Warning ‘?’는 이스케이프 시퀀스로 ‘?’ 사용 TCHAR* str1 = TEXT("C:*.P??"); TCHAR* str2 = TEXT("Typ1 (*.p??)|*.p??|Typ2 (*.d??)|*.d??|Alle Dateien (*.*)|*.*||"); CFileDialog FileDialog(TRUE, NULL, str1, OFN_FILEMUSTEXIST, str2, NULL); Visual Studio 2010에서는 트라이그래프의 기본 옵션이 Disablesua Stud o 0 0에서는 라이 래 의 기본 옵션이 sab e /Zc:trigraphs 2010-05-31 26
  • 27. LIBRARY 배포 정책 –배 정책 LEGACY 지금까지의 Library 배포 정책은 격리된 응용 프로그램(Isolated Application), Side-by-side로 요약됨 격리된 응용 프로그램 : manifests를 이용하여 private 어셈블리와, shared 어셈블리를 애플리케이션의 manifest로 기술 Shared 어셈블리는 Side by side 어셈블리 형태로 설치 재배포 패Shared 어셈블리는 Side-by-side 어셈블리 형태로 설치. 재배포 패 키지를 이용. Private 어셈블리는 실행파일과 함께 배포/설치 되고 해당 설치 프Private 어셈블리는 실행파일과 함께 배 /설치 되 해당 설치 로그램만을 위해 사용되는 어셈블리. Shared 어셈블리 권장. 2010-05-31 27
  • 28. LIBRARY 배포 정책 – SIDE-LIBRARY 배포 정책 SIDE BY-SIDE ASSEMBLIES권장 Side-by-side 어셈블리는 DLL 버전이 충돌하는 것을 막아줌 다양한 버전의 COM이나 윈도즈 어셈블리가 실행 되도 side-by- side 어셈블리를 공유함. 애플리케이션 제공 업체나 관리자는 Side-by-side 어셈블리를 publisher configuration file이나 per application configurationpublisher configuration file이나 per-application configuration 파일 생성/변경으로 업데이트 할 수 있다. Side-by-side 어셈블리 업데이트 과정에서 반드시 재배포 패키지를Side by side 어셈블리 업데이 과정에서 반 시 재배 패키지를 설치하거나 제품을 다시 설치할 필요가 없다 2010-05-31 28
  • 29. LIBRARY 배포 정책 – 어배 정책 어 셈블리 검색 순서 1. Side-by-side는 ko-kr 버전을 WinSxS에서 찾음. 2. c:myappko-krmyasm.dll 3. c:myappko-krmyasm.manifest 4. c:myappko-krmyasmmyasm.dll 5. c:myappko-krmyasmmyasm.manifest5. c:myappko krmyasmmyasm.manifest 6. Side-by-side는 ko 버전을 WinSxS에서 찾음. 7. c:myappkomyasm.dll 8. c:myappkomyasm.manifest 9. c:myappkomyasmmyasm.dll 10 c:myappkomyasmmyasm manifest10. c:myappkomyasmmyasm.manifest 11. Side-by-side는 en-us 버전을 WinSxS에서 찾음. 12. c:myappen-usmyasm.dll 13. c:myappen-usmyasm.manifest 14. c:myappen-usmyasmmyasm.dll 15 c:myappen usmyasmmyasm manifest15. c:myappen-usmyasmmyasm.manifest 16. Side-by-side는 en 버전을 WinSxS에서 찾음. 17. c:myappenmyasm.dll 18. c:myappenmyasm.manifest 19. c:myappenmyasmmyasm.dll 20 if t20. c:myappenmyasmmyasm.manifest 21. Side-by-side는 언어가 없는 버전의 라이브러리를 WinSxS에서 찾음. 22. c:myappmyasm.dll 23. c:myappmyasm.manifest 24. c:myappmyasmmyasm.dll 2010-05-31 29 25. c:myappmyasmmyasm.manifest
  • 30. LIBRARY 배포 정책 –배 정책 LEGACY <assembly xmlns="urn:schemas microsoft com:asm v1" manifestVersion="1 0"><assembly xmlns= urn:schemas-microsoft-com:asm.v1 manifestVersion= 1.0 > <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges>q g </security> </trustInfo> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" A hit t " 86" bli K T k "1f 8b3b9 1 18 3b"></ bl Id tit >processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8"y y yp processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> </assembly> 서비스팩 설치 이후 라이브러리를 모두 재 컴파일, 바인딩 상수 선언 Static 빌드, policy 확인 또는 <이미지이름>.config의 bindingRedirect로 정책 변경 임의의 버전을 선택해서 메니페스트를 구성 2010-05-31 30
  • 31. LIBRARY 배포 정책 –배 정책 LEGACY “같은 폴더에 라이브러리가 있는데도 실행이 안되요” “재배포 패키지를 삭제하니 애플리케이션이 실행되지 않아요” “시키는 대로 다 했는데도 애플리케이션이 실행되지 않아요” “클라이언트 PC의 정책 설정과 manifest설정이 어려워요” 2010-05-31 31
  • 32. LIBRARY 배포 정책 중앙 배치 CentralCentral Deployment 지역 배치 정적 링크 Local Deployment 정적 링크 static linking 2010-05-31 32
  • 33. LIBRARY 배포 정책 중앙 배포 : system32 폴더에 라이브러리들을 복사, system32안 에 들어 있기 때문에 윈도우 업데이트가 쉽게 찾을 수 있어 라이브러 리 업데이트가 용이 재배포 패키지나 머지 모듈을 통하여 배포리 업데이트가 용이. 재배포 패키지나 머지 모듈을 통하여 배포. 지역 배포 : 애플리케이션이 위치한 폴더에 라이브러리 파일들을 위 치 시키는 방식이며 간편하게 해당 애플리케이션만 적용. 중앙 배포 와의 차이점은 윈도 라이브러리를 통하여 업데이트를 하지 않는가 차이 정적 링크 애플리케이션 안쪽에 라이브러리를 포함정적 링크 : 애플리케이션 안쪽에 라이브러리를 포함. 2010-05-31 33
  • 34. LIBRARY 배포 정책 Visual Studio 2010의 라이브러리는 Side-by-side 폴더에 생성되 지 않는다. 지역 배치 방식이 우선적임 OS 관련 라이브러리는 중앙 배포 우선 2010-05-31 34
  • 35. 궁금한 것이 있을 때 포럼을 http://social.msdn.microsoft.com/Forums/en- US/category/visualc 2010-05-31 35
  • 36. REFERENCE Breaking Changes in Visual C++ - MSDN 라이브러리 http://msdn.microsoft.com/en- us/library/bb531344(v=VS.100).aspx Exploring New C++ and MFC Features in Visual Studio 2010 - Sumit KumarSumit Kumar http://msdn.microsoft.com/en-us/magazine/ee336130.aspx D l t i Vi l C++ 2010Deployment in Visual C++ 2010 http://msdn.microsoft.com/en- us/library/dd293574%28VS.100%29.aspxus/library/dd293574%28VS.100%29.aspx 2010-05-31 36