2

我目前正在研究和實現將我們的MVC和webApi項目部署到生產環境的自動方法。將Web部署自動化到遠程IIS服務器

到目前爲止,我已經使用內置於Visual Studio 2012中的發佈工具來取得良好效果。通過在IDE中運行這一功能,我可以在生產服務器上獲得並運行正確的文件和IIS配置。然而,我想要實現與此相同的功能,但通過命令行或PowerShell可以運行腳本,並自動部署2個網站。

我試圖通過運行一個命令行腳本,如要做到這一點:

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

,這生成項目,並在此項目的OBJ文件夾中的包。這是否是正確的方法,如果是這樣,我該如何將這個軟件包自動部署到遠程服務器?

+0

完整的源代碼示例工作任何有關它的最終解決方案? – Kiquenet 2013-04-30 14:21:27

回答

3

這裏是每當我要部署Web應用程序我用的功能:

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" 
}