3

我目前正在研究和实施一种将 MVC 和 webApi 项目部署到生产环境的自动方法。

到目前为止,我已经使用了 Visual Studio 2012 中内置的发布工具,效果很好。通过在 IDE 中运行它,我可以获得正确的文件和 IIS 配置并在生产服务器上运行。但是,我想实现与此相同的功能,但通过命令行或 powershell 可以运行脚本,它会自动部署 2 个网站。

我试图通过运行命令行脚本来做到这一点,例如:

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

这将构建项目并在项目的 obj 文件夹中创建一个包。这是正确的方法吗?如果是,我怎样才能让这个包自动部署到远程服务器?

4

1 回答 1

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"
}
于 2013-02-11T12:23:36.103 回答