Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Code Contracts и TeamCity

#c_sharp #непрерывная_интеграция #msbuild #teamcity


Коллеги, добрый день.

Настраиваю TeamCity 10 для сборки ASP.NET проекта созданного в VS 2015. 
В проекте, кроме всего прочего, используется библиотека CodeContracts. На сборочном
сервере VisualStudio не установлено. Насколько я понимаю, в этом случае TeamCity использует
установленный на машине msbuild. В результате, при сборке на сервере рерайтинг контрактов
не происходит.

Нашел несколько рекомендаций в интернете. Делал следующее:


Скачал с сайта visualstudiogallery и установил библиотеку CodeContracts на сервере.
В файле проекта прописал дополнительный импорт



  C:\Program
Files (x86)\Microsoft\Contracts\




Не помогло. Ничего не рерайтилось.




Установил библиотеку контрактов как nuget пакет в проект (ссылка). Пакет официальный
от Microsoft. Все тулзы для рерайта лежат внутри этого пакета. В файле проекта добавил
похожий импорт, однако ссылающийся на .target файлы внутри данного nuget пакета. 



  $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\packages\DotNet.Contracts.1.10.20606.1\'))`




Аналогично - не помогло. 

Интересная деталь - в куске конфига в пункте 2 переменная CodeContractsInstallDir
"указывает" на папку вышеописанного nuget пакета. Логично предположить, что операции
с контрактами будут вестись с помощью тулзов из этой папки. Однако при сборке студией
на своей машине в логах я вижу использование тулзов контрактной библиотеки из стандартного
расположения "C:\Program Files (x86)\Microsoft\Contracts\Bin\ccrewrite.exe". Как это
происходит - тоже не совсем понятно...

Возможно кто-то сталкивался с данной проблемой и может подсказать решение и поделится
опытом?
    


Ответы

Ответ 1



В результате никакие частичные решения не помогли. Пришлось установить 2015 студию со всеми либами и рантаймом на сборочный сервер. После этого все подхватывалось и работало корректно. Кстати в следующем проекте от CodeContracts отказался, слишком мало бенефитов для меня...

Комментариев нет:

Отправить комментарий