У нас есть проект ASP.NET MVC, который мы хотим создать пакет публикации во время автоматической сборки. В сборке используется немодифицированный шаблон по умолчанию с аргументами /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 символов как самый длинный путь, поэтому он должен быть в порядке.
Теперь проблема заключается в пути в папке с перепадом, хотя корневой путь не так уж и длинный \\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)
, чтобы сохранить несколько символов, но этого недостаточно. Я думаю, мы могли бы немного сократить имя сборки, но это нарушит соглашение об именовании (хорошо, это не будет большой проблемой, но это будет раздражать!), И все же это будет похоже на краткосрочное решение.
Что еще нужно делать?