为什么 Microsoft 分析器找不到 Microsoft.CodeAnalysis?

Why can't Microsoft analyzers find Microsoft.CodeAnalysis?

我正在尝试将 Microsoft.CodeAnalysis.FXCopAnalyzers(最新的稳定版本)添加到我的 ASP.NET 项目中。当我通过 NuGet 安装它时,出现大量错误,例如:

An instance of analyzer Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer cannot be created from \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll : Could not load file or assembly 'Microsoft.CodeAnalysis, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.. An instance of analyzer Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AvoidEmptyInterfacesAnalyzer cannot be created from \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll : Could not load file or assembly 'Microsoft.CodeAnalysis, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.. An instance of analyzer Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.CancellationTokenParametersMustComeLastAnalyzer cannot be created from \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll : Could not load file or assembly 'Microsoft.CodeAnalysis, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..

注意:为了简洁起见,我省略了127个错误。它们都非常相似。不过,需要注意的一件事是,并非所有分析器都在 Microsoft.CodeQuality 命名空间中;有些在 Microsoft.NetCore,有些在 Microsoft.NetFramework.

所以我说好的,我必须先安装 Microsoft.CodeAnalysis v2.6.0.0。看起来很奇怪,这不是由 NuGet 自动安装的依赖项,但无论如何。

所以我还原了我在 Git 中的所有更改,重新打开解决方案,安装 Microsoft.CodeAnalysis v2.6.0.0,然后安装 Microsoft.CodeAnalysis.FXCopAnalyzers 的最新稳定版本。

同样的错误!

当我查看 packages/Microsoft.CodeAnalysis.2.6.0 时,我注意到其中没有任何 .dll。正确的安装方法是什么?安装 Microsoft.CodeAnalysis 是正确的解决方案吗?为什么 Microsoft.CodeAnalysis.FXCopAnalyzers 的依赖项在安装时没有自动安装?这不是包管理器的全部意义吗?我的问题很多,答案却很少。请帮忙。

This issue on the Roslyn analyzers github project suggested adding a reference to Microsoft.Net.Compilers v2.6.1。我在 Microsoft.CodeAnalysis.FXCopAnalyzers 的依赖链中的任何地方都找不到这个包,但我注意到我的项目中安装了 1.0.0 版。我删除了软件包并安装了 v2.10.0,现在一切似乎都按预期工作了。

对于以后 运行 遇到此问题的任何人来说,只是指出可能发生这种情况的原因之一是因为 VS 已过时。

如果上述解决方案不能解决问题,则新安装或更新 VS 可能解决问题。

添加*.csproj

<PropertyGroup>
  <OutputType>Exe</OutputType>
  <TargetFramework>netcoreapp3.1</TargetFramework>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
  <AnalysisMode>AllEnabledByDefault</AnalysisMode>
  <AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>