У нас есть проект ASP.NET MVC, из которого мы хотим создать пакет для публикации во время автоматизированной сборки. Сборка использует немодифицированный шаблон по умолчанию с Arguments /p:DeployOnBuild=True /p:CreatePackageOnPublish=True
.
Если я делаю WebDeploy непосредственно на сервер, он работает нормально (если я изменю /p:CreatePackageOnPublish на false), но я бы предпочел просто создать пакет, который я смогу развернуть во время сборки Lab.
Сообщение об ошибке выглядит следующим образом:
TF270002: Произошла ошибка при копировании файлов из 'C:\Builds\19\Binaries' в '\nas\Build\Drop\MyProject\MyProject_Development.Test\20120209.1'. Подробности: Указанный путь, имя файла или оба имени слишком длинные. полное имя файла должно быть менее 260 символов, а имя каталога должно быть менее 248 символов.
Первая часть проблемы заключалась в слишком длинном пути к папке сборки (274 символа), но после изменения рабочего каталога с $(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionPath)
на $(SystemDrive)\Builds\$(BuildDefinitionId)
длина пути уменьшилась до 230 символов, так что все должно быть в порядке.
Теперь проблема заключается в пути к папке drop, хотя корневой путь сам по себе не такой длинный \\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)
, чтобы сэкономить несколько символов, но этого недостаточно. Я думаю, мы могли бы немного сократить имя сборки, но это нарушило бы используемое соглашение об именовании (хорошо, это не было бы действительно большой проблемой, но это было бы раздражающим!), и все же это было бы похоже на краткосрочное решение.
Что ещё нужно сделать?