源代码中的注解
从 ReSharper 的代码注解中获益的最简单方法是将注解属性添加到您的源代码符号中,并让 ReSharper 以更高的准确性和洞察力分析您的解决方案。
默认情况下,所有注解属性类都标记有 [Conditional("JETBRAINS_ANNOTATIONS")] 属性,因此编译器会忽略您代码中的属性使用,这意味着不会生成对 'JetBrains.Annotations.dll' 程序集的二进制引用。 但是,您可以在项目中定义 'JETBRAINS_ANNOTATIONS' 条件编译符号,以在元数据中保留这些属性。
在您的项目中启用代码注解支持
要在您的项目中使用注解属性,您需要在项目中引用它们:
推荐的方法是安装包含
JetBrains.Annotations程序集的 NuGet 包。实际上,您甚至不需要访问 NuGet 网站来获取该包。 只需添加
using JetBrains.Annotations;指令,并使用相应的 Alt+Enter 操作即可自动获取该包。
您可以 添加项目引用到 JetBrains.Annotations.dll ,您可以在 ReSharper 安装目录中找到它。
您还可以 嵌入属性声明到项目中的任何位置,使用默认的
JetBrains.Annotations命名空间或其他命名空间。
如果 JetBrains.Annotations 被引用或属性声明嵌入到解决方案中的任何项目中,您可以键入所需的注解属性并按 Alt+Enter 调用 快速修复 ,该操作会在当前项目中引用此模块并添加缺失的 using 指令:

或者,您可以按两次 Control+Alt+Space 调用 双重导入补全 ,它会找到属性、导入命名空间并添加引用。

在您的源代码中嵌入代码注解的声明
您可以在 ReSharper 选项 的 页面上获取代码注解声明的副本
Alt+R, O
。 可选地,在复制时,您可以选择将声明设为内部的和/或向声明添加 [Conditional("JETBRAINS_ANNOTATIONS")] 属性。
注解属性的默认实现声明在 JetBrains.Annotations 命名空间中,但该命名空间并不是注解正常工作的必要条件。 您可以将声明放置在解决方案中的任何位置,ReSharper 会自动检测它们。 但是,如果声明位于不同的命名空间中,您需要明确指定带有注解属性的命名空间,如下所述。
在某些情况下,您的解决方案可能包含多个注解属性的实现,例如,您有与 ReSharper 注解类同名的类(CanBeNullAttribute、 NotNullAttribute 等),或者您正在使用包含 ReSharper 注解类的第三方程序集。 在这种情况下,您可以选择 ReSharper 应该查找注解属性类的正确集合的命名空间。
更改代码注解属性的来源
从主菜单中选择 或按 Alt+R O ,然后在左侧选择 。
所有包含注解类的命名空间(无论是源代码还是引用的程序集)中,除了
JetBrains.Annotations以外的命名空间(ReSharper 只会查找CanBeNullAttribute和NotNullAttribute声明)都会显示在 带有代码注解属性的命名空间 列表中。 检查包含所需实现的条目。如果列表中有多个命名空间,请选择一个应由 ReSharper 代码分析引擎使用的命名空间,并在 默认注解命名空间 列表中选择它。
单击 选项 对话框中的 保存 应用修改,让 ReSharper 选择保存位置,或者通过从 保存到 选择器中选择特定的设置层来保存修改。 有关更多信息,请参见 管理和共享 resharper 设置。
使用上下文操作添加注解属性
一旦 ReSharper 知道了注解类的位置,您就可以使用 上下文操作来添加最常用的注解属性:
[NotNull][CanBeNull][UsedImplicitly]
要添加这些注解,请在您想要注解的符号上按 Alt+Enter ,ReSharper 会根据上下文建议一个属性:
