我正在尝试将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的依赖项时未自动安装?这不是包管理器的重点吗?我有很多问题,却没有几个答案。请帮忙。
答案 0 :(得分:0)
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>