Мы используем MSDeploy с проектом веб-развертывания для развертывания нашего проекта веб-сайта с использованием сборок TFS (TFS 2010 и VS 2010).
TFS Build отправляет созданные файлы в подпапку указанной перетаскиваемой папки, поэтому, если я укажу перетаскиваемую папку как:
\\ machineName \ Builds
Проект сборки помещается в:
\\ MachineName \ Builds \ 1. Тест \ 20120226.38 \ Развернуть
В этом примере «1. Test» - это имя определения сборки TFS, «20120226.38» - отметка даты и номер сборки, а «Deploy» - это имя проекта веб-развертывания.
Когда я создаю свою группу элементов 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>
Чтобы учесть изменение номера сборки и даты, я добавил переменную $ (BuildNumber) через файл DefaultTemplate.xaml. Итак, вот немного измененный пример:
<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'.
Проверить и вручную изменить номер сборки нереально. Я чувствую, что мне здесь не хватает чего-то простого, но я не могу понять это.
Примечание. Это проект веб-сайта, а не проект веб-приложения. Ограничения по времени и зависимость от поставщиков «черного ящика» не позволяют выполнить преобразование.