如何在NodaTime nuget包xml文档文件中忽略对jetbrains.annotations.dll的引用

本文关键字:jetbrains annotations 引用 dll 文件 NodaTime nuget 文档 xml | 更新日期: 2023-09-27 18:13:17

我非常依赖Resharper上下文操作来生成样板代码。直到最近,null上下文操作的Check参数生成了执行空检查并相应抛出的代码。然而,现在它正在向参数添加Resharper特定的[NotNull]注释,作为方法签名的一部分。

看着这个相关的问题停止ReSharper从添加注释,我已经检查了我的解决方案代码库的jetbrains.annotations.dll引用,但没有发现任何。

然而,在所有文件中搜索,我发现在NodaTime (NodaTime.xml)的xml文档文件中引用了jetbrains.annotations.dll

具体来说,像这样的条目:<member name="T:JetBrains.Annotations.NotNullAttribute"> .

我并没有明确地说这是根本原因。但是,NodaTime是自问题开始以来我添加的最新的nuget包,跨解决方案的grep显示它是单点参考。

xml文档文件应该包括这些引用,如果是这样,有没有办法让我配置Resharper忽略它们?

我已经反编译了NodaTime程序集,虽然它没有任何对JetBrains. annotations.dll的二进制引用,但它似乎(重新)声明了违规的JetBrains。注解名称空间和注解本身。

根据citizenmatts的建议,我使用Resharper 带我到[NotNull]属性的定义工具,这将进入NodaTime.dll

我也刚刚注意到Resharper包含的NotNull属性不能编译并抱怨Cannot reference internal class NotNullAttribute。因此,我显然没有包含jetbrains.annotations.dll。

更新2 刚刚完成了在VS2013中创建一个新的空白项目并检查Resharper works中的null检查上下文动作的明显事情。然后添加了NodaTime nuget包并重新检查-确实它添加了[NotNull]属性并且项目无法编译。

更新3 正如Jon Skeet所建议的那样,我尝试使用Resharper->Code Inspection->Code annotations -> untick JetBrains.Annotations"关闭"数据注释。但是,这没有影响,并且NotNull属性继续被包含。

看起来我可能要返回到System.DateTime

如何在NodaTime nuget包xml文档文件中忽略对jetbrains.annotations.dll的引用

Noda Time故意提供了r#注释的内部副本,以便那些确实想要它们的人可以从中受益-它将知道哪些方法是纯的,等等。

听起来你根本不想使用注释,所以禁用它们是值得的。这在r#选项中很容易做到——在代码检查/代码注释下,取消选中JetBrains。注释选项。

我们当然可以考虑在将来为Noda Time将注释移动到一个特定的命名空间中,这样它更多的是选择加入而不是选择退出,但如果你不想使用注释,这可能是一个很好的解决方案,因为它绝对清楚地告诉r#你真的不想使用它们,即使其他库包含注释。

编辑:只是为了把Matt的评论推广到这个答案中:

遗憾的是,这是ReSharper的一个bug——它在应用NotNullAttribute之前没有考虑到它的可见性。这是跟踪和投票的门票:http://youtrack.jetbrains.com/issue/RSRP-413425

NodaTime.dll附带了作为内部符号编译的JetBrains注释,这意味着它们在内部用于NodaTime,并且对其他人不可见。然而,ReSharper可以看到这些已经应用到nodeatime类和方法上的注解。

nodeatime没有任何对JetBrains.Annotations.dll的二进制引用,ReSharper和Visual Studio都不应该基于xml文档添加对dll的引用。如果ReSharper能够在你的代码中添加[NotNull]注释,那么dll一定是从某处被引用的。我建议在[NotNull]上调用ReSharper的"go to definition",看看它会把你带到哪里——它应该会告诉你注解dll是从哪里被引用的,你应该能够很容易地从那里删除它。

Update:如上所述,在其他答案中,问题是ReSharper中的一个错误,在应用该属性之前没有检查它的可访问性。这是YouTrack票券,请跟踪和投票:http://youtrack.jetbrains.com/issue/RSRP-413425