3

私は現在、MVC および webApi プロジェクトを運用環境に自動的に展開する方法を調査および実装している最中です。

これまでのところ、Visual Studio 2012 に組み込まれている Publish ツールを使用して効果を上げてきました。これを IDE で実行することにより、正しいファイルと IIS 構成を運用サーバーで実行することができます。ただし、これと同じことを実現したいのですが、コマンドラインまたはpowershellを介してスクリプトを実行するだけで、2つのWebサイトが自動的に展開されます.

次のようなコマンド ライン スクリプトを実行して、これを実行しようとしました。

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 に答える