Version: 6000.3
语言: 中文
创建和使用源生成器
Roslyn 分析器和源生成器的其他文件

安装和使用现有分析仪或源生成器

此示例使用 ErrorProne.NET.CoreAnalyzers 库来演示如何从 NuGet 安装代码分析器或源生成器:

  1. 使用“下载包”按钮将库下载为.zip文件。
  2. 提取.zip文件的内容。
  3. 在提取的文件夹中,找到包含分析器的.dll文件。在此示例中,导航到errorprone.net.coreanalyzers<version-number>\analyzers\dotnet\cs.所需的文件应位于此文件夹中,名为ErrorProne.NET.Core.dll,ErrorProne.Net.CoreAnalyzers.dllRuntimeContracts.dll.
  4. 将这些文件移动到 Unity 项目中的 Assets 文件夹或嵌套在 Assets 文件夹内的任何文件夹中。为此,请转到 资产(Assets) > 导入新资产(Import new asset) ,然后选择三个文件中的每一个的.dll,或者通过设备的文件浏览器将它们复制到项目的 资产(Assets) 文件夹中。
  5. 单击 Unity 中资产浏览器中的.dll文件以打开插件检查器窗口。
  6. 插件内部检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗:
    • 选择插件平台(Select platforms for plugin) 标题下,禁用 任何平台(Any Platform) 。
    • 包括平台(Include Platforms) 标题下,禁用 编辑器(Editor) 和 独立(Standalone)
  7. 在 插件检查器(Plugin Inspector) 窗口的 资产标签(Asset Labels) 标题下,点击蓝色标签图标以打开 资产标签(Asset Labels) 子菜单。
  8. 创建并分配名为 RoslynAnalyzer 的新标签。为此,请键入RoslynAnalyzer进入“资源标签”子菜单中的文本输入窗口,然后按 Return 键。此标签必须与示例完全匹配,并且区分大小写。为第一个分析器创建标签后,它将显示在“资产标签”子菜单中的可用标签列表中。您可以单击菜单中的标签名称以将其分配给其他分析器。

Unity 识别 RoslynAnalyzer 标签,并将具有此标签的资产视为 Roslyn Analyzer 或源生成器。将标签分配给分析器时,Unity 会重新编译脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
在分析器范围内,并根据分析器中的规则分析这些脚本中的代码。与分析器位于同一程序集定义内的任何脚本都在该分析器的范围内。对于 Assets 文件夹根级别的分析器,Unity 会将项目中的所有文件视为范围内。有关范围的详细信息,请参阅分析器范围和诊断

若要测试分析器是否正常工作,请按照以下示例作。如果已正确安装分析器,则 ErrorProne.NET 分析器在分析示例中的代码时会引发警告。

创建一个名为RethrowError.cs.将以下代码复制到此脚本中并保存文件:

using System;
using UnityEngine;

public class RethrowError : MonoBehaviour
{
    void Update()
    {
        try
        {
            DoSomethingInteresting();
        }
        catch (Exception e)
        {
            Debug.Log(e.Message);
            throw e;
        }
    }

    private void DoSomethingInteresting()
    {
        throw new System.NotImplementedException();
    }
}

保存文件时,Unity 会重新编译脚本,并在脚本的代码上运行任何适用的分析器。正确安装 ErrorProne.NET 分析器后,它会在控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。更多信息
请参阅术语表
关于上述代码:

Assets\RethrowError.cs(14,23): warning EPC12: Suspicious exception handling: only e.Message is observed in exception block.

Assets\RethrowError.cs(15,19): warning ERP021: Incorrect exception propagation. Use throw; instead.

其他资源

创建和使用源生成器
Roslyn 分析器和源生成器的其他文件