Microsoft MVP성태의 닷넷 이야기
VS.NET IDE: 44. Orcas와 VS.NET 2005의 혼합 개발 [링크 복사], [링크+제목 복사],
조회: 22411
글쓴 사람
정성태 (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

... 136  [137]  138  139  140  141  142  143  144  145  146  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1630정성태2/5/201422808개발 환경 구성: 216. Hyper-V에 올려진 윈도우 XP VM에서 24bit 컬러 및 ClearType 활성화하는 방법
1629정성태2/5/201432629개발 환경 구성: 215. DOS batch - 하나의 .bat 파일에서 다중 .bat 파일을 (비동기로) 실행하는 방법 [1]
1628정성태2/4/201433952Windows: 87. 윈도우 8.1에서 .NET 3.5 설치가 안된다면? [2]
1627정성태2/4/201429011개발 환경 구성: 214. SQL Server Reporting Services를 이용해 간단한 리포트 제작하는 방법
1626정성태2/4/201421021Windows: 86. 윈도우 8.1의 Skydrive 내용이 동기화가 안된다면?
1625정성태2/2/201428194.NET Framework: 422. C++과 C#의 Event 공유파일 다운로드1
1624정성태2/2/201423806.NET Framework: 421. ASP.NET에서 Server.CreateObject와 COM Interop 클래스 생성의 차이점
1623정성태2/1/201428545개발 환경 구성: 213. x86/x64별로 나뉘어진 어셈블리를 한 프로젝트에서 참조하는 방법 [1]파일 다운로드1
1622정성태1/31/201429008VC++: 74. 어떤 것을 쓰면 좋을까요? wvnsprintf, _vsnwprintf_s, StringCbVPrintfW [4]
1621정성태1/31/201420846.NET Framework: 420. 베트남의 11학년(한국의 고2)이 45분만에 푼다는 알고리즘 문제파일 다운로드1
1620정성태1/30/201430661.NET Framework: 419. C# - BigDecimal파일 다운로드1
1619정성태1/30/201427392VS.NET IDE: 85. T4를 이용한 INotifyPropertyChanged 코드 자동 생성파일 다운로드1
1618정성태1/29/201443104Linux: 2. 우분투에서 Active Directory 계정을 이용한 파일 공유
1617정성태1/29/201424224.NET Framework: 418. Thread.Abort 호출의 hang 현상 [1]
1616정성태1/29/201424895디버깅 기술: 63. windbg 디버깅 사례: AppDomain 간의 static 변수 사용으로 인한 crash
1615정성태1/29/201426850.NET Framework: 417. WPF WebBrowser 컨트롤에서 SHDocVw.IWebBrowser2 인터페이스를 구하는 방법 및 순수 WPF 웹 브라우저 컨트롤 소개
1614정성태1/29/201423801.NET Framework: 416. System.Net.Sockets.NetworkStream이 Thread-safe할까?파일 다운로드1
1613정성태1/29/201425793.NET Framework: 415. IIS 작업자 프로세스 재생(recycle)하는 방법 [1]
1612정성태1/29/201422568오류 유형: 219. IIS 500 Internal Server Error - Skydrive에 공유된 경우
1611정성태1/27/201453980.NET Framework: 414. C# - 컴퓨터에서 알아낼 수 있는 고윳값 정리 [3]파일 다운로드1
1610정성태1/26/201437913.NET Framework: 413. C# - chromiumembedded 사용 [11]파일 다운로드1
1609정성태1/26/201420954오류 유형: 218. wsDualHttpBinding + Windows Server 2003인 경우 발생하는 오류
1608정성태1/26/201426244.NET Framework: 412. HttpContext.Current를 통해 이해하는 CallContext와 ExecutionContext [4]
1607정성태1/26/201426164.NET Framework: 411. 유니코드의 "compatibility character"가 뭘까요? [4]파일 다운로드1
1606정성태1/25/201424271오류 유형: 217. 델 베뉴 스타일러스 관련 업데이트 오류 - 5830_Firmware_X267N_WN_1.0.4.1_A01.EXE
1605정성태1/23/201421114개발 환경 구성: 212. Visual Studio Online과 "Monaco" 서비스 연동
... 136  [137]  138  139  140  141  142  143  144  145  146  147  148  149  150  ...