Version: 2019.4
程序集定义
托管代码剥离

程序集定义 (Assembly Definition) 属性

单击程序集定义资源 (Assembly Definition Asset) 可以在 Inspector 窗口中设置程序集的属性。

程序集定义 (Assembly Definition) Inspector
程序集定义 (Assembly Definition) Inspector
属性 描述
Name 程序集的名称(不含文件扩展名)。程序集名称在整个项目中必须唯一。请考虑使用 reverse-DNS 命名样式,尤其是希望在多个项目中使用该程序集的情况下。注意:Unity 会将您分配给程序集定义资源 (Assembly Definition Asset) 的名称用作 Name 字段的默认值,但您可以根据需要更改此名称。
General
Allow ‘unsafe’ code 如果在程序集内的脚本中使用了 C# /unsafe 关键字,请启用 Allow ‘unsafe’ Code 选项。启用此设置后,Unity 在编译程序集时会将 /unsafe 选项传递到 C# 编译器。
Auto Referenced 指定是否所有预定义的程序集都应引用此项目程序集。启用此属性后,预定义的程序集将会引用项目中定义的所有程序集,这一点与预定义程序集引用预编译程序集(插件)的方式一致。

对文件禁用 Auto Reference 设置后,Unity 不会在编译过程中自动引用该文件。这不会影响 Unity 是否将文件包含在构建中。可以在平台设置 (Platform Settings) 中控制插件的构建设置 (Build Settings)。
Override References 启用 Override References 设置可以手动指定此程序集依赖哪些预编译的程序集。启用 Override References 后,Inspector 会显示 Assembly References 部分,在此部分中可以指定引用。

预编译的程序集是在 Unity 项目外编译的库。默认情况下,在项目中定义的程序集将会引用添加到项目中的所有预编译程序集,这一点与预定义程序集引用所有预编译程序集的方式一致。启用 Override References 后,此程序集仅引用您在 Assembly References 下添加的预编译程序集。

注意:为了防止项目程序集自动引用预编译程序集,可以禁用 Auto Referenced 选项。请参阅 Plugin Inspector 以了解更多信息。
No Engine References 启用此属性后,Unity 在编译程序集时不会添加对 UnityEditor 或 UnityEngine 的引用。
Define Constraints Specify the compiler #define directives that must be defined for Unity to compile or reference an assembly.

Unity only compiles and references a Project assembly if all of the Define Constraints are satisfied. Constraints work like the #if preprocessor directive in C#, but on the assembly level instead of the script level. You must define all the symbols in the Define Constraints setting for the constraints to be satisfied.

To specify that a symbol must be undefined, prefix it with a negating ! (bang) symbol. For example, if you specify the following symbols as the Define Constraints:

!ENABLE_IL2CPP
UNITY_2018_3_OR_NEWER

The constraints are satisfied when the symbol ENABLE_IL2CPP is not defined and the symbol UNITY_2018_3_OR_NEWER is defined. In other words, Unity only compiles and references this assembly on non-IL2CPP scripting runtimes for Unity 2018.3 or newer.

You can use the || (OR) operator to specify that at least one of the constraints must be present in order for the constraints to be satisfied. For example:

UNITY_IOS || UNITY_EDITOR_OSX
UNITY_2019_3_OR_NEWER
!UNITY_ANDROID

The constraints are satisfied when either UNITY_IOS or UNITY_EDITOR_OSX and UNITY_2019_3_OR_NEWER are defined and UNITY_ANDROID is not defined. Individual lines are analogous to performing a logical AND between the constraints in them. The above example is eequivalent to (UNITY_IOS OR UNITY_EDITOR_OSX) AND (UNITY_2019_3_OR_NEWER) AND (NOT UNITY_ANDROID).

You can use any of Unity’s built-in #define directives or any symbols defined in the Project’s Scripting Define Symbols Player setting. See Platform dependent compilation for more information, including a list of the built-in symbols. Note" The Scripting Define Symbols settings are platform-specific. If you use this setting to define whether Unity should use an assembly, make sure that you define the necessary symbols on all of the relevant platforms.
Assembly Definition References 指定对使用程序集定义资源 (Assembly Definition Assets) 创建的其他程序集的引用。

Unity 使用这些引用来编译程序集,还定义程序集之间的依赖关系。
Use GUIDs 此设置控制 Unity 如何序列化对其他程序集定义资源 (Assembly Definition Assets) 的引用。启用此属性后,Unity 将这些引用另存为资源的 GUID,而不是程序集定义 (Assembly Definition) 名称。最好是使用 GUID 而不是名称,因为这意味着可以更改程序集定义资源 (Assembly Definition Asset) 的名称,而不必更新引用该程序集的其他程序集定义文件。
Assembly References 仅在启用 Override References 属性后才显示。使用这一区域可以指定对此程序集依赖的预编译程序集的任何引用。
Platforms 设置程序集的平台兼容性。Unity 仅在包含(或不排除)的平台上编译或引用此程序集。
Version Defines 指定要包含在编译中的资源包和模块的版本。
程序集定义
托管代码剥离