Насколько я понимаю, есть два способа распространять и использовать анализаторы roslyn:
- Как плагин Visual Studio
- Как пакет Nuget
Я часто обнаруживаю, что хочу наложить определенные ограничения, специфичные для домена, вместе с удобными исправлениями кода. (Например, «Нам нужна отложенная загрузка Entity Framework, поэтому каждое свойство навигации в пространстве имен WidgetFrobber.EntityFrameworkEntities должно быть виртуальным».)
Тривиально написать крошечный анализатор, который не сможет выполнить сборку, если кто-то из моей команды случайно напишет public ICollection<Widget>
вместо public virtual ICollection<Widget>
, но поскольку этот гипотетический анализатор не предназначен для совместного использования за пределами моей команды (или, фактически, за пределами .sln, который он определен in) Я бы предпочел не распространять плагин и не обновлять пакет nuget всякий раз, когда я обновляю анализатор.
References -> Add Reference -> Project
позволяет мне ссылаться на типы анализатора, но на самом деле не добавляет его в качестве анализатора.References -> Analyzers -> Add Analyzer -> Browse...
ожидает .dll, а не ссылку на проект.
Можно ли сослаться на анализатор Roslyn внутри определяющего его .sln точно так же, как я могу сослаться на другой проект?