仅编译时Nuget依赖项(FxCop)

sco*_*udy 4 fxcop nuget .net-core roslyn-code-analysis .net-standard

我正在创建一个.Net Standard 2.0 Nuget包,并且我想对该版本执行静态代码分析。但是,当我添加Microsoft.CodeAnalysis.FxCopAnalyzers程序包时,它将成为运行时依赖项,因此任何引用我的Nuget程序包的项目也都将安装分析器。我认为调用代码应该解决这些问题。

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

sco*_*udy 6

我最终自己找到了解决方案。它仅对项目文件中的Package Reference语法进行了更多研究,尤其是Controling 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>
Run Code Online (Sandbox Code Playgroud)