仅编译时 Nuget 依赖项 (FxCop)

Compile-time only Nuget dependency (FxCop)

我正在创建一个 .Net Standard 2.0 Nuget 包,我想对构建执行静态代码分析。但是,当我添加 Microsoft.CodeAnalysis.FxCopAnalyzers 包时,它成为运行时依赖项,因此任何引用我的 Nuget 包的项目也会安装分析器。我觉得这些应该是调用代码的选择加入问题。

有什么办法可以防止这种依赖性被强制执行?

最后我自己找到了解决方案。只是对 Package Reference syntax in project files, specifically Controlling Dependency Assets 进行了一些研究。关键是打开 *.csproj 文件并添加如下所示的 PrivateAssets 节点(注意 ExcludeAssets 和 IncludeAssets 设置为默认值并且可以省略):

<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.1">
  <PrivateAssets>all</PrivateAssets>
  <ExcludeAssets>none</ExcludeAssets>
  <IncludeAssets>all</IncludeAssets>
</PackageReference>