16

我在我的 C# 项目中使用 ReSharper,通常我喜欢它。但是,当我执行某些重构操作时,它会不断向代码添加注释。

例如,[NotNull]当我使用“Check parameter for null”上下文操作时,它会添加:

// Before context action
public void Foo(object input)
{
}

// After context action
public void Foo([NotNull] object input)
{
    if (input == null)
    {
        throw new ArgumentNullException("input");
    }
}

此外,ReSharper 然后将添加using JetBrains.Annotations到文件中,即使我没有引用定义属性的 JetBrains 程序集。

我想继续使用上下文操作,因为它们非常有用,但我不能在代码中引入外部注释。ReSharper 提供了一个选项来更改默认注释命名空间并将注释属性源代码复制到您的项目中,但这也不是此项目的选项。

有没有办法告诉 ReSharper 完全停止添加注释?我已经尝试在选项中取消选中 JetBrains.Annotations 作为具有代码注释属性的命名空间,但这似乎对是否首先生成注释没有任何影响。

更新:虽然我实际上并没有引用 JetBrains.Annotations.dll,但我引用了另一个 DLL,它在同一个 JetBrains.Annotations 命名空间中重新实现了相同的注释属性。删除该 DLL 引用将阻止 ReSharper 添加注释。如果仍然可以选择关闭它会很好,但解决方法适合这种情况。

4

1 回答 1

6

当您引用 JetBrains.Annotations.dll 时,“Check parameter for null”的默认操作似乎是使用该NotNull属性(尽管添加了“Annotate with 'NotNullAttribute'”选项。

我知道的唯一解决方法是不引用JetBrains.Annotations.dll.

更新:

对此进行更多研究,似乎在[NotNull]包含注释 dll 并请求“检查参数是否为空”时添加了一个建议/错误:http: //youtrack.jetbrains.com/issue/RSRP-70350 以防万一其他任何人都会遇到这种情况并想知道为什么......

于 2013-03-18T22:53:12.177 回答