在TFS Post-build脚本期间从放置位置复制_PublishedWebsites文件夹的问题

时间:2016-02-09 06:22:55

标签: powershell build tfsbuild post-build-event

我在TFS中创建了一个构建定义,它被配置为运行post-build powershell脚本。 PowerShell脚本有望创建一个" Package" drop文件夹里面的文件夹,以及" Package"文件夹我想复制一个" Database.Upgrade"来自源代码的文件夹,以及从放置位置本身发布的网站版本。

我可以看到" Database.Upgrade"文件夹被成功复制,然而," _PublishedWebsite"文件夹根本没有被复制。

可能的原因是什么?是" _发表的网站"在构建后的脚本之前没有创建文件夹?

# Pick drop folder
$DropFolder = "$Env:TF_BUILD_DROPLOCATION"

# Set Package folder (i.e., \\drop-location\Build name\Build number\Package)
$PackageFolder = "$DropFolder\Package"
$PackageFolder_Website = "$PackageFolder\MyApplication.Web"
$PackageFolder_Database = "$PackageFolder\MyApplication.Database"

if (!(Test-Path -path $PackageFolder)) 
{ 
    New-Item $PackageFolder -itemtype directory -force 
}

if (!(Test-Path -path $PackageFolder_Website)) 
{ 
    New-Item $PackageFolder_Website -itemtype directory -force 
}

if (!(Test-Path -path $PackageFolder_Database)) 
{ 
    New-Item $PackageFolder_Database -itemtype directory -force 
}

# Pick web deployment (published) folder (i.e., \\drop-location\Build name\Build number\_PublishedWebsites)
$PublishFolder = "$DropFolder\_PublishedWebsites\MyApplication"

# Copy published folder to package folder
Copy-Item $PublishFolder\* "$PackageFolder_Website\" -Recurse -Force

# Pick sql database scripts (i.e., App.Database.Upgrade folder) from TFS sources directory
$DatabaseScriptsLocation = "$Env:TF_BUILD_SOURCESDIRECTORY\MyApplication 2016\Trunk\App.Database.Upgrade"

# Copy sql database scripts to database drop folder
Copy-Item $DatabaseScriptsLocation\* "$PackageFolder_Database\" -Recurse -Force

这里,第一个Copy-Item并没有真正复制任何应该将内容从_PublishedWebsite \ MyApplication复制到Package文件夹的内容,而第二个Copy-Item正在成功复制数据库升级脚本。

我的构建服务器正在使用TFS 2013。

1 个答案:

答案 0 :(得分:0)

尝试使用TF_BUILD_BINARIESDIRECTORY作为根位置来从中获取您的Web应用程序。您放置位置是您的构建丢弃的目标UNC份额。

看起来你的$ PublishFolder指向drop文件夹,并且直到工作流程结束时才创建drop文件夹。默认情况下,Build过程会覆盖MSBuild上的$(OutDir)以指向二进制目录。

相关问题