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

时间:2019-01-25 18:07:03

标签: 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,版本= 2.6.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件..   无法从\ packages \ Microsoft.CodeQuality.Analyzers.2.6.3 \ analyzers \ dotnet \ cs \ Microsoft.CodeQuality.Analyzers.dll创建分析器Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AvoidEmptyInterfacesAnalyzer的实例:无法加载文件或程序集'Microsoft.CodeAnalysis,版本= 2.6.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件..   无法从\ packages \ Microsoft.CodeQuality.Analyzers.2.6.3 \ analyzers \ dotnet \ cs \ Microsoft.CodeQuality.Analyzers.dll创建分析器Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.CancellationTokenParametersMustComeLastAnalyzer的实例:无法加载文件或程序集'Microsoft.CodeAnalysis,版本= 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的依赖项时未自动安装?这不是包管理器的重点吗?我有很多问题,却没有几个答案。请帮忙。

4 个答案:

答案 0 :(得分:0)

Roslyn分析器github项目上的

This问题建议添加对Microsoft.Net.Compilers v2.6.1的引用。我在Microsoft.CodeAnalysis.FXCopAnalyzers的依赖关系链中的任何地方都找不到此程序包,但是我注意到我的项目中安装了1.0.0版本。我删除了该软件包并安装了v2.10.0,现在一切似乎都按预期运行。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

1- 在 Visual Studio 中选择 Release 而不是 Debug

2-构建您的解决方案

答案 3 :(得分:0)

添加到 *.csproj

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