我們正在使用MSDeploy和Web部署項目來使用TFS構建(TFS 2010和VS 2010)來部署我們的網站項目。MSDeploy不會接受部署目標的動態路徑
TFS生成發送內置的文件到指定的投遞文件夾的子文件夾,所以如果我指定的投遞文件夾爲:
\\machineName\Builds
構建項目投進:
\\machineName\Builds\1. Test\20120226.38\Deploy
在該示例中,「1.測試」是TFS構建定義的名稱,「20120226.38」是日期標記和內部版本號,「部署」是Web部署項目的名稱。
當我在Deploy.wdproj文件中創建我的DeploySource項目組並指定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'.
檢出和手動更改版本號是不實際的。我覺得這裏有一些簡單的東西,但我不能把它放在手指上。
注意:這是一個網站項目,而不是一個Web應用程序項目。時間限制和黑盒廠商依賴性將不允許轉換。
問題的生成位置:在你工作的例子你硬編碼的版本號,是預在您調用命令之前文件夾存在的現有構建?如果是這樣,那麼我猜測問題可能是操作的順序,這意味着當您評估路徑並運行MSDeploy時,您用$(BuildNumber)指示的文件夾不存在,而是稍後創建構建過程。 – 2012-02-28 04:23:35
我已經試過這兩個預先存在的路徑,並與建立將創建的新路徑。不幸的是,在這兩種情況下結果都一樣 – 2012-02-28 15:45:23
你有沒有試過使用$(OutDir),因爲我的答案表明? – 2012-02-28 15:47:47