Неверное именование файлов *.dacpac при сборке проекта *.sqlproj SSDT на сервере сборки TeamCity 7

У нас есть задача MSBuild, которая создает наш файл *.sqlproj, выходные данные которого загружаются обратно в TeamCity в качестве артефакта для последующего развертывания.

Как и в случае с этим пользователем, у нас возникают непредсказуемые имена выходных файлов: with-teamcity-8">Недопустимые имена файлов при попытке развернуть проект SSDT с помощью TeamCity 8

Похоже, что иногда он создает этот выходной файл в /bin/Release:

MyProj.sqlproj.dacpac

Затем последующие сборки создают этот файл в той же папке:

MyProj.dacpac

Мы еще не проводили углубленное тестирование — мне было интересно, видел ли кто-нибудь подобное или предложил способ устранения неполадок?

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


person Michael12345    schedule 17.10.2014    source источник


Ответы (2)


Похоже, у вас есть конфликтующие файлы .sqlproj, которые проверяются.

Я бы начал с проверки истории.

person Vishal Madhvani    schedule 19.10.2014
comment
Я и сам это подозревал, и проверил историю изменений файла .sqlproj. Было внесено множество законных изменений (например, добавление новых объектов в проект), но ничего, что могло бы влиять на имя окончательного *.dacpac. - person Michael12345; 21.10.2014

Что ж, после более внимательного изучения журнала сборки я увидел, что бегун TeamCity MSBuild, похоже, создает некоторые временные файлы виртуального проекта (или что-то еще, я точно не знаю, потому что они удаляются) с такими именами, как:

MyProj.sqlproj.teamcity

Я предположил, что это может сбивать с толку MSBuild или одну из целей, связанных со сборкой dacpacs, поэтому я заменил этап сборки TeamCity MSBuild на этап сборки из командной строки, который вызывает MSBuild для исходного файла проекта, и это, похоже, решило проблему. Теперь он создает dacpac с файлом, который я ожидаю.

У меня нет времени копать дальше, но я могу поверить, что где-то в цепочке есть какая-то логика, которая позволяет получить имя для окончательного *.dacpac из имени используемого файла проекта. Я предполагаю, что он просто удаляет все после последнего "." и добавляет суффикс ".dacpac".

Я не совсем понимаю, почему он иногда создает файл *.dacpac с правильным именем, но иногда я выполнял ручную сборку в рабочей папке агента TeamCity из командной строки на сервере сборки. собой, так что это мог быть просто файл, оставшийся от предыдущих исполнений.

person Michael12345    schedule 20.10.2014
comment
Существуют разные агенты сборки, работающие с разными версиями MsBuild. Я видел различия между v15 и v16. - person David Rushton; 20.12.2019