Почему анализаторы 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-Создайте свое решение

Другие вопросы по тегам