Почему я не должен устанавливать Visual Studio на моем CI-сервере? - PullRequest
5 голосов
/ 21 июля 2010

Многие новички в CI (Continuous Integration) устанавливают VS (Visual Studio) на свой CI-сервер «потому что это требуется для компиляции кода». MSTest - это общее упоминание, приведенное здесь.

Почему я не должен устанавливать VS (или вообще любое программное обеспечение, не входящее в комплект поставки) на мой CI-сервер?

(Этот вопрос ранее не задавался, по-видимому, поэтому я добавляю его для справки. Если он уже существует, извините, я пропустил его, пожалуйста, объедините. Если в течение некоторого времени не будет дан ответ на этот вопрос, я могу добавить один сам)

Ответы [ 2 ]

7 голосов
/ 21 сентября 2016

Вам может понадобиться установить Visual Studio в любом случае, из практических соображений

Я собирался попытаться опровергнуть принятый ответ, опубликованный @TomasLycken в комментариях, но обнаружил, что мне нужно больше места для разговора. Несмотря на то, что я технически согласен с утверждением @TomasLycken, здесь я перечислю некоторые зависимости, которые мне было трудно установить на моем CI-сервере, - и предоставлю вам право решать, насколько правильным является принятый ответ ...

1 - основная сборка взаимодействия 'mshtml'

Вы можете увидеть проблему, с которой я столкнулся при выводе моей сборки на этой S.O. вопрос я создал и ответил. Имейте в виду, я потратил несколько часов, чтобы выяснить, как зарегистрировать желаемую PIA - и это было результатом запуска некоторых .exe-файлов на сервере, который пришел из моей установки V.Studio - хмммммм

КОНТЕКСТ: У меня был проект выигрышных форм, который использовал элемент управления веб-браузера ... и в событии 'WebDocumentCompleted' я приводил DomDocument к hshtml.IHTMLDocument2 .. и поэтому я в моем проекте была ссылка на Microsoft.mshtml.

РЕЗУЛЬТАТ: Теперь @TomasLycken предлагает мне разобраться с этим, исправив мой код. Сначала я хотел оплакивать это предложение. Мой код развернут и работает! Но когда я выполняю поиск в Интернете, я вижу, что Microsoft не рекомендует использовать их mshtml PIA вне среды Visual Studio, они разработали ее для .

Оскорбившие 10 строк кода фактически выполняли небольшую очистку данных от имени наших пользователей, которые проводят исследования по техническим темам в нескольких известных веб-порталах. Но когда я тестировал этот код, написанный в 2009 году, оказалось, что DOM, которым он когда-то манипулировал, теперь изменился в 2016 году. Я знаю шокирующее . Наверное, не самый умный код. Возможно, пришло время отключить эту функцию - другими словами, исправить код и подтвердить его .

@ TomasLyken Я думаю, это правильно.

2 - сценарий пост-сборки проекта Win Forms

КОНТЕКСТ: Итак, я наткнулся на эту классную технику пост-сборки на SO , которая позволяет моему файлу app.config в моем проекте WinForms подвергаться XDT-преобразованию, аналогичному тому, как Файлы web.config моих веб-проектов преобразуются. Ну, это просто работает OOTB, так сказать, если вы копируете из S.O. и в исходный файл .csproj или .vbproj. Но, как только вы поместите все это на сервер сборки без Visual Studio, критическая часть завершится сбоем из-за зависимости от:

 $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets

Теперь это достаточно просто для исправления .. Я только что скопировал на сервер CI мой каталог C:\Program Files (x86)\MSBuild\Microsoft. Но должен ли я? Так как я отказался от оговорок о том, что Visual Studio обычно будет поддерживать ... можно утверждать, что принятый ответ @ TomasLycken по-прежнему прав в этом вопросе, тоже.

3 - Просто установите все пакеты .NET Framework и Multi-Targeting Pack на месте

Пункты 1 и 2 выше, на самом деле были последними вещами, которые я победил в своей попытке запустить мою первую работу по сборке. И моя первая работа по сборке для стека решений, который я создал и поддерживал в течение последних 8 лет ... поэтому он выдержал несколько фреймворков и имел бы некоторую нетривиальную текстуру. Я знал, что это будет нелегко. На самом деле, я надеялся создать CI-сервер, который мог бы собрать этот .sln, что он на самом деле был бы готов построить большинство любых других решений, которые мы на него бросили.

Когда я впервые получил свой чистый сервер "Windows 2012 R2", на нем просто не хватало многих вещей ... и мне интересно, если бы я сначала установил Visual Studio, если бы он сразу исправил некоторые из этих вещей

Ниже приведен мой краткий обзор того, что я должен был сделать - но он не показывает боль и страдания, связанные с выяснением всего этого и ложных стартов. Может быть, это поможет кому-то еще.

> First, uninstalled 4.6.1 framework
-- (find Update for Microsoft Windows (KB3102467) and click Uninstall.)
-- also uninstalled anything from MS labeled with C++ redistributable (a later step will restore these)

> Then, install Windows 7 SDK (installs critical "reference assemblies" and a proper baseline 4.0 framework)
-- Then, install Multi-Targeting Pack for Framework 4.0.1 (netfx_401mtpack.exe)
-- Then, install Multi-Targeting Pack for Framework 4.0.3 (netfx_403mtpack.exe)

> Then, reinstalled 4.6.1 framework for 2012 R2 (KB3102467) 

> Then, installed Microsoft .NET Framework 4.6.1 Developer Pack (DP461-DevPack-KB3105179-ENU.exe)

> Then, installed "Visual Studio 2015 Build Tools" (BuildTools_Full.exe)

> Downloaded a copy of nuget.exe and put it in the C:\Windows directory

4 - избавление от предупреждения «отсутствует набор правил» MSB3884

Из сообщения @ kevinbosman на этот GitHub выпускает ветку

Если вы не хотите редактировать файл Microsoft.CodeAnalysis.Targets, обратите внимание, что этого недостаточнопросто скопируйте папку C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets\ на сервер сборки.

Вам также необходимо создать ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\EDev и добавить строковое значение StanDir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\

5 - Получение MSTest для правильной работы

  • Нужно скопировать dll на вашу сборочную машину, некоторые должны зарегистрироваться с GAC Подробнее здесь , в частности:
    • Microsoft.VisualStudio.QualityTools.Resource.dll
    • Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
  • Нужен скопированный реестр реестра вашей машины разработчикана сервер сборки
  • некоторые предупреждения, если вы хотите, чтобы они исчезли, согласно этому справочному форуму Microsoft Visual Studio , требующему установки VS 2010 и Feature Pack 2 .
6 голосов
/ 21 июля 2010

Потому что вам не нужно . Лицензия на Visual Studio довольно дорогая, поэтому иметь лицензию, лежащую на сервере, где никто не использует ее, - пустая трата времени. Есть пара аргументов, по которым вам все равно нужно установить полноценный экземпляр Visual Studio на вашу непрерывную интеграцию. сервер - но вот их контр аргументы:

Причина 1: мне нужно это скомпилировать.
Реальность: Нет, ты не. Вам нужно MSBuild для компиляции, но это доступно бесплатно в Windows SDK. Обратите внимание, что существует несколько версий для разных операционных систем и версий .NET, поэтому будьте осторожны, чтобы загрузить правильную.

Причина 2: он нужен для быстрого исправления на сервере.
Реальность: Нет, ты не. Вы не должны делать быстрые исправления на сервере - вы должны извлекать данные из своей системы контроля версий, делать исправления, собирать и запускать тесты локально, пока она не заработает, зарегистрируйтесь, и система CI сделает отдых для тебя. Вот почему у вас есть система CI.

Причина 3: без Visual Studio я не могу запустить MSTest без моего CI-сервера.
Реальность: Неправильно. AFAIK, MSTest Runner также является частью SDK (по крайней мере, это то, на что это похоже на нашем CI-сервере здесь - хотя я не могу проверить это, так как в настоящее время у нас нет никаких тестов ...). Тем не менее, быстрый поиск в Google нашел в этом блоге , который объясняет, как это сделать без SDK. Я не прочитал это подробно, поэтому я не могу обещать, что это работает, или что это законно. Вы были предупреждены.

Не стесняйтесь добавлять больше причин в комментарии, и я опровергну их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...