MSDeploy 不接受部署目标的动态路径



我们将MSDeploy与Web部署项目一起使用TFS构建(TFS 2010和VS 2010)来部署我们的网站项目。

TFSBuild将生成的文件发送到指定放置文件夹的子文件夹,因此如果我将放置文件夹指定为:

\\machineName\构建

构建项目被放入:

\\machineName\Builds\1.Test\20120226.38\部署

在该示例中,"1。Test"是TFS Build定义的名称,"20120226.38"是日期戳和内部版本号,"Deploy"是Web部署项目的名称。

当我在Deploy.wdproj文件中创建DeploySource项组,并指定MSDeploy源的确切路径(请参阅下面的内容)时,一切都很好。示例:

<项目组条件="$(配置)|$(平台)’==‘测试|AnyCPU’"><DeploySource Include=";DirPath"><路径>C: \Builds\1.Test\20120226.39\_PublishedWebsites\Deploy<路径><ComputerName>machineName<ComputerName><用户名>(用户名)<用户名><密码>(密码)<密码><DeploySource><项目组>

为了说明版本号和日期的变化,我通过DefaultTemplate.xaml文件添加了一个$(BuildNumber)变量。因此,这里有一个微妙变化的例子:

<项目组条件="$(配置)|$(平台)’==‘测试|AnyCPU’"><DeploySource Include=";DirPath"><路径>C: \Builds\1.Test\$(BuildNumber)\PublishedWebsites\Deploy<路径><ComputerName>machineName<ComputerName><用户名>(用户名)<用户名><密码>(密码)<密码><DeploySource><项目组>

它们被传递到MSDeploy呼叫中:

<MSDeploy条件="$(配置)|$(平台)’==‘测试|AnyCPU’";Whatif="$(WhatIf)";动词=";sync";来源="@(DeploySource)";目的地="@(DeployDest0)";ExePath="$(MSDeployPath)";/>

这是我的问题:

对于上面的示例1,一切都很好,构建站点部署到正确的位置。

对于上面的例子2,我得到了以下错误:

MSDEPLOY:类型为"dirPath"且路径为"\\machineName\Builds\1"的对象。无法创建Test\20120227.2\_PublishedWebsites\Deploy。MSDEPLOY:(2/27/2012下午6:54:14)在远程计算机上处理请求时出错。MSDEPLOY:类型为"dirPath"且路径为"\\machineName\Builds\1"的对象。无法创建Test\20120227.2\_PublishedWebsites\Deploy。MSDEPLOY:找不到目录"\\machineName\Builds\1"。Test\20120227.2\_PublishedWebsites\Deploy。MSDEPLOY:找不到路径"\\?"的一部分?\UNC\machineName\Builds\1.Test\20120227.2\_PublishedWebsites\Deploy'。

签出并手动更改内部版本号不是一个现实的选择。我觉得这里缺少了一些简单的东西,但我无法用手指去触摸它。

注意:这是一个网站项目,而不是一个web应用程序项目。时间限制和黑盒供应商依赖关系不允许转换。

如果在您对内部版本号进行硬编码的工作示例中,生成输出文件夹在调用命令之前就已经存在,那么我猜问题可能是操作顺序,这意味着在评估路径和运行MSDeploy时,您用$(BuildNumber)指示的文件夹不存在,而是在稍后的生成过程中创建的
事实上,我敢打赌你需要使用另一个TFS变量来指示构建位置,比如

 $(OutDir)_PublishedWebsitesDeploy

最新更新