Version: 2021.2
Versioning
Meeting legal requirements

Assembly definition and packages

You must associate scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
See in Glossary
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). See Assembly Definitions 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:

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

    Editor/[YourCompany].[YourPackageName].Editor.asmdef

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

    Runtime/[YourCompany].[YourPackageName].Runtime.asmdef

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

    Tests/Editor/[YourCompany].[YourPackageName].Editor.Tests.asmdef

    Tests/Runtime/[YourCompany].[YourPackageName].Runtime.Tests.asmdef

To get a more general view of a recommended package folder layout, see Package layout.

Example file

In this example, the assembly definition file uses references to its own assemblies as well as an assembly that is part of a package dependencyIn the context of the Package Manager, a dependency is a specific package version (expressed in the form package_name@package_version) that a project or another package requires in order to work. Projects and packages use the dependencies attribute in their manifests to define the set of packages they require. For projects, these are considered direct dependencies; for packages, these are indirect, or transitive, dependencies. More info
See in Glossary
(HDRP):

{
    "name": "[YourCompany].[YourPackageName]",
    "references": [
        "[YourCompany].[YourPackageName].Tools",
        "[YourCompany].[YourPackageName].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, see Assembly Definition File Format.

Versioning
Meeting legal requirements