公開中にアプリをオフラインにすることができます。これにより、ファイルのロックが解放され、更新できるようになります。
これについては、しばらく前にブログに書きました。概説されているサポートは、Azure SDK および Visual Studio Update 内で出荷されました。正確なリリースは覚えていませんが、必要に応じて調べることができます。そのブログ投稿の前後の更新は問題ありません。
前提条件:
- VS 2012 + VS アップデート / VS 2013 + VS アップデート / VS2015
- MSDeploy v3
注: CI サーバーから公開する場合、CI サーバーにも上記の更新が必要です。
発行プロファイルを編集する
VS で Web パブリッシュ プロファイルを作成すると、ダイアログの設定がProperties\PublishProfiles\
.pubxml で終わるファイルとして保存されます。注:ファイルもあり.pubxml.user
ます。そのファイルは変更しないでください
ファイルでアプリをオフラインにするに.pubxml
は、次のプロパティを追加します。
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
ノート
ASP.NET が必要
これを MSDeploy 側に実装する方法は、app_offline.htm ファイルを Web サイト/アプリのルートにドロップすることです。そこから、asp.net ランタイムがそれを検出し、アプリをオフラインにします。このため、Web サイト/アプリで asp.net が有効になっていない場合、この機能は機能しません。
うまくいかないケース
これを実装すると、公開が開始される前にアプリが厳密にオフラインになることはありません。最初に app_offline.htm ファイルがドロップされ、次に MSDeploy がファイルの公開を開始します。ASP.NET がファイルを検出して実際にオフラインにするのを待ちません。このため、依然としてファイル ロックに遭遇する場合があります。デフォルトでは、VS は再試行を有効にするため、通常、アプリは再試行の 1 つの間にオフラインになり、すべて問題ありません。場合によっては、ASP.NET が応答するまでに時間がかかることがあります。それはもう少しトリッキーです。
追加<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
してもすぐにアプリがオフラインにならない場合は、公開が始まる前にアプリをオフラインにすることをお勧めします。これをリモートで行う方法はいくつかありますが、それはセットアップによって異なります。MSDeploy アクセス権しかない場合は、次の手順を試すことができます。
msdeploy.exe
app_offline.htm をドロップして、サイトをオフラインにするために使用します
- アプリの公開に使用
msdeploy.exe
します (_同期によって app_offline.htm ファイルが削除されないことを確認してください_)
- しばらく待ちます
- サイトを公開する
msdeploy.exe
app_offline.htm を削除してアプリをオンラインにするために使用します
http://sedodream.com/2012/01/08/howtotakeyourwebappofflineduringpublishing.aspxでこれを行う方法をブログに書いています。そのブログ投稿に欠けている唯一のことは、サイトが実際にオフラインになるのを待つための遅延です. msdeploy.exe
プロジェクトのビルド/公開プロセスに統合する代わりに、直接呼び出すだけのスクリプトを作成することもできます。