솔루션 파일의 스키마에 대해서 알아보도록 하겠습니다.


위와 같이 솔루션을 만들고 Project Dependencies에서 ClassLibrary1 프로젝트에서 ClassLibrary2을 참조해줍니다. 그리고 솔루션 파일을 열어보도록 하겠습니다.

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{F7C941E2-B6DA-4652-957A-923EB41C155F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary2", "ClassLibrary2\ClassLibrary2.csproj", "{3FA19692-3C13-427F-9662-57BBC612915C}"
ProjectSection(ProjectDependencies) = postProject
{F7C941E2-B6DA-4652-957A-923EB41C155F} = {F7C941E2-B6DA-4652-957A-923EB41C155F}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionFolder", "SolutionFolder", "{7FB05BE4-9794-4E4C-92A8-1E4FFC56A7A2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{F7C941E2-B6DA-4652-957A-923EB41C155F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F7C941E2-B6DA-4652-957A-923EB41C155F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7C941E2-B6DA-4652-957A-923EB41C155F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7C941E2-B6DA-4652-957A-923EB41C155F}.Release|Any CPU.Build.0 = Release|Any CPU
{3FA19692-3C13-427F-9662-57BBC612915C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3FA19692-3C13-427F-9662-57BBC612915C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3FA19692-3C13-427F-9662-57BBC612915C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3FA19692-3C13-427F-9662-57BBC612915C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{F7C941E2-B6DA-4652-957A-923EB41C155F} = {7FB05BE4-9794-4E4C-92A8-1E4FFC56A7A2}
EndGlobalSection
EndGlobal
노란색에 해당하는 항목에 대해서 정리하면 아래와 같습니다.

1. Project ~ EndProject
  • 솔루션 파일에 추가할 수 있는 프로젝트를 의미합니다.
  • 형식은 '추가하는 항목의 Guid = 프로젝트명, 프로젝트 파일 위치, 프로젝트 Guid' 입니다.
  • 여기서 추가하는 항목의 Guid는 아래와 같습니다.
    • 솔루션 폴더 : "{2150E333-8FDC-42A3-9474-1A3956D46DE8}"
    • 프로젝트 :  "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
  • 솔루션 파일에 추가할 수 있는 항목은 솔루션 폴더와 프로젝트로 구분 할 수 있습니다.
  • 여기서 프로젝트란 모든 형식(Console, Winform, WPF, WebForm)의 프로젝트를 말합니다.

2. ProjectSection(ProjectDependencies) = postProject ~ EndProjectSection
  • 솔루션 파일이나 프로젝트 파일에서 오른쪽 버튼을 누른 후에 'Project Dependencies'속성에서 수동으로 프로젝트에 대한 의존관계에 대한 내용입니다.
  • 형식은 '참조되는 프로젝트의 Guid = 참조되는 프로젝트의 Guid' 입니다.
  • 프로젝트 참조에 대한 정보는 솔루션 파일에는 존재하지 않습니다.

3. GlobalSection(SolutionConfigurationPlatforms, ProjectConfigurationPlatforms) = preSolution ~ EndGlobalSection
이 부분은 그림으로 설명해 보도록 하겠습니다.
  • SolutionConfigurationPlatforms에 해당하는 내용은 파란색 박스입니다.
  • ProjectConfigurationPlatforms에 해당하는 내용은 빨간색 박스입니다.
  • 솔루션의 Configuration를 변경하면 해당 솔루션에 포함된 모든 프로젝트의 Configuration이 변경되며 특정 프로젝트만 Configuration를 변경하고 싶을 경우에 빨간색 박스의 내용을 변경하면 됩니다.
  • Build의 체크 박스 표시 여부에 따라서 Debug|Any CPU.Build.0 가 포함된 행이 솔루션 파일에 포함되는지가 결정되며 당연히 체크 표시가 없다면 해당 프로젝트의 빌드는 Skip 됩니다.

4. GlobalSection(NestedProjects) = preSolution ~ EnbGlobalSection
  • 이 구역이 바로 솔루션 폴더와 해당 솔루션 폴더에 포함되는 프로젝트에 대한 내용입니다.
  • 형식은 '프로젝트 Guid = 솔루션 폴더 Guid' 입니다.
다음에는(완전 미정 ㅋ) 프로젝트 파일에 대한 스키마에 대해서 알아보도록 하겠습니다. ^^;
Posted by resisa