Microsoft MVP성태의 닷넷 이야기
VS.NET IDE: 44. Orcas와 VS.NET 2005의 혼합 개발 [링크 복사], [링크+제목 복사],
조회: 22414
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 4개 있습니다.)

Orcas와 VS.NET 2005의 혼합 개발


Orcas의 특징 중 하나가, 바로 대상이 되는 ".NET Framework"의 버전을 지정할 수 있다는 것입니다. 반가운 소식이죠? ^^

그런데, 현재 팀 개발을 하고 있는 경우라면 어떨까요?

다른 팀원들은 VS.NET 2005를 사용하는데, 자신만 Orcas로 업그레이드 하는 것이 가능할까요? 사실, 최근의 개발 환경에서 Visual SourceSafe 또는 TFS Version Control(또는 그 외의 3rd-party 형상관리 시스템)을 사용하는 것이 보통인데... 실제 프로젝트 중에 개인의 관심사를 이유로 Orcas로 업데이트 한다면??? 물론, 모든 팀원이 다 같이 업데이트한다면 문제 없겠지만, 그렇지 않은 경우가 더 많을 것입니다. 사실, 이 때문에 새로운 개발 환경을 포기하고 어쩔 수 없이 VS.NET 2005를 써야만 하지요.

그런데... 가만 생각해 보면, 왠지 가능할 것도 같습니다. .NET 2.0/3.0는 VS.NET 2005에서 동일하게 개발이 가능하고, 3.5의 경우에는 컴파일러와 부가적인 어셈블리가 추가된 정도입니다. 또한 프로젝트 파일이 XML 형식의 MSBuild 파일이기 때문에 왠지 개발 툴에 의존적일 것 같진 않습니다.

어디... 정말 되는지 한번 볼까요? ^^




예제를 간단히 하기 위해, 여기서는 Visual SourceSafe를 대상으로 Console Application 유형으로 테스트해 보겠습니다.

그렇다면 우선 할 일은, Visual SourceSafe에 VS.NET 2005를 이용해서 솔루션과 예제 프로젝트를 만들어서 올려 놓아야 겠습니다. 저 같은 경우에는 다음과 같이 올려 두었습니다.

vs_net2005_orcas_mixed_solution_1.png

그러니까, VSNet2005.sln 파일과 그 이하 ConsoleApplication1 프로젝트는 VS.NET 2005로 만들어진 것입니다.

자,,, 그럼 이 프로젝트를 저는 Orcas로 열고 싶고, 그러면서도 다른 사람들이 VS.NET 2005로 작업하는 데에는 지장을 주고 싶지 않은 상황임을 상기해서.

절대로, VSNet2005.sln 파일을 직접 Orcas로 열어서는 안됩니다. (사실, 나중에 보시면 알겠지만 설령 실수로 열었다고 해도 쉽게 VS.NET 2005용으로 변환할 수 있습니다.) 대신에 새로운 솔루션 파일을 Orcas에서 생성해서, 기존 프로젝트를 새로 구성해 주면 됩니다. 하지만, 해당 솔루션에 기존 프로젝트들이 간단하게 하나만 있는 경우는 드물고 여러 솔루션 폴더 및 프로젝트들이 있으므로 그런 것들을 직접 구성해 주는 것은 다소 귀찮은 작업이므로 간단하게 해결할 수 있는 방법을 찾아보았습니다.

방법은,,, 간단하죠. 기존 솔루션 파일을 복사한 후 새로운 Orcas 버전에 맞는 솔루션으로 수정만 해주면 됩니다.

그러니, 위의 "VSNet2005.sln" 파일을 복사해서 별도로 "VSNet2007.sln" 파일명으로 만들어 둡니다. 이제 VSNet2007.sln 파일을 메모장 등을 이용해서 열면 다음과 같은 파일 내용을 볼 수 있습니다.

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApplication1", "ConsoleApplication1\ConsoleApplication1.csproj", "{CED25172-E1A7-43DD-A718-22F14B714CED}"
EndProject
Global
  GlobalSection(SourceCodeControl) = preSolution
    SccNumberOfProjects = 2
    SccLocalPath0 = .
    SccProjectUniqueName1 = ConsoleApplication1\\ConsoleApplication1.csproj
    SccLocalPath1 = .
    SccProjectFilePathRelativizedFromConnection1 = ConsoleApplication1\\
  EndGlobalSection
  GlobalSection(SolutionConfigurationPlatforms) = preSolution
    Debug|Any CPU = Debug|Any CPU
    Release|Any CPU = Release|Any CPU
  EndGlobalSection
  GlobalSection(ProjectConfigurationPlatforms) = postSolution
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Debug|Any CPU.Build.0 = Debug|Any CPU
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Release|Any CPU.ActiveCfg = Release|Any CPU
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Release|Any CPU.Build.0 = Release|Any CPU
  EndGlobalSection
  GlobalSection(SolutionProperties) = preSolution
    HideSolutionNode = FALSE
  EndGlobalSection
EndGlobal

수정할 부분은 간단합니다. 버전 기록 부분과 소스 세이프에 연결되었다는 값들을 제거해 주면 됩니다. 위에서 "굵은 글씨"로 되어 있는 부분들을 삭제/변경해서 다음과 같은 파일 내용으로 만들어 줍니다.

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApplication1", "ConsoleApplication1\ConsoleApplication1.csproj", "{CED25172-E1A7-43DD-A718-22F14B714CED}"
EndProject
Global
  GlobalSection(SolutionConfigurationPlatforms) = preSolution
    Debug|Any CPU = Debug|Any CPU
    Release|Any CPU = Release|Any CPU
  EndGlobalSection
  GlobalSection(ProjectConfigurationPlatforms) = postSolution
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Debug|Any CPU.Build.0 = Debug|Any CPU
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Release|Any CPU.ActiveCfg = Release|Any CPU
    {CED25172-E1A7-43DD-A718-22F14B714CED}.Release|Any CPU.Build.0 = Release|Any CPU
  EndGlobalSection
  GlobalSection(SolutionProperties) = preSolution
    HideSolutionNode = FALSE
  EndGlobalSection
EndGlobal

자, 이제 이 솔루션을 Orcas에서 열면, 솔루션 내에 포함된 프로젝트들을(예제에서는 ConsoleApplication1.csproj) 대상으로 새로운 Orcas 버전으로 변환이 이뤄집니다. 걱정하지 마시고, 변환하십시오. (중간에 경고가 떨어지긴 하지만 무시하십시오.)

그렇게 되면 Orcas에서의 솔루션 탐색기에서는 다음과 같은 내용을 볼 수 있습니다.

vs_net2005_orcas_mixed_solution_2.png

일단 솔루션 파일은 임의로 생성한 것이므로 "자물쇠" 아이콘이 안 보이는 것은 당연하고, ConsoleApplication1 프로젝트의 경우에도 기존 파일 내용이 Orcas용으로 바뀌었기 때문에 강제로 체크아웃되어진 상태입니다.

어떤 부분이 바뀌었을까요? MSBuild의 구조상, 확장이 용이하기 때문에 다음과 같은 내용이 바뀌었음에도 불구하고 여전히 해당 MSBuild 프로젝트 파일, 즉 ConsoleApplication1.csproj 파일은 VS.NET 2005에서도 열릴 수 있고, Orcas에서도 열릴 수 있습니다.

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
==> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
      ToolsVersion="3.5">

물론, Orcas에서만 설정이 가능한 프로젝트 설정이 있다 해도, <PropertyGroup /> 태그의 별도 자식 태그로만 존재할 뿐이기 때문에 VS.NET 2005에서는 해당 값을 무시함으로 인해 아무런 문제도 발생하지 않게 됩니다.

자... 그럼, 이제 마무리를 해줘야죠. 다음 화면에서 보는 것처럼, Solution 노드를 오른쪽 마우스 버튼으로 클릭해서 새롭게 구성된 솔루션 파일도 마저 Visual SourceSafe에 추가시켜 둡니다.

[그림: 소스 세이프에 추가]
vs_net2005_orcas_mixed_solution_3.png

기왕이면, 이때 경로 설정을 다음 화면과 같이 기존 솔루션이 담겨져 있는 소스세이프 경로와 동일하게 맞춰주면 더 좋겠지요.

[그림: 소스 세이프 경로 설정]

vs_net2005_orcas_mixed_solution_4.png

최종적으로 소스 세이프에는 다음과 같이 2개의 솔루션 파일이 존재하게 됩니다.

vs_net2005_orcas_mixed_solution_5.png

자... 이제 모두 끝났습니다. 다른 팀원들은 여전히 VSNet2005.sln 파일을 이용해서 VS.NET 2005로 작업을 할 수 있고, Orcas를 설치한 팀원들은 새롭게 VSNet2007.sln 파일을 이용해서 프로젝트를 계속 진행할 수 있습니다.






[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/22/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2007-11-07 06시13분
kevin25

... 181  182  183  184  185  186  187  188  189  190  191  192  [193]  194  195  ...
NoWriterDateCnt.TitleFile(s)
115정성태3/13/200517695VS.NET IDE: 25. [IIS 서버] ODBC 로그 남기기 [1]
195정성태12/21/200516953    답변글 VC++: 25.1. ODBC 로그를 못 남길 때의 오류 화면
113정성태3/13/200517703VS.NET IDE: 24. [VPC] 타이머 동기화 기능 제거
110정성태11/14/200516635.NET Framework: 28. VS.NET 2005 / SQL Server 2005 베타 버전 재설치 또는 업그레이드 [1]
111정성태3/7/200515462    답변글 VS.NET IDE: 28.1. [추가] SQL 2005 / VS.NET 2005 2005-02 CTP 버전이 올라왔네요. [1]
112정성태11/14/200516728        답변글 VS.NET IDE: 28.2. [추가] VS.NET 2005 2005-02 CTP 버전에서 달라진 점 ( VC++ )
127정성태3/29/200514771        답변글 VS.NET IDE: 28.4. [추가] SQL 2005 2005-02 CTP 버전에서 달라진 점
123정성태3/25/200518644    답변글 .NET Framework: 28.3. Uninstalling software without using Add Remove Programs...
108정성태3/4/200518083.NET Framework: 27. 시스템 이벤트 로그에 쌓이는 {00020906-0000-0000-C000-000000000046} 보안에러
107정성태3/1/200518337COM 개체 관련: 15. COM: Control 유형인 경우, IObjectWithSite 를 구현해도 SetSite/GetSite 가 호출이 안됨
106정성태2/28/200517655COM 개체 관련: 14. 탐색기 "처럼" 파일 열기
105정성태2/28/200516718.NET Framework: 26. VS.NET 2005 : 설치 프로젝트 - .NET Framework 설치 강제화
139정성태11/14/200514943    답변글 .NET Framework: 26.1. ^^ 역시, 배려가 되어 있네요. 제가 못 찾은 것이었습니다.
104정성태2/27/200517630VS.NET IDE: 23. MSI 설치 중에 GetLocalTime / GetSystemTime API 사용
132정성태3/30/200517265    답변글 VS.NET IDE: 23.1. [추가]: MSI 설치 동작 원리
102정성태2/16/200519920.NET Framework: 25. Verify that you are a member of the 'Debugger Users' group on the server. [2]
101정성태2/15/200517678.NET Framework: 24. WMI Win32_NTLogEvent 관리 이벤트를 Windows 2000 에서는 "Access Denied" 가 발생하는 문제파일 다운로드1
100정성태2/15/200523755VS.NET IDE: 22. 방화벽 환경에서의 WMI 연결을 위한 포트 설정 [2]
99정성태2/15/200521692COM 개체 관련: 13. 비동기 Drag & Drop 구현 : IAsyncOperation
103정성태2/23/200517927    답변글 COM 개체 관련: 13.1. [관련 자료] 그외 Drag & Drop 링크파일 다운로드1
97정성태2/14/200520874VS.NET IDE: 21. 설치된 Platform SDK 버전확인 방법
96정성태2/14/200522877기타: 9. http://www.google.com/webhp?complete=1&hl=en 검색에 관해서.
95정성태2/14/200532218VS.NET IDE: 20. Win32 특권 정리 [1]
94정성태1/29/200523524VC++: 13. VS.NET 2005 VC++ 컴파일러 에러 : cannot instantiate abstract class
93정성태1/29/200519405VS.NET IDE: 19. 혹시 VS.NET 2005 Beta2(2004/12 CTP Team System 버전)이 다운이 자주 되나요? [2]
92정성태1/29/200518219.NET Framework: 23. Unmanaged 환경에서 Managed DLL에 정의된 메서드 호출 시 오류 확인하는 방법
... 181  182  183  184  185  186  187  188  189  190  191  192  [193]  194  195  ...