在我正在开发的库中,它被部署为nuget包,我希望包含Microsoft.VisualStudio.Threading
,这样我就可以使用AsyncEventHandlers
。
但是,这个包依赖于Microsoft.VisualStudio.Threading.Analyzers
,Microsoft.VisualStudio.Threading.Analyzers
包含静态代码分析器,它们会产生很多警告,其中一些涉及到没有被普遍接受的样式规则。
我不介意在我的库项目中使用它们,我发现它们很有帮助,但是分析器会感染所有引用我的包的项目。在我的一个项目中,有500多个警告告诉我在所有异步方法的末尾添加异步。
我能够找到一些相关的问题:Some projects' dependencies contain unexplained code analyzers
......但是没有直接命中。是否有一种方法可以在我的包中处理这个问题,在使用我的nuget包的下游项目中关闭这些分析器,而最终开发人员不必采取特殊的操作?
1条答案
按热度按时间woobm2wo1#
通常情况下,分析器不应该作为依赖项被包含进来,这正是链接问题试图告诉你的。在构建中包含分析器的地方,通常使用额外的
<PrivateAssets>
和<IncludeAssets>
指令,如下所示:不幸的是,如果你间接引用分析器包(所以当你引用
Microsoft.VisualStudio.Threading
而不是分析器包时),我不确定这是否有效,但是根据这些设置的documentation,这应该有效。<PrivateAssets>all</PrivateAssets>
告诉编译器不要包含下游代码的依赖项,而<IncludeAssets>
选择告诉编译器对给定任务使用依赖项。