2016-10-05 10 views
0

Information already exists о том, как создать анализатор roslyn как пакет NuGet и добавить к нему новую библиотеку классов.Как объединить существующий пакет NuGet для CL с анализатором Roslyn?

Мое положение в обратном порядке: у меня есть библиотека классов с прикрепленным к ней .nuspec, который интегрирован с TFS и имеет всю инфраструктуру создания публикаций вокруг него. Изменение всего этого для работы с анализатором .nuspec вместо этого было бы довольно хлопот.

Могу ли я добавить анализатор в существующий пакет NuGet?

ответ

2

Да, вы можете!

  1. Открыть существующее решением
  2. Добавить новый проект от «анализатора коды Fix (NuGet + VSIX)» шаблон
  3. В существующем проекте NuGet, добавьте обычную ссылку на библиотеку классов анализатора
  4. Скопируйте папку tools\ в корне существующего проекта NuGet (включая .ps1 файлы)
  5. Добавьте эти две строки в существующий файл .nuspec:
<file src="$outdir$MyOrganisation.MyService.Analyzers.dll" target="analyzers\dotnet\cs" exclude="**\Microsoft.CodeAnalysis.*; **\System.Collections.Immutable.*;**\System.Reflection.Metadata.*; **\System.Composition.*" /> 
<file src="tools\*.ps1" target="tools\" /> 

Вы вновь генерироваться .nupkg будет теперь ваш анализатор в комплекте с ним и добавить его в зависимости от того, проект добавляет ссылку на него.

Для очистки вы можете удалить Diagnostic.nuspec в своем проекте анализатора, а также событие AfterBuild в файле .csproj.

Примечание: вы можете удалить exclude, так как теперь вы нацеливаете определенный файл, тогда как ранее он использовал подстановочный знак для выбора всех файлов .dll. Я еще не пробовал это без него, поэтому я оставлю это в ответе на данный момент.