如果未定义 JETBRAINS_ANNOTATIONS 条件,则属性将被忽略

Attribute will be ignored if the JETBRAINS_ANNOTATIONS condition is not defined

我只对在开发期间使用 JetBrains annotations 感兴趣,并且我在 nuget package.config 文件中相应地做了标记:

  <package id="JetBrains.Annotations" version="10.2.1" targetFramework="net452" developmentOnly="true"/>

我收到有关我尝试使用的属性的工具提示,例如 [NotNull]:

引用了JetBrains.Annotations库,为什么还要定义这个条件?

如果您定义 JETBRAINS_ANNOTATIONS 符号,您的注释属性用法将被编译到您的程序集中(您的程序集的使用者可以从中受益)。但是您得到了对 Jetbrains.Annotations 的程序集引用。 (=> 您不应该将包引用定义为 developmentOnly,以便在您对项目执行 nuget pack 时自动将其作为依赖项引用。)

如果您不定义它,程序集使用者将无法使用您的程序集的注释,并且您不会依赖于 Jetbrains.Annotations

详情见ReSharper Help

长话短说:如果您是应用程序作者,只需引用包而不定义符号;如果您是库作者,请不要将其引用为 developmentOnly 并定义符号(或将注释与您的代码一起分发为 internal,如 described here)。

顺便说一句:如果您想要第二个没有条件定义的 NuGet 包,请投票给 RSRP-432171