# 程序集元数据和编译详细信息

> Define metadata for your assemblies.

您可以为程序集定义其他元数据，以及检索项目构建中包含的程序集的相关信息。

## 设置程序集属性##setting-assembly-attributes

可以使用程序集属性 (Attribute) 为程序集设置元数据属性 (Property)。按照惯例，程序集属性语句通常置于名为 `AssemblyInfo.cs` 的文件中。

例如，以下程序集属性指定了一些 \[.NET 程序集元数据值]、一个 `[InternalsVisibleTo]` 属性（对于测试可能十分有用）以及 Unity 定义的 [Preserve 属性](/engine/6000.0/script-reference/unity-engine-scripting/preserve-attribute.md)（影响构建项目时如何从程序集中移除未使用的代码）：

```csharp
[assembly: System.Reflection.AssemblyCompany("Bee Corp.")]
[assembly: System.Reflection.AssemblyTitle("Bee's Assembly")]
[assembly: System.Reflection.AssemblyCopyright("Copyright 2020.")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("UnitTestAssembly")]
[assembly: UnityEngine.Scripting.Preserve]
```

## 在生成脚本中获取程序集信息##getting-assembly-information-in-build-scripts

使用 [CompilationPipeline](/engine/6000.0/script-reference/unity-editor-compilation/compilation-pipeline.md) 类可检索 Unity 为项目构建的所有程序集（包括基于程序集定义资源创建的程序集）的相关信息。

例如，以下脚本使用 `CompilationPipeline` 类列出项目中的所有当前播放器程序集：

```csharp
using UnityEditor;
using UnityEditor.Compilation;
public static class AssemblyLister
{
    [MenuItem("Tools/List Player Assemblies in Console")]
    public static void PrintAssemblyNames()
    {
        UnityEngine.Debug.Log("== Player Assemblies ==");
        Assembly[] playerAssemblies =
            CompilationPipeline.GetAssemblies(AssembliesType.Player);

        foreach (var assembly in playerAssemblies)
        {
            UnityEngine.Debug.Log(assembly.name);
        }
    }
}
```

## 其他资源##additional-resources

* [创建程序集定义](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/assembly-definitions-creating.md)
* [引用程序集](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/assembly-definitions-referencing.md)
* [程序集定义 (Assembly Definition) 属性](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/class-assembly-definition-importer.md)
* [程序集定义引用属性](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/class-assembly-definition-reference-importer.md)
* [程序集定义文件格式](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/assembly-definition-files/file-format.md)
