Annotations 我可以吗;“固定”;错误的重竖琴注释?

Annotations 我可以吗;“固定”;错误的重竖琴注释?,annotations,resharper,Annotations,Resharper,我喜欢Resharper,但有时它会给出错误的警告,可能是因为BCL类型的内置注释是错误的。例如,在此代码中: private static string GetDescription(T value) { Type type = typeof(T); string name = Enum.GetName(type, value); if (name != null) { ... 它在if语句中给了我一个警告:“表达式总是正确的”。但是Enum.

我喜欢Resharper,但有时它会给出错误的警告,可能是因为BCL类型的内置注释是错误的。例如,在此代码中:

private static string GetDescription(T value)
{
    Type type = typeof(T);
    string name = Enum.GetName(type, value);
    if (name != null)
    {
        ...
它在
if
语句中给了我一个警告:“表达式总是正确的”。但是
Enum.GetName
可以返回null:

string name = Enum.GetName(typeof(DayOfWeek), (DayOfWeek)42); // null
我假设这是因为
Enum.GetName
有一个
[NotNull]
注释。有没有办法解决这个问题,这样我就不会收到警告


注意:我使用的是Resharper 5.1;也许这个问题在版本6中已经解决,但我现在不愿意升级。

好的,我知道了。内置注释在Resharper安装目录中的XML文件中定义(
C:\ProgramFiles(x86)\JetBrains\Resharper\v5.1\Bin\ExternalAnnotations\
,在我的机器上)。解决方案是编辑适当的文件以删除或修复不正确的注释

对于
Enum.GetName
,要更改的文件是
mscorlib\mscorlib.[version].Contracts.xml
。我刚刚评论了这个注释:

  <member name="M:System.Enum.GetName(System.Type,System.Object)">
    <attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
  </member>


重新启动Visual Studio,现在警告消失了:)

这只是对Thomas答案的更新,他们似乎在过去几年中改变了一些事情

对于Resharper 8.2.3,上述文件现在位于:

C:\Users\YOUR\u USER\u NAME\AppData\Local\JetBrains\ReSharper\vAny\packages\ReSharper.ExternalAnnotations.8.2.3001\ReSharper\vAny\annotations\.NETFramework\mscorlib\…


因此,如果您试图这样做,您可以搜索该路径(或向上搜索非
mscorlib
文件)。

ReSharper 6.1仍然存在问题。@JohnSaunders,真的吗?这是根据他们的bug追踪器…@JohnSaunders,我找到了解决方案,如果你感兴趣的话(见我的答案),我更新了他们的问题,表明它没有修复。您可以更新它以显示解决方法。