2

В настоящее время я изучаю и внедряю автоматический метод развертывания наших проектов MVC и webApi в производственной среде.Автоматизация развертывания сети на удаленном сервере IIS

До сих пор я использовал инструмент публикации, встроенный в Visual Studio 2012, в хороший эффект. Запустив это в среде IDE, я могу получить правильные файлы и настройку IIS на рабочем сервере. Тем не менее, я хочу добиться того же, что и это, но с помощью командной строки или powershell, так что сценарий можно просто запустить, и он будет автоматически развертывать 2 веб-сайта.

Я попытался сделать это, запустив сценарий командной строки, такие как:

msbuild MyProject.csproj /p:DeployOnBuild=true;PublishProfile=MyProfile 

и это создает проект и создает пакет в OBJ папке проекта. Это правильный подход, и если да, то как я могу сделать этот пакет автоматически развернутым на удаленный сервер?

+0

любое окончательное решение с полным исходным пример кода работает по этому поводу? – Kiquenet

ответ

3

Вот функция, я использую каждый раз, когда я должен развернуть веб-приложение:

function MSBuild-Publish-Web-Service 
{ 
    param (
     [parameter(Mandatory = $true)][string] $WebProjectFile, 
     [parameter(Mandatory = $true)][string] $DestinationDir 
    ) 

    Write-Host "`t`t$($MyInvocation.InvocationName): Publishing web service from $SourceDir" 

    try 
    { 
     $Error.Clear() 
     $MsBuildPath = "$env:Windir\Microsoft.NET\Framework\v3.5\MSBuild.exe" 

     if (!(Test-Path $MsBuildPath)) 
      { throw "Could not find $MsBuildPath" } 

     $res = [string](. $MsBuildPath "$WebProjectFile" /verbosity:minimal "/t:ResolveReferences;_CopyWebApplication;publish" /p:Configuration=Debug /p:OutDir="$DestinationDir\bin\" /p:WebProjectOutputDir="$DestinationDir") 

     if ($res.Contains("error")) 
      { throw $res } 
    } 

    catch 
    { 
     Write-Error "`t`t$($MyInvocation.InvocationName): $_" 
    } 

    Write-Host "`t`t$($MyInvocation.InvocationName): Web service published" 
} 
Смежные вопросы