2015-01-20 3 views
7

При использовании .NET Compiler Platform SDK шаблонов (https://visualstudiogallery.msdn.microsoft.com/849f3ab1-05cf-4682-b4af-ef995e2aa1a5)VS2015 Диагностика с исправлением кода - NuGet ИЛИ VSIX ИЛИ оба?

создать Рослины Диагностический с кодом Фикса, я получаю как пакет NuGet и VSIX - как указан в риом:

«Строит это проект будет производить анализатор .dll, а также следующие два способа вы можете упаковать этот анализатор:

  • NuGet пакет (.nupkg файл), который добавит сборку в качестве проекта локального анализатора, участвует в сборках.

  • Расширение VSIX (файл .vsix), который применит ваш анализатор ко всем проектам и работает только в среде IDE ».

Теперь следующий сценарий: что, если оба установлены - в NuGet в рамках проекта (например, политики компаний для этого проекта), то VSIX часть локальной установки разработчика (например, таким образом она получает анализаторы другие проекты тоже). На сегодняшний день предложения будут отображаться дважды для вышеупомянутого сценария.

Могу ли я как-то сказать VS2015, что оба (NuGet/VSIX) на самом деле одинаковы (и он работает только один раз)? Или один подход, предпочтительный для развертывания (например, NuGet), а другой (VSIX) предназначен только для отладки диагностики (более удобный, чем NuGet)? Есть ли какие-то официальные рекомендации по этому поводу?

(Примечание: я работаю на NR6Pack)

ответ

4

Недавно мы внесли изменения, чтобы объединить на основе имени анализатора. Поэтому в том случае, если анализатор VSIX и анализатор Project имеют одинаковое имя AssemblyName, он будет запускаться только один раз, а ошибки будут сообщаться только один раз в списке ошибок. Это изменение должно появиться в следующем обновлении для VS2015 (он, к сожалению, не попал в недавно выпущенный VS 2015 CTP5).

Что касается NuGet против VSIX как выбор механизма развертывания:

  • Развертывание через NuGet и прикрепляя анализатор для проекта означает, что анализатор путешествует с проектом SourceControl и поэтому его легко применять те же правила для команда. Это также означает, что сборка командной строки сообщает о проблемах, о которых сообщает анализатор.
  • Развертывание в качестве VSIX означает, что каждый проект в VS и эти проблемы не будут создаваться с помощью строкой командной строки.

Как я полагаю, большинство правил должно быть развернуто через NuGet и принудительно соблюдено на уровне команды, но правила, которые являются личными предпочтениями, вероятно, должны быть развернуты через VSIXes.

+1

Что происходит, если два * разных * NuGets/VSIXs имеют идентично названные анализаторы? Вы идете по атрибутам (какие), имени класса или какой комбинации? –

+0

Спасибо за разъяснение! –

+0

В дополнение к идентично названным анализаторам от разных поставщиков - что такое история версий? Т.е. VSIX находится на уровне v2.0, тогда как NuGet все еще находится на уровне v1.4? (предполагая различные анализаторы и исправления ошибок/различное поведение) –

Смежные вопросы