2016-02-09 3 views
0

Я создал одно определение сборки в TFS, которое настроено на запуск сценариев powershell после сборки. Сценарии PowerShell, как ожидается, создадут папку «Пакет» внутри папки «Папка», а в папке «Пакет» я хочу скопировать папку «Database.Upgrade» из исходного кода и опубликованную версию веб-сайта из самого места отправки.Проблема с копированием папки _PublishedWebsites из места отправки во время сценариев Post-build TFS

Я вижу, что папка «Database.Upgrade» успешно копируется, однако папка «_PublishedWebsite» не копируется вообще.

В чем может быть причина? Не создается ли папка «_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 пакетов; папку, в то время как второй Copy-Item, который работает обновление баз данных успешно копирует сценарии.

Мой билд сервер использует TFS 2013.

+1

Попробуйте использовать TF_BUILD_BINARIESDIRECTORY в качестве корневого местоположения, чтобы получить свое веб-приложение. Вы удаляете местоположение - это целевая доля UNC для вашего сокращения. Похоже, что ваш $ PublishFolder указывает на папку сбрасывания, а папка сбрасывания не создается до конца рабочего процесса. Построчный процесс по умолчанию переопределяет $ (OutDir) в MSBuild, чтобы указать на каталог двоичных файлов –

+0

Правильно, теперь я могу скопировать скомпилированную версию сайта с использованием предложенной переменной. Вставьте это как ответ и отметьте его. спасибо – Nirman

+0

Рад, что вы разблокированы –

ответ

0

Попробуйте использовать TF_BUILD_BINARIESDIRECTORY в качестве корневого каталога, чтобы забрать ваши веб-приложения с. Вы удаляете местоположение - это целевая доля UNC для вашего сокращения.

Похоже, что ваш $ PublishFolder указывает на папку сбрасывания, а папка сбрасывания не создается до конца рабочего процесса. По умолчанию процесс сборки переопределяет $ (OutDir) в MSBuild, чтобы указать каталог двоичных файлов.