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

17
我正在尝试将最新稳定版的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.dll创建分析器Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AvoidEmptyInterfacesAnalyzer的实例:无法加载文件或程序集“Microsoft.CodeAnalysis,Version = 2.6.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项。系统找不到指定的文件。

无法从\packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll创建Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.CancellationTokenParametersMustComeLastAnalyzer分析器的实例:无法加载文件或程序集'Microsoft.CodeAnalysis, Version=2.6.0.0, Culture=neutral, 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。

仍然出现相同的错误!

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


3个回答

19

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


2
想要分享一下,在我的設置中,有一個包含代碼分析器(引用了 Microsoft.CodeAnalysis packages v3.9.0)的 C# 專案(.NET Standard 2.0),以及一個引用代碼分析器專案的 C# 專案(.NET Core 3.1)。我可以在 Windows 的 VS 中進行構建,但使用相同的錯誤信息在 WSL 上使用 dotnet build 時無法構建,出現了 "Could not load file or assembly 'Microsoft.CodeAnalysis" 的錯誤信息。嘗試了各種解決方法,但這個解決方案仍然可以在所有環境中正常運作。感謝 @brian-gradin 的分享! - yuks
1
仍然适用于Microsoft.Net.Compilers==4.2.0,这个引用需要在引用生成器csproj的csprog上。 - Yochai Lehman
1
Microsoft.Net.Compilers.Toolset 已经取代了 Microsoft.Net.Compilers - David Peden

6

如果将来有人遇到这个问题,请注意其中一个可能原因是 VS 过时了。

如果上面的解决方案不行,安装或更新 VS 可能会解决这个问题。


2
在*.csproj文件中添加附加项。
<PropertyGroup>
  <OutputType>Exe</OutputType>
  <TargetFramework>netcoreapp3.1</TargetFramework>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
  <AnalysisMode>AllEnabledByDefault</AnalysisMode>
  <AnalysisLevel>latest</AnalysisLevel>
</PropertyGroup>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接