Почему анализаторы Microsoft не могут найти Microsoft.CodeAnalysis?
Я пытаюсь добавить https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/ (последняя стабильная версия) в мой проект ASP.NET. Когда я устанавливаю его через NuGet, я получаю массу ошибок, таких как:
Экземпляр анализатора Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer не может быть создан из \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll или C: notnotzers.dll: 'Microsoft.CodeAnalysis, версия =2.6.0.0, культура = нейтральная, PublicKeyToken=31bf3856ad364e35' или одна из его зависимостей. Системе не удается найти указанный файл. Экземпляр анализатора Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AvoidEmptyInterfacesAnalyzer не может быть создан из \ packages \ Microsoft.CodeQuality.Analyzers.2.6.3 \ analyzers \ dotnet \ cs \ Microsoft.CodeQuality.Analyzers..dll: не удалось загрузить файл или сборку 'Microsoft.CodeAnalysis, версия =2.6.0.0, культура = нейтральная, PublicKeyToken=31bf3856ad364e35' или одна из ее зависимостей. Системе не удается найти указанный файл. Экземпляр анализатора Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.CancellationTokenParametersMustComeLastAnalyzer не может быть создан из \ packages \ Microsoft.CodeQuality.Analyzers.2.6.3 \ analyzers \ dotnet \ cs \ Microsoft.CalyzersA..dll: не удалось загрузить файл или сборку '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.
Те же ошибки!
Когда я смотрю в packages/Microsoft.CodeAnalysis.2.6.0, я замечаю, что там нигде нет.dll. Как правильно установить это? Является ли установка Microsoft.CodeAnalysis правильным решением? Почему зависимости Microsoft.CodeAnalysis.FXCopAnalyzers не устанавливаются автоматически при его установке? Разве это не весь смысл менеджера пакетов? У меня так много вопросов и так мало ответов. Пожалуйста помоги.
4 ответа
Эта проблема в проекте github анализаторов Roslyn предложила добавить ссылку на https://www.nuget.org/packages/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>
1- Выберите Release вместо Debug в Visual Studio
2-Создайте свое решение