Teamcity и зарегистрируйте dll - PullRequest
0 голосов
/ 19 июля 2011

Я пытаюсь построить проект с TeamCity Professional 6.5.2 У меня есть проект MVC Visual Studio 2010, использующий Visual FoxPro DLL.Сборка не удалась, потому что dll не зарегистрирована.Как я могу зарегистрировать эту dll в машине сборки, как часть процесса сборки?

Спасибо !!

Ответы [ 5 ]

3 голосов
/ 21 июля 2011

Существует два различных сценария, Родриго, ваш сценарий будет разделен на один из следующих:

Сборки, на которые может ссылаться проект: По возможности, включайте зависимые сборки в элемент управления исходным кодом.репозиторий ( 10-я заповедь ), обычно в папке "libs", на которую ссылаются необходимые проекты.Это централизует все ваши зависимости, позволяет новым разработчикам начать работу и решает вашу проблему сборки TeamCity.

Сборки, которые требуют установки GAC: Бывают моменты, когда сборка просто должна бытьустановлен в GAC (то есть RightFax).Честно говоря, проще всего сделать в этом случае просто установить чертову штуку в GAC.Это исключение, и хотя некоторые люди будут философски спорить с этим, альтернативы могут быть немного сложными (например, автоматизировать установку как часть сборки), и за деньги я бы предпочел потратить время в другом месте.

1 голос
/ 19 июля 2011

Установка сборок на каждом компьютере (dev, build, prod) сделает будущие обновления и любую систему непрерывной интеграции сложной для обслуживания в будущем.

Было бы лучше создать папку в вашем рабочем каталоге (Я называю это «Ресурсы»), которая содержит папку для каждой группы DLL.Затем вы просто ссылаетесь на сборку непосредственно из Проекта каждый раз.Вы получаете дубликаты DLL-файлов в разных проектах, но в них все очень чисто и просто.

В Visual Studio 2010 вы можете загрузить небольшую утилиту под названием NuGut, которая, как я считаю, помогает лучше управлять сборками.

1 голос
/ 19 июля 2011

Плохая идея зарегистрировать все библиотеки DLL на компьютере агента сборки, иногда вы можете обнаружить, что вам необходимо установить Visual Studio, например, на машину агента сборки;)

Я бы предложил разместитьтакие библиотеки вместе с вашей кодовой базой в системе управления версиями (я полагаю, вы используете ее) и просто ссылаетесь на папку lib, объявив свойство MSBUild как

<PropertyGroup>
  <LibFolder>$(PathFromCommandLineOrJustHardCodedPath)</LibFolder>
</PropertyGroup>

И затем перед выполнением сборки / компиляции просто скопируйтефайлы из $ (LibFolder) в сборку $ (OutputFolder) с помощью стандартной команды MSBuild Copy, указав исходные и целевые файлы, и вот так.

Чтобы заставить TeamCity загружать файлы Lib (dll) из папки VCSпросто добавьте сопоставление путей в:

TeamCity Configuration Settings -> Edit Build Configuration -> VCS Root settings -> Client Mapping

РЕДАКТИРОВАТЬ:

В вашем случае похоже, что у вас есть интеграционный тест, который зависит от внешнего сервера COm, который вам нужно запустить, так что вы можете программно зарегистрироватьэта DLL, например, в TestSetup, а затем не забудьте отменить ее регистрацию в тесте TearDown.В любом случае вам нужно просто ссылаться на эту DLL как VS Project -> Add Existing Item -> Add as Link + set Copy to Output Directory -> Copy if newer

Как зарегистрировать COM dll: см. этот пост SO

0 голосов
/ 06 ноября 2013

Согласен с Трой Хант.

Для непрерывной интеграции с TeamCity 8.0.2, где требуется ссылка на сборку (пользовательская общая сборка) из GAC, выполните следующие действия.

1. Add the assembly to the build pack (In my case its nuget package).
2. Before starting the build process (MSBuild, Visual Studio etc), register the assembly to GAC with the help of a command line build runner.
3. Continue with the build process.

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

В моем случае, когда код ссылается на пользовательский компонент из GAC, MSBuild проигнорировал ссылку на сборку и завершил процесс сборки без исключения. Но развертывание с выходом сборки не удалось. Чтобы преодолеть эту ситуацию, я использовал шаги Give.

Примечание. Обязательно, чтобы агент TeamCity работал под учетной записью с повышенными правами. В противном случае добавление в GAC не будет разрешено, и процесс сборки может завершиться неудачей.

0 голосов
/ 22 июля 2011

Наконец, я добавил событие предварительной сборки в Visual Studio, выполнив команду regsvr32. DLL была в известном месте, поэтому я ссылался следующим образом: regsvr32 / s $ (SolutionDir) Lib \ ProjDataAccess \ ProjDataAccess.dll

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