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

... 46  [47]  48  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12766정성태8/9/202113923Java: 32. closing inbound before receiving peer's close_notify
12765정성태8/9/202114295Java: 31. Cannot load JDBC driver class 'org.mysql.jdbc.Driver'
12764정성태8/9/202152515Java: 30. XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid
12763정성태8/9/202116275Java: 29. java.lang.NullPointerException - com.mysql.jdbc.ConnectionImpl.getServerCharset
12762정성태8/8/202119555Java: 28. IntelliJ - Unable to open debugger port 오류
12761정성태8/8/202116224Java: 27. IntelliJ - java: package javax.inject does not exist [2]
12760정성태8/8/202112998개발 환경 구성: 594. 전용 "Command Prompt for ..." 단축 아이콘 만들기
12759정성태8/8/202117642Java: 26. IntelliJ + Spring Framework + 새로운 Controller 추가 [2]파일 다운로드1
12758정성태8/7/202117009오류 유형: 751. Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
12757정성태8/7/202117676Java: 25. IntelliJ + Spring Framework 프로젝트 생성
12756정성태8/6/202115856.NET Framework: 1084. C# - .NET Core Web API 단위 테스트 방법 [1]파일 다운로드1
12755정성태8/5/202115968개발 환경 구성: 593. MSTest - 단위 테스트에 static/instance 유형의 private 멤버 접근 방법파일 다운로드1
12754정성태8/5/202116397오류 유형: 750. manage.py - Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
12753정성태8/5/202117345오류 유형: 749. PyCharm - Error: Django is not importable in this environment
12752정성태8/4/202114218개발 환경 구성: 592. JetBrains의 IDE(예를 들어, PyCharm)에서 Visual Studio 키보드 매핑 적용
12751정성태8/4/202117047개발 환경 구성: 591. Windows 10 WSL2 환경에서 docker-compose 빌드하는 방법
12750정성태8/3/202114097디버깅 기술: 181. windbg - 콜 스택의 "Call Site" 오프셋 값이 가리키는 위치
12749정성태8/2/202113612개발 환경 구성: 590. Visual Studio 2017부터 단위 테스트에 DataRow 특성 지원
12748정성태8/2/202114632개발 환경 구성: 589. Azure Active Directory - tenant의 관리자(admin) 계정 로그인 방법
12747정성태8/1/202114869오류 유형: 748. 오류 기록 - MICROSOFT GRAPH – HOW TO IMPLEMENT IAUTHENTICATIONPROVIDER파일 다운로드1
12746정성태7/31/202119562개발 환경 구성: 588. 네트워크 장비 환경을 시뮬레이션하는 Packet Tracer 프로그램 소개
12745정성태7/31/202115203개발 환경 구성: 587. Azure Active Directory - tenant의 관리자 계정 로그인 방법
12744정성태7/30/202115507개발 환경 구성: 586. Azure Active Directory에 연결된 App 목록을 확인하는 방법?
12743정성태7/30/202116736.NET Framework: 1083. Azure Active Directory - 외부 Token Cache 저장소를 사용하는 방법파일 다운로드1
12742정성태7/30/202114702개발 환경 구성: 585. Azure AD 인증을 위한 사용자 인증 유형
12741정성태7/29/202116272.NET Framework: 1082. Azure Active Directory - Microsoft Graph API 호출 방법파일 다운로드1
... 46  [47]  48  49  50  51  52  53  54  55  56  57  58  59  60  ...