# Windows용 Visual Studio 프로젝트 생성

> Introduces Visual Studio project generation for Windows and how to use it.

**Create Visual Studio Solution** 빌드 설정을 사용하면 Unity가 플레이어를 빌드하는 대신 Visual Studio [솔루션](https://docs.microsoft.com/en-us/visualstudio/ide/solutions-and-projects-in-visual-studio?view=vs-2019#solutions)을 생성합니다. Visual Studio 솔루션을 생성하면 빌드 프로세스를 변경할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.

* 애플리케이션의 매니페스트를 수정합니다.
* C++ 코드를 추가합니다.
* 포함된 리소스를 수정합니다.
* 연결된 디버거가 있는 애플리케이션을 실행합니다.

**참고**: 이 옵션은 Windows 빌드 타겟을 사용하는 경우에만 사용할 수 있습니다.

## Visual Studio 솔루션 생성##create-a-visual-studio-solution

**경고:** Unity 프로젝트를 다시 빌드하기 전에 Visual Studio에서 변경 사항을 저장하고 백업해야 합니다. 변경 사항을 백업하지 않으면 Unity가 빌드 프로세스 중에 덮어씁니다.

1. **File** > **Build Settings** > **Target Platform**으로 이동합니다.
2. **Windows** 빌드 타겟을 선택합니다.
3. **Create Visual Studio Solution** 빌드 설정을 활성화합니다.
4. **Build**를 선택하여 솔루션을 생성합니다.


**Create Visual Studio Solution이 선택되어 있는 Build Settings 패널:**
![](/api/media?file=/engine/6000.0/media/images/buildsettingsVSsolution.png)

기본적으로 Unity는 생성한 Visual Studio 솔루션을 빌드한 프로젝트와 동일한 디렉토리에 저장합니다.

### 스크립팅 백엔드##scripting-backends

Unity 프로젝트가 사용하는 [스크립팅 백엔드](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends.md)에 따라 Unity가 생성하는 Visual Studio 솔루션에 다양한 프로젝트 수가 포함됩니다. [Mono](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends/mono.md) 스크립팅 백엔드의 경우, 솔루션에 3개의 프로젝트가 포함됩니다. [IL2CPP](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends/il2cpp.md) 스크립팅 백엔드의 경우, 솔루션에 4개의 프로젝트가 포함됩니다.

**참고**: Windows 시스템에서만 Windows IL2CPP를 빌드할 수 있습니다.

## 프로젝트 리타게팅 마법사##project-retarget-wizard

Unity는 Visual Studio 2015를 대상으로 하는 Visual Studio 솔루션을 생성합니다. 최신 버전의 Visual Studio를 사용 중인 경우 Visual Studio 솔루션을 열 때 **Retarget Projects** 다이얼로그가 표시될 수 있습니다.

**Retarget Projects** 다이얼로그에 설치된 Visual Studio 버전과 일치하도록 Visual Studio 솔루션을 업그레이드하라는 메시지가 표시됩니다. 이 제안을 수락하려면 **OK**를 선택합니다.

## 솔루션 콘텐츠##solution-contents

아래는 Unity가 Visual Studio 솔루션에 대해 생성하는 프로젝트 리스트입니다.

| **프로젝트**                                    | **설명**                                                                                                                             |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **projectName**(프로젝트 이름을 나타냄)               | 기본 프로젝트입니다. Visual Studio가 이 프로젝트를 최종 애플리케이션 실행 파일로 빌드합니다. 여기에서 변경할 가능성이 가장 높습니다.                                                  |
| **UnityData**(projectName 프로젝트 내부에 저장됨)     | 이 프로젝트에는 프로젝트 빌드에 필요한 모든 Unity 전용 파일(예: 에셋)이 들어 있습니다.                                                                              |
| **UnityPlayerStub**                         | `UnityPlayer.dll`의 스텁 라이브러리입니다. Unity는 실행 파일을 `UnityPlayer.dll`에 연결하고 사용 가능한 `UnityPlayer.dll` API를 노출하는 데 이를 사용합니다.               |
| **Il2CppOutputProject**(IL2CPP 스크립팅 백엔드 전용) | 이 프로젝트에는 다음이 포함되어 있습니다.• Unity가 관리되는 어셈블리에서 전환하는 생성된 C++ 코드• IL2CPP 런타임의 소스 코드• IL2CPP 가비지 컬렉터Visual Studio 내에서 이 코드를 디버깅할 수 있습니다. |

## Visual Studio의 빌드 설정 옵션##build-configuration-options-in-visual-studio

Visual Studio는 다양한 빌드 설정 옵션을 제공합니다. 이 섹션의 모든 최적화 및 디버그 레퍼런스는 Visual Studio 솔루션에만 적용됩니다. 옵션을 선택하려면 **Release**를 클릭하고 드롭다운 메뉴에서 선택하십시오.

### 빌드 설정 유형##types-of-build-configurations

| **설정**                                                    | **용도**                                                                               | **설명**                                                                                                                      |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| **Debug**                                                 | C++ 코드를 디버깅할 때 **Debug** 설정을 사용합니다.                                                  | • 모든 최적화를 비활성화합니다.• 코드의 모든 디버깅 정보를 보존합니다.• 코드가 느리게 실행됩니다.                                                                   |
| **Release**                                               | 게임을 프로파일링하려면 **Release** 설정을 사용합니다.                                                  | • 코드 최적화를 활성화합니다.                                                                                                           |
| **Master**                                                | 게임 제출 및 최종 테스트에는 **Master** 설정을 사용합니다.                                               | • 프로파일러를 비활성화합니다.• 빌드 시간이 **Release** 설정과 동일해집니다.                                                                           |
| **MasterWithLTCG** IL2CPP 스크립팅 백엔드가 활성화된 경우에만 사용할 수 있습니다. | IL2CPP 스크립팅 백엔드를 사용하는 경우 게임 제출 및 최종 테스트를 위해 **Master** 또는 **MasterWithLTCG**를 선택합니다. | • 생성된 C++ 코드, IL2CPP 런타임, IL2CPP 가비지 컬렉션에 대한 링크 타임 코드 생성을 활성화합니다.• **Master** 설정에 비해 빌드 시간이 훨씬 길어집니다.• 애플리케이션이 더 빠르게 실행됩니다. |
