仅编译时 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>
我正在创建一个 .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>