Мы используем MSDeploy с проектом веб-развертывания для развертывания нашего проекта веб-сайта с использованием TFS Builds (TFS 2010 и VS 2010).MSDeploy не принимает динамический путь для назначения развертывания
TFS сборки отправляет встроенные файлы в подпапку в указанной папке капли, так что если я указать папку для как:
\\machineName\Builds
Проект сборки упал в:
\\machineName\Builds\1. Test\20120226.38\Deploy
В этом примере «1. Тест» - это имя определения сборки TFS, «20120226.38» - это дата-штамп и номер сборки, а «Развертывание» - это название проекта веб-развертывания.
Когда я создаю свою группу элементов DeploySource в файле Deploy.wdproj и задаю точный путь для источника MSDeploy (см. Ниже), все в порядке. Пример:
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Test|AnyCPU' "> <DeploySource Include="DirPath"> <Path>C:\Builds\1. Test\20120226.39\_PublishedWebsites\Deploy</Path> <ComputerName>machineName</ComputerName> <UserName>$(UserName)</UserName> <Password>$(Password)</Password> </DeploySource> </ItemGroup>
Для учета ряда изменение сборки и даты, Я added a $(BuildNumber) variable via the DefaultTemplate.xaml file. Итак, вот тонко измененный пример:
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Test|AnyCPU' "> <DeploySource Include="DirPath"> <Path>C:\Builds\1. Test\$(BuildNumber)\_PublishedWebsites\Deploy</Path> <ComputerName>machineName</ComputerName> <UserName>$(UserName)</UserName> <Password>$(Password)</Password> </DeploySource> </ItemGroup>
И они прошли в этот MSDeploy вызов:
<MSDeploy Condition=" '$(Configuration)|$(Platform)' == 'Test|AnyCPU' " Whatif="$(WhatIf)" Verb="sync" Source="@(DeploySource)" Destination="@(DeployDest0)" ExePath="$(MSDeployPath)" />
Вот моя проблема:
С примера 1 выше, все в порядке, и сайт сборки разворачивается в нужное место.
С примером 2 выше, я получаю следующее сообщение об ошибке:
MSDEPLOY: Object of type 'dirPath' and path '\\machineName\Builds\1. Test\20120227.2\_PublishedWebsites\Deploy' cannot be created. MSDEPLOY: (2/27/2012 6:54:14 PM) An error occurred when the request was processed on the remote computer. MSDEPLOY: Object of type 'dirPath' and path '\\machineName\Builds\1. Test\20120227.2\_PublishedWebsites\Deploy' cannot be created. MSDEPLOY: Could not find directory '\\machineName\Builds\1. Test\20120227.2\_PublishedWebsites\Deploy'. MSDEPLOY: Could not find a part of the path '\\?\UNC\machineName\Builds\1. Test\20120227.2\_PublishedWebsites\Deploy'.
Проверяется и вручную изменяя номер сборки не является реальным вариантом. Я чувствую, что есть что-то простое, чего я здесь не хватает, но я не могу на него наложить.
Примечание. Это проект веб-сайта, а не проект веб-приложения. Ограничения времени и зависимости поставщика черного ящика не позволят преобразовать.
Вопрос: В вашем рабочем примере, где вы жестко закодированной номер сборки, является то, что в пре- существующая сборка, где папка существовала до вашего вызова команды? Если да, то я предполагаю, что проблема, скорее всего, в порядке операций, то есть папка, которую вы указали с помощью $ (BuildNumber), не существует, когда путь оценивается и MSDeploy запускается, но вместо этого создается позже процесс сборки. –
Я пробовал это как с уже существующими дорожками, так и с новым путем, который будет создавать сборка. К сожалению, те же результаты в обоих случаях. –
Вы пробовали использовать $ (OutDir), как мне подсказывает мой ответ? –