# Assembly definition and packages

> Configure assembly definitions so the Editor compiles package scripts as separate assemblies.

You must associate scripts inside a package to an assembly definition file (`.asmdef`). Assembly definition files are the Unity equivalent to a C# project in the .NET ecosystem. You must set explicit references in the assembly definition file to other assemblies (whether in the same package or in external packages). Refer to [Assembly Definitions](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files.md) for more details.

Use these conventions for naming and storing your assembly definition files to ensure that the compiled assembly filenames follow the [.NET Framework Design Guidelines](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/):

* Store Editor-specific code under a root editor assembly definition file:

  `Editor/<company-name>.<package-name>.Editor.asmdef`

* Store runtime-specific code under a root runtime assembly definition file:

  `Runtime/<company-name>.<package-name>.asmdef`

* Configure related test assemblies for your editor and runtime scripts:

  `Tests/Editor/<company-name>.<package-name>.Editor.Tests.asmdef`

  `Tests/Runtime/<company-name>.<package-name>.Tests.asmdef`

To get a more general view of a recommended package folder layout, refer to [Package layout](/engine/6000.0/manual/packages-list/cus-pkg-development/cus-layout.md).

## Example file

In this example, the assembly definition file uses references to its own assemblies, and an assembly that's part of a package dependency ([HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest)):

```lang-json
{
    "name": "MyCompany.MyPackageName",
    "references": [
        "MyCompany.MyPackageName.Tools",
        "MyCompany.MyPackageName.Planes",
        "Unity.RenderPipelines.HighDefinition.Runtime"
    ],
    "includePlatforms": [],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": false,
    "precompiledReferences": [],
    "autoReferenced": true,
    "defineConstraints": [],
    "versionDefines": [
        {
            "name": "com.unity.render-pipelines.high-definition",
            "expression": "7.1.0",
            "define": "HDRP_7_1_0_OR_NEWER"
        },
        {
            "name": "com.unity.modules.particlesystem",
            "expression": "1.0.0",
            "define": "USING_PARTICLE_SYSTEM"
        }
    ],
    "noEngineReferences": false
}
```

For details about the structure of an assembly definition file, refer to [Assembly Definition File Format](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/file-format.md).

## Additional resources

* [Assembly definitions](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files.md)
