Intereting Posts
Проверка суммы платежей с помощью WorldPay В чем разница между инициализацией и присваиванием в C # Преобразование строк в enum в C # OledbConnection Close и / или Dispose очень медленные, занять 20 секунд для выполнения как игнорировать мыльный материал при десериализации xml на объект? Преобразование 2 аргумента Lambda выражение в 1 аргумент Lambda выражение (с указанием одного аргумента) Закрытие соединения методом «выгрузки» Преобразование из списка в формат IEnumerable Программа остановлена, проблема Название события: CLR20r3 Как получить тики от QueryPerformanceCounter в C #? Страtagsи отслеживания утечек памяти, когда вы все сделали неправильно Как разработать addin для MS Outlook? Как использовать аргументы CommandLine, которые не распознаются TopShelf? Есть ли способ сделать динамическое неявное литье типов в C #? Как указать порядок или сортировку с помощью драйвера C # для MongoDB?

Внедрение StyleCop MSBUILD из пакета NuGet

Быстрый предшественник, чтобы сказать, что я обыскал обычные форумы и сети в целом, и я пробовал множество предложений, найденных на этом форуме и в других местах, безрезультатно.

Проблема, с которой я сталкиваюсь, заключается в том, что моя компания стремится внедрять внутренние автоматические одноранговые обзоры (в меру, конечно) с использованием таких инструментов, как StyleCop, ReSharper и JSLint (и т. Д.).

Мы используем специальный пакет NuGet для нашего внутреннего репозитория пакетов NuGet (фид), чтобы наши разработчики получали управляемый выпуск инструментов (т. Е. Они не могут загружать последнюю версию StyleCop, когда она появляется, пока она не будет рассмотрена и выпущена) с добавлением наши пользовательские правила (файл настроек StyleCop). Поскольку мы хотим использовать задачи StyleCop MSBUILD для выделения ошибок во время сборки, сборки для StyleCop должны быть точными, и поэтому мы исключаем установку C: \ Program Files \ version в пользу выпуска NuGet.

Мне удалось создать пакет NuGet, который устанавливается в проект (библиотека classов, веб-сайт и т. Д.), Копирует одобренные сборки StyleCop (StyleCop.dll, StyleCop.CSharp.dll и StyleCop.CSharpRules.dll), Settings.StyleCop и StyleCop.Targets в папку пакета и изменяет файл .csproj, чтобы включить следующие узлы (это просто fragment, конечно):

   false    

Если у меня есть StyleCop, установленный как C: \ Program Files \ и в C: \ Program Files \ MSBUILD, тогда все работает, но с помощью этого метода StyleCop.Targets работает некорректно. Он используется, поскольку Visual Studio 2010 выдает ошибки, если файл удален, и он создает файл StyleCop.Cache. Файл StyleCop.Targets был изменен, чтобы указать на локальную DLL в папке пакета NuGet, и я попробовал несколько разных файлов .Targets, включая стандартный стиль StyleCop (с относительными изменениями в файле). Даже если я переопределяю свойства MSBUILD локально, он не работает, например OverrideSettingsFile.

Файл StyleCop.Targets выглядит так:

     $(BuildDependsOn);StyleCop StyleCopForceFullAnalysis;$(RebuildDependsOn)    $(SourceAnalysisForceFullAnalysis)   false    $(SourceAnalysisCacheResults)   true    $(SourceAnalysisTreatErrorsAsWarnings)   true    $(SourceAnalysisEnabled)   true    $(SourceAnalysisOverrideSettingsFile)        $(SourceAnalysisOutputFile)   $(IntermediateOutputPath)StyleCopViolations.xml     0                                    

Кто-нибудь знает, как я могу заставить это работать? Visual Studio 2010 не показывает никаких сообщений в окне вывода.

Приветствую всех!

Я отправляю решение, которое я натолкнулся на всех, кто находится в подобном положении.

Во-первых, я следовал этому превосходному руководству по отладке операций MSBuild, которые помогли мне сгладить некоторые из логических и переменных:

http://blogs.msdn.com/b/visualstudio/archive/2010/07/06/debugging-msbuild-script-with-visual-studio.aspx

После этого я проверил StyleCopViolations.xml, который был в моей / obj / Debug / папке. Однако это всегда возвращало 0 результатов с помощью всего лишь XML:

  

Я провел некоторое исследование по этому вопросу и обнаружил, что мне нужно включить StyleCop.CSharpRules.dll в мою папку NuGet / lib / net40 / с файлами StyleCop.dll, StyleCop.CSharp.dll и StyleCop.Settings.

Мой проект не нуждался в ссылках на какую-либо из вышеупомянутых сборок, но я понял, что мой пакет NuGet зависел от пакета StyleCop NuGet, который не содержит StyleCop.CSharpRules.dll.

После добавления этой сборки я все еще видел 0 результатов, поэтому я сделал ручное переопределение всех 3-х сборок и файла .Settings из новой установки StyleCop C: \ Program Files \ StyleCop \ installer (из CodePlex). После перезаписывания сборок NuGet это начало работать!

Итак, чтобы завершить, отлаживаем ваш MSBuild (со ссылкой в ​​верхней части этого сообщения) и пока не используйте пакет NuGet!

ура

Используйте StyleCop.MSBuild вместо StyleCop как предложил Дмитрий Лобанов.

т.е. используйте команду install-package stylecop.msbuild в консоли диспетчера пакетов.

Вы можете использовать комбинацию пакетов nuget StyleCop.MSBuild и StyleCop.Error.MSBuild, чтобы включить предупреждения стиля в виде ошибок.