読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Visual Studio と Azure Websites の発行周り小ネタまとめ

Visual Studio Azure Web Apps

最近は 2 つの Websites へ同時にデプロイしたい欲が高まってきたので、コマンドラインからデプロイする方法を簡単に調べました。MSBuild 使えば出来るようです。

それ以外にも調べている途中に見つけた小ネタを忘れないようにメモしておきます。

f:id:shiba-yan:20150227151534p:plain

ちなみに基本的な pubxml の中身はこんな感じです。発行ダイアログの設定から一部は変更可能です。

コマンドラインからデプロイする

MSBuild を使うと Visual Studio から行うデプロイとほぼ同じことが出来ます。ただしパスワードだけは Visual Studio が暗号化したものを参照できないため、指定する必要があるようです。

Publish an Azure Web Site from the Command Line | greatrexpectations

pubxml を直接弄ってパスワードを書く手もあるみたいですが、間違って Git にプッシュするのも怖いですし、妥協する部分なのかもしれません。

コマンドラインからのデプロイについては、ASP.NET 公式サイトのドキュメントで説明されてました。

ASP.NET Web Deployment using Visual Studio: Command Line Deployment | The ASP.NET Site

実際に実行するコマンドは以下のような感じになるかと思います。

msbuild WebApplication.sln /p:BuildOnDeploy=true /p:PublishProfiles=hoge /p:Configuration=Release /p:Password=*****

パスワードは Azure Websites なら発行プロファイルや Get-AzureWebsite で取得出来るやつです。

実際に確認はしていないですが、Azure Websites からダウンロード可能な .publishsettings ファイルを直接指定することも出来るみたいです。

Sayed Ibrahim Hashimi - MSBuild, Web Deploy (MSDeploy), ASP.NET - How to publish a VS web project with a .publishSettings file

.wpp.targets ファイルを用意する必要はありますが、割とサクッとデプロイ出来そうな感じです。

msbuild WebApplication.sln /p:BuildOnDeploy=true /p:PublishSettingsFile=hoge.publishsettings /p:Configuration=Release

パスワードの指定が必要なくていい感じがしますが、Web.config の変換周りが動かない気がします。

デプロイ後にサイトを表示しない

Visual Studio で publishsettings ファイルをインポートすると作成される pubxml を開くと、LaunchSiteAfterPublish と言う名前の要素が存在しているはずなので、値を False に変更します。

<PropertyGroup>
  <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
</PropertyGroup>

これでデプロイ完了後に毎回ブラウザが立ち上がることが無くなります。

不要なファイルをデプロイしない

対象 の pubxml に ExcludeFilesFromDeployment や ExcludeFoldersFromDeployment という要素を追加すると、ファイルやフォルダ単位でデプロイから除外することが出来るようです。

ASP.NET Web Deployment using Visual Studio: Deploying to Production | The ASP.NET Site

デフォルトではこの要素は含まれていないので、自分で追加する必要があります。

<PropertyGroup>
  <ExcludeFilesFromDeployment>
    foo.txt;bar.txt;baz.txt
  </ExcludeFilesFromDeployment>
  <ExcludeFoldersFromDeployment>
    hogehoge;hauhau
  </ExcludeFoldersFromDeployment>
</PropertyGroup> 

Web Deployment FAQ に情報がまとまっていました。思っていた以上に色んなことが出来るようです。

Web Deployment FAQ for Visual Studio and ASP.NET

ちなみに pubxml を直接編集する以外にも .wpp.targets ファイルを作成しておけば、それの内容を自動的に反映してくれるみたいですね。

How to: Edit Deployment Settings in Publish Profile (.pubxml) Files and the .wpp.targets File in Visual Studio Web Projects

基本的に Visual Studio からデプロイしていただけのゆとりなので、もうちょっと MSBuild と MSDeploy 周りは勉強しておきたいと思いました。*1

*1:Websites なら Git な気がしないこともないけど