我在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。
答案 0 :(得分:0)
尝试使用TF_BUILD_BINARIESDIRECTORY作为根位置来从中获取您的Web应用程序。您放置位置是您的构建丢弃的目标UNC份额。
看起来你的$ PublishFolder指向drop文件夹,并且直到工作流程结束时才创建drop文件夹。默认情况下,Build过程会覆盖MSBuild上的$(OutDir)以指向二进制目录。