После создания пакета анализатора Roslyn для .Net Standard 2.0, когда я ссылаюсь на пакет в другом проекте, я получаю следующую ошибку:
'C: \ Users \ username.nuget \ packages \ analyzer4 \ 1.0.0.1 \ analyzers \ dotnet \ cs \ Analyzer4.dll' зависит от 'netstandard, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51 'но он не был найден. Анализаторы могут работать некорректно, если отсутствующая сборка не добавлена в качестве ссылки на анализатор.
Воспроизведение проекта с использованием анализатора: здесь . Это репродукция представляет собой ванильное консольное приложение .Net Core 2.0 со ссылкой на анализатор и никаким другим кодом. Сам анализатор был построен просто путем создания проекта Analyzer по умолчанию в Visual Studio, изменения его таким образом, чтобы он предназначался для netstandard2.0 вместо netstandard1.3, а затем построения в режиме выпуска для создания файла .nupkg. Анализатор работает правильно, как показано на рисунке, но генерируется предупреждение.
Обсуждается это предупреждение в различных местах на Github, например, здесь , но в этих случаях автор анализатора намеренно удалил некоторый код локальной библиотеки. В этом случае анализатор не ссылается ни на какую другую библиотеку.
Мне не ясно, что именно означает добавить анализатор в качестве «ссылки на анализатор», а не просто в качестве обычной ссылки на проект. Я попытался изменить
<PackageReference Include="Analyzer4" Version="1.0.0.1" />
до
<Analyzer Include="..\LocalPackages\Analyzer4.1.0.0.1.nupkg" />
, но это привело к другому сообщению об ошибке (" PE-образ не содержит управляемых метаданных ").
Может кто-нибудь объяснить, что означает эта ошибка и в идеале, как ее исправить?