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

Bri*_*din 9 c# code-analysis fxcop analyzer microsoft.codeanalysis

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

无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer 的实例:无法加载文件或程序集'Microsoft.CodeAnalysis, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。系统找不到指定的文件。无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AvoidEmptyInterfacesAnalyzer 的实例.dll:无法加载文件或程序集“Microsoft.CodeAnalysis,版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。系统找不到指定的文件。无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.CancellationTokenParametersMustComeLastAnalyzer 的实例.dll:无法加载文件或程序集“Microsoft.CodeAnalysis,版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件.. 版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件.. 版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件..

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

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

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

同样的错误!

当我查看包/Microsoft.CodeAnalysis.2.6.0 时,我注意到那里没有 .dll 。安装它的正确方法是什么?安装 Microsoft.CodeAnalysis 甚至是正确的解决方案吗?为什么安装时没有自动安装Microsoft.CodeAnalysis.FXCopAnalyzers的依赖?这不是包管理器的全部意义吗?我的问题太多,答案太少。请帮忙。

小智 6

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

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


Bri*_*din 5

Roslyn 分析器 github 项目上的这个问题建议添加对Microsoft.Net.Compilers v2.6.1的引用。我在 Microsoft.CodeAnalysis.FXCopAnalyzers 的依赖链中的任何地方都找不到这个包,但我注意到我的项目中安装了 1.0.0 版。我删除了软件包并安装了 v2.10.0,现在一切似乎都按预期工作。

  • 想在我的设置中分享这一点:包含代码分析器(引用 Microsoft.CodeAnalysis 包 v3.9.0)的 C# 项目(.NET Standard 2.0)和引用代码分析器项目的 C# 项目(.NET Core 3.1)。我可以在 Windows 中的 VS 上构建,但无法使用“dotnet build”在 WSL 中构建,并出现相同的错误消息:“无法加载文件或程序集“Microsoft.CodeAnalysis”。尝试了各种解决方法后,该解决方案**仍然有效**,并且在所有环境中始终有效。感谢@brian-gradin 分享! (2认同)