Используйте анализатор кода Roslyn в том же решении - PullRequest
2 голосов
/ 19 марта 2019

У меня есть решение, состоящее из нескольких проектов .NET Core.У меня есть несколько задач анализа кода, которые я хотел бы выполнить, которые применимы только к этому решению, поэтому нет смысла помещать их в отдельное хранилище / решение.Используя соответствующий шаблон, я создал три проекта для анализаторов:

  • Example.Analyzer
  • Example.Analyzer.Test
  • Example.Analyzer.Vsix

Example.Analyzer.Vsix не компилируется, потому что Visual Studio требует .NET Framework, но я ориентируюсь на .NET Core для кроссплатформенного использования.Пока я игнорирую этот проект, но намерен удалить его.Example.Analyzer и Example.Analyzer.Test оба предназначаются для netcoreapp3.0, наряду со всеми другими проектами в решении.

Я написал свои анализаторы и тесты пройдены.Однако я не уверен, как на самом деле использовать эти анализаторы из других проектов.Я пытался добавить Example.Analyzer в качестве зависимости через ProjectReference, но, похоже, это не позволяет анализаторам.

1 Ответ

2 голосов
/ 19 марта 2019

Из того, что я обнаружил, есть два способа добавить поддержку анализаторов в проект: через пакет vsix или nuget (как в примере здесь ).

Установка этого пакета в виде зависимости nuget показывает, что существует определенное свойство для определения типа содержимого зависимости:

<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>

Как видите, одним из типов активов являются анализаторы.К сожалению, кажется, что не поддерживается установка свойства «IncludeAssets» для зависимости проекта, даже если оно отображается в панели свойств.

Я бы предложил вам попробовать ссылку на nuget вместо ссылки на проект.

Чтобы получить пакет nuget из вашего проекта, просто щелкните его правой кнопкой мыши и выберите «Опубликовать».Кроме того, для размещения вашего нового nuget потребуется локальный источник репозитория Nuget.

...