# 어셈블리 에셋 생성

> Create various kinds of assembly assets to customize your assemblies.

어셈블리 정의(`.asmdef`) 에셋을 사용하면 새 어셈블리를 스크립트가 들어 있는 폴더의 루트에 배치하여 정의할 수 있습니다.

어셈블리 정의 레퍼런스(`.asmref`) 에셋을 사용하면 스크립트 파일 집합을 기존 어셈블리에 명시적으로 포함할 수 있습니다.

## 어셈블리 정의 에셋 생성##create-an-assembly-definition

어셈블리 정의 에셋을 만들려면 다음 단계를 따르십시오.

1. **프로젝트** 창에서 어셈블리에 포함할 스크립트가 있는 폴더를 찾습니다.
2. 폴더에서 어셈블리 정의 에셋을 생성합니다(메뉴: **Assets** > **Create** > **Scripting** > **Assembly Definition**).
3. 에셋에 이름을 지정합니다. 기본적으로 어셈블리 파일은 에셋에 할당되는 이름을 사용하지만, **인스펙터** 창에서 이름을 변경할 수 있습니다.

Unity가 프로젝트의 스크립트를 다시 컴파일하여 새 어셈블리를 생성합니다. 이후 새 어셈블리 정의의 [프로퍼티](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/class-assembly-definition-importer.md)를 편집할 수 있습니다.

새로운 어셈블리는 어셈블리 정의와 동일한 폴더에 있는 모든 스크립트와 자체 어셈블리 정의 또는 레퍼런스 파일이 없는 모든 하위 폴더에 있는 스크립트까지 포함합니다. Unity는 해당하는 경우 이전 어셈블리에서 스크립트를 제거합니다.

## 어셈블리 정의 레퍼런스 에셋 생성##create-an-assembly-definition-reference

어셈블리 정의 레퍼런스 에셋을 생성하려면 다음 단계를 따르십시오.

1. **프로젝트** 창에서 참조된 어셈블리에 포함할 스크립트가 있는 폴더를 찾습니다.

2. 폴더에서 어셈블리 레퍼런스 에셋을 생성합니다(메뉴: **Assets** > **Create** > **Scripting** > **Assembly Definition Reference**).

3. 에셋에 이름을 지정합니다.

   Unity가 프로젝트의 스크립트를 다시 컴파일하여 새 어셈블리를 생성합니다. 완료되면 새 어셈블리 정의 레퍼런스의 [프로퍼티](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/class-assembly-definition-reference-importer.md)를 편집할 수 있습니다.

4. 새로운 어셈블리 정의 레퍼런스 에셋을 선택하여 **인스펙터**에서 해당 프로퍼티를 확인합니다.


   **Frame:**
   ![](/api/media?file=/engine/6000.0/media/images/asmdef-2.png)

5. 타겟 어셈블리 정의 에셋을 참조하도록 Assembly Definition 프로퍼티를 설정합니다.

6. **Apply**를 클릭합니다.

이제 참조된 어셈블리는 어셈블리 정의 레퍼런스와 동일한 폴더에 있는 모든 스크립트와 자체 어셈블리 정의 또는 레퍼런스 파일이 없는 모든 하위 폴더에 있는 스크립트까지 포함합니다. Unity는 해당하는 경우 이전 어셈블리에서 스크립트를 제거합니다.

## 플랫폼별 어셈블리 생성##create-a-platform-specific-assembly

특정 플랫폼에 대한 어셈블리를 생성하려면 다음 단계를 따르십시오.

1. [어셈블리 정의 에셋을 생성합니다](#create-asmref).

2. 새로운 어셈블리 정의 레퍼런스 에셋을 선택하여 **인스펙터**에서 해당 프로퍼티를 확인합니다.


   **Frame:**
   ![](/api/media?file=/engine/6000.0/media/images/asmdef-3.png)

3. **Any Platform** 옵션을 선택해 제외할 특정 플랫폼을 선택합니다. 또는 Any Platform을 해제한 뒤 포함할 특정 플랫폼을 선택할 수도 있습니다.

4. **Apply**를 클릭합니다.

플랫폼용 프로젝트를 빌드할 때 어셈블리는 선택된 플랫폼에 따라 포함되거나 제외됩니다.

## 에디터 코드용 어셈블리 생성##create-an-assembly-for-editor-code

에디터 어셈블리를 사용하면 `Editor`라는 최상위 폴더뿐만 아니라 프로젝트의 모든 위치에 에디터 스크립트를 배치할 수 있습니다.

프로젝트에서 에디터 코드가 포함된 어셈블리를 생성하려면 다음 단계를 따르십시오.

1. 에디터 스크립트가 포함된 폴더에 [플랫폼별 어셈블리를 생성](#create-platform-specific)합니다.
2. 에디터 플랫폼만 포함합니다.
3. 에디터 스크립트가 포함된 추가 폴더가 있는 경우 해당 폴더에 [어셈블리 정의 레퍼런스 에셋을 생성](#create-asmref)한 후 이 어셈블리 정의를 참조하도록 설정합니다.

## 테스트 어셈블리 생성##create-a-test-assembly

테스트 어셈블리란 Unity가 테스트를 포함할 것으로 예상하는 어셈블리입니다. 테스트를 테스트 어셈블리에 넣으면 다음과 같은 이점이 있습니다.

* 테스트 코드를 사용자에게 제공할 애플리케이션 코드와는 별도로 유지하므로 필요할 때만 테스트 코드를 컴파일할 수 있습니다.
* 테스트 어셈블리의 모든 테스트는 자동으로 [Test Framework 패키지](/engine/6000.0/manual/tests-editortestsrunner.md)에 표시되므로 **Test Runner** 창에서 실행할 수 있습니다.

Unity는 **nunit.framework.dll**에 대한 [어셈블리 레퍼런스](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/class-assembly-definition-importer.md#assembly-references)와 **UnityEngine.TestRunner** 및 **UnityEditor.TestRunner**에 대한 [어셈블리 정의 레퍼런스](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/class-assembly-definition-importer.md#asmdef-references)가 있는 어셈블리를 자동으로 테스트 어셈블리로 식별합니다.

Test Framework 패키지 설치 및 테스트 어셈블리 생성에 대한 지침은 Unity [Test Framework 기술 자료](https://docs.unity3d.com/Packages/com.unity.test-framework@latest?subfolder=/manual/workflow-create-test-assembly.html)를 참조하십시오. 에디터 UI를 사용하여 관련 레퍼런스가 미리 정의된 어셈블리 정의 파일을 생성하거나, [인스펙터 창을 통해서](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/class-assembly-definition-importer.md) 또는 [JSON 파일을 직접 편집하여](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/file-format.md) 레퍼런스를 수동으로 설정할 수 있습니다.

**참고**: 테스트 어셈블리는 일반 빌드 파이프라인에 포함되어 컴파일되지 않으므로, 테스트 어셈블리에 배치된 모든 코드는 표준 [프로젝트 빌드](/engine/6000.0/manual/unity-editor/editor-features/build-settings.md)에서 제외됩니다. 테스트 어셈블리 코드는 **Test Runner** 창을 통해 [플레이어에서 플레이 모드 테스트를 실행할 때](https://docs.unity3d.com/Packages/com.unity.test-framework@latest?subfolder=/manual/workflow-run-playmode-test-standalone.html)에만 플레이어에 포함됩니다. 프로젝트 빌드에 예기치 않게 컴파일되지 않는 프로덕션 코드가 있는 경우, 해당 프로덕션 코드가 테스트 어셈블리에 포함되지 않았는지 확인하십시오.

# 추가 리소스##additional-resources

* [특수 폴더와 스크립트 컴파일 순서](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/script-compile-order-folders.md)
