如何将分析器作为 nuget 包分发

问题描述 投票:0回答:2

我有一个库,其中包含一些使用 roslyn 引擎构建的分析器。这个分析器库针对 netstandard2.0

现在,我想在我的其他项目中使用这个分析器库。它针对 net45。 如果包括我的分析器,一切正常:

<ItemGroup>
    <Analyzer Include="MyAnalyzers.dll" />
</ItemGroup>

但是,当我尝试使用我的 nuget 提要中的分析器时,它不起作用:

<ItemGroup>
  <PackageReference Include="MyAnalyzers" Version="1.0.0">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>analyzers</IncludeAssets>
  </PackageReference>
</ItemGroup>

我得到的错误 (NU1202) 说:Package MyAnalyzers 1.0.0 is not compatible with net452 (.NETFramework,Version=v4.5.2) / win-x64。包 MyAnalyzers 1.0.0 支持:netstandard2.0 (.NETStandard,Version=v2.0)

我想念什么?

nuget roslyn-code-analysis
2个回答
0
投票

根据Microsoft's docs on .NET Standard,与.NET Standard 2.0 兼容的.NET Framework 最早版本是.NET Framework 4.6.1(尽管它也说这个兼容实现中存在一些错误,并且建议使用 .NET Framework 4.7.2)。

因此,您使用 .NET Framework 4.5.2 的项目与包不兼容,这就是错误消息所说的。

您需要升级引用该包的项目以使用更高版本的 .NET Framework,或者您需要使分析器包成为多目标

netstandard2.0
以及
net452
(好吧,我不知道 Roslyn 是否支持 net452 上的分析器,但多目标是阻止 NuGet 报告 NU1202 错误的一种方法)。


0
投票

我的问题是,带有分析器的 nuget 需要遵循一些特定的内部模式。在我更新它以遵循 https://learn.microsoft.com/en-us/nuget/guides/analyzers-conventions#analyzers-path-format 指南后,一切开始按预期工作

© www.soinside.com 2019 - 2024. All rights reserved.