JetBrains.Annotations 是否应该在我的 csproj 文件中声明为私有资产?

Tag*_*agc 7 c# resharper annotations

我最近安装了 ReSharper,并且正在重构一些 C# 解决方案。作为此过程的一部分,我JetBrains.Annotations在我的项目中添加了对 的引用。但是,我不确定是否应该将此依赖项标记为私有(以防止它作为依赖项传递给更高级别的项目),或者这样做是否可能会破坏事情。

换句话说,我不确定我是否应该这样做:

<ItemGroup>
  <PackageReference Include="JetBrains.Annotations" Version="11.0.0" PrivateAssets="All" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

或者简单地这样:

<ItemGroup>
  <PackageReference Include="JetBrains.Annotations" Version="11.0.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

来自NuGet 包文档

默认情况下,ReSharper Annotations 属性的所有用法都会从元数据中删除,这意味着不会生成对“JetBrains.Annotations.dll”程序集的实际二进制引用。

如果我理解正确,则表明将包标记为私有应该是安全的。不过,我只是想确认一下。

khe*_*ang 7

如果我理解正确,则表明将包标记为私有应该是安全的。不过,我只是想确认一下。

这是正确的。这里有两件事在起作用;元数据引用(在程序集中)和 NuGet 包引用。

因为 JetBrains 注释是有条件编译的(使用[Conditional("JETBRAINS_ANNOTATIONS")]),所以只要您不定义JETBRAINS_ANNOTATIONS,注释的所有痕迹都会从程序集本身中删除。这也意味着删除 NuGet 包引用是安全的。

但是,如果您确实定义JETBRAINS_ANNOTATIONS,则还应该包含 NuGet 包引用。

请参阅文档以获取更多信息...