У нас есть проект ASP.NET MVC, из которого мы хотим создать пакет публикации во время автоматической сборки.В сборке используется неизмененный шаблон по умолчанию с аргументами /p:DeployOnBuild=True /p:CreatePackageOnPublish=True
.
. Если я делаю WebDeploy напрямую с сервером, он работает нормально (если я изменяю / p: CreatePackageOnPublish на false), но я бы предпочел простосоздайте пакет, который я могу развернуть во время сборки Lab.
Сообщение об ошибке выглядит следующим образом:
TF270002: Произошла ошибка при копировании файлов из 'C: \ Builds \ 19 \Двоичные файлы 'to' \ nas \ Build \ Drop \ MyProject \ MyProject_Development.Test \ 20120209.1 '.Подробности: указанный путь, имя файла или оба они слишком длинные.Полное имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов.
Первая часть проблемы заключалась в том, что путь к папке сборки был слишком длинным (274 символа)но после изменения рабочего каталога с $(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionPath)
на $(SystemDrive)\Builds\$(BuildDefinitionId)
длина до 230 символов сокращается, поэтому все должно быть в порядке.
Теперь проблема заключается в пути в папке удаления, хотя сам по себе корневой путь не такой длинный \\nas\Build\Drop\MyProject
, имя сборки и формат номера сборки быстро увеличиваются до длины MyProject_Development.Test\MyProject_Development.Test_20120208.1
.После этого все их вложенные пути создают действительно глубокие структуры папок _PublishedWebsites\MyProject.Web_Package\Archive\Content\C_C\Builds\19\Sources\MyProject\Source\MyProject.Web\obj\Debug\Package\PackageTmp\Content\ui-lightness\Images\ui-bg_diagonals-thick_18_b81900_40x40.png
.
Так есть ли способ обойти эту проблему?Я сократил формат номера сборки с $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)
до $(Date:yyyyMMdd)$(Rev:.r)
, чтобы сохранить несколько символов, но этого недостаточно.Я думаю, мы могли бы немного сократить имя сборки, но это нарушило бы используемое соглашение об именах (хорошо, это не было бы действительно большой проблемой, но это было бы раздражающим!), И все же это было бы похоже на краткосрочное решение.
Что еще можно сделать?