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

C# JetBrains.Annotations是否应该在我的csproj文件中声明为私有资产?,c#,annotations,resharper,C#,Annotations,Resharper,我最近安装了ReSharper,并且正在重构我的许多C#解决方案。作为这个过程的一部分,我在我的项目中添加了对JetBrains.Annotations的引用。但是,我不确定是否应该将此依赖项标记为私有(以防止它作为依赖项传递给更高级别的项目),或者这样做是否会潜在地破坏事情 换句话说,我不确定我是否应该这样做: 或者简单地说: 从: 默认情况下,ReSharper Annotations属性的所有用法都会从元数据中删除,这意味着不会生成对“JetBrains.Annotations.d

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

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


或者简单地说:


从:

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

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

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

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

由于JetBrains注释是有条件编译的(使用
[条件(“JetBrains\u注释”)]
),只要不定义
JetBrains\u注释
,注释的所有跟踪都将从程序集本身中删除。这也意味着删除NuGet包引用是安全的

但是,如果您确实定义了
JETBRAINS\u注释
,那么还应该包括NuGet包引用


有关更多信息,请参阅…

我找到了一个解决方案-现在就尝试建议的方法。谢谢。我打算在图书馆项目中使用这些注释,这些项目将只在我的公司内使用,可能只有我自己使用。我希望我编写的更高级别的项目能够从这些注释中受益。根据您编写的和,似乎我应该使用
JETBRAINS\u ANNOTATIONS
进行编译,因此应该将
JETBRAINS.ANNOTATIONS
作为依赖项公开。目前正在研究在csproj中添加编译符号的最佳方法。如果您是通过NuGet使用程序集,则是。如果所有项目都在同一个解决方案中,我认为不需要它。我正在发布我的项目并通过NuGet使用它们。它们将在单独的解决方案中。此外,如果您希望包的用户从您添加的批注中受益,您还可以通过从“选项”页面复制批注并在项目中添加新文件,将其添加为源。这些将被创建为
internal
,这意味着没有其他人会使用它们,但ReSharper会看到它们,并在有人引用您的程序集时使用它们。