Freigeben über


既存の Windows Azure クラウド サービスを .NET 4.5 および Windows Server 2012 に更新する方法

このポストは、1 月 30 日に投稿された Updating Windows Azure Cloud Service To .NET 4.5 and Windows Server 2012 の翻訳です。

編集メモ : 今回は、Windows Azure シニア プログラム マネージャーを務める Avilay Parekh の投稿をご紹介します。

皆さんの Windows Azure クラウド サービスが 2012 年 6 月版の SDK (.NET 4.0 および OS ファミリ 1 または 2) で構築されたものである場合、.NET 4.5 および OS ファミリ 3 (つまり、Windows Server 2012) をターゲットとして更新することができます。標準の更新プロセス (Windows Azure ポータルの [Update] ボタンを使用する、または Visual Studio の [Publish] ボタンを使用する) を踏もうとすると、「Upgrade from OS family 1 to OS family 3 is not allowed (OS ファミリ 1 から OS ファミリ 3 に更新することはできません)」というエラー メッセージが表示され、更新が失敗します。これは、更新ポリシー上で発生している一時的なエラーであり、次期リリースで解消される予定です。当面の回避策として、以下の 2 つの方法をご紹介します。この方法により、既存の Windows Azure クラウド サービスを .NET 4.5 と OS ファミリ 3 に更新していただけます。

1.VIP スワップを実行して更新する (推奨)

2.アプリケーションを削除して再展開することで、更新する

いずれの方法にも、それぞれメリットとデメリットがあります。以下の表にまとめましたのでご確認ください。また、この記事では 2 つの方法の詳細な手順についてもご紹介します。

方法 1: VIP スワップを実行して更新する ( 推奨 )

既存のクラウド サービスが .NET 4.0 と OS ファミリ 1 または 2 で構築され、クラウド上の運用スロットに展開されている場合、.NET 4.5 および OS ファミリ 3 に更新するには、以下の手順を実行します。

1.既存のソリューションを 2012 年 10 月公開の Windows Azure Tools にアップグレードする

2..cscfg ファイルを手動で編集して、ServiceConfiguration 要素の OSFamily 属性を「3」に変更する

3.Web ロール プロジェクトの NET framework を .NET 4.5 に変更し、再ビルドする

4.新しいアプリケーションをクラウド上のステージング スロットに展開する

5.運用スロットとステージング スロットの VIP スワップを実行する

方法 2: アプリケーションを削除して再展開することで、更新する

1.既存のソリューションを 2012 年 10 月公開の Windows Azure Tools にアップグレードする

2..cscfg ファイルを手動で編集して、ServiceConfiguration 要素の OSFamily 属性を「3」に変更する

3.Web ロール プロジェクトの NET framework を .NET 4.5 に変更し、再ビルドする

4.既存のクラウド アプリケーションを削除する

5.更新されたアプリケーションを通常の手順でクラウドに展開する

各手順の詳細

既存のソリューションを 2012 10 月公開の Windows Azure Tools にアップグレードする

1.Visual Studio でソリューションを開きます。

2.ソリューション エクスプローラーで、該当するクラウド プロジェクトを右クリックします。上図では、ソリューション名は「Sdk1dot7」、Web ロール プロジェクト名は「MvcWebRole1」、クラウド プロジェクト名は「Sdk1dot7」となっています。クラウド プロジェクト「Sdk1dot7」を右クリックします。

3.[Properties] をクリックします。プロパティ シートが開き、[Upgrade] ボタンが表示されます (ここで、上図のように、このプロジェクトが 2012 年 6 月公開の SP1 の Windows Azure Tools でビルドされていることを確認してください)。[Upgrade] ボタンをクリックして、アップグレードを実行します。アップグレードが終わったら、再度このプロパティ シートを表示し、Windows Azure Tools のバージョンが 2012 年 10 月版になっていることを確認します。

.cscfg ファイルを手動で編集して、ServiceConfiguration 要素の OSFamily 属性を「3」に変更する

1.ソリューション エクスプローラーで、該当するクラウド プロジェクトの ServiceConfiguration.Cloud.cscfg ファイルをクリックします。

2.上図の赤い枠内の値を「3」に変更し、ファイルを保存します。

Web ロールプロジェクトの NET framework .NET 4.5 に変更し、再ビルドする

 

1.Web ロール プロジェクトを右クリックし、[Properties] をクリックして、プロパティ シートを開きます。

2.[Application] タブの [Target framework] ドロップダウンに「.NET Framework 4.0」と表示されているはずなので、このドロップダウンを展開して「.NET Framework 4.5」を指定します。[Target Framework Change] ダイアログ ボックスが開くので、[Yes] をクリックします。これで、ターゲット フレームワークとして .NET 4.5 が読み込まれるようになりました。

3.F6 キーを押して、再ビルドします。このとき、.NET 4.5 で作成された新しいライブラリとの間で、名前空間の競合が生じてエラーとなる場合があります。この競合は簡単に修正できるものですが、もし修正できなかった場合は、下部のコメント欄に報告していただければ、ご返答いたします。

新しいアプリケーションをクラウド上のステージングスロットに展開する

アプリケーションの展開は、Visual Studio 内、または Windows Azure ポータルから実行できます。ここでは、ポータルから展開する手順をご紹介します。

1.該当するクラウド プロジェクトを右クリックし、[Package…] オプションを選択します。

2.ダイアログ ボックスが開くので [Package] ボタンをクリックし、パッケージングを実行します。

3.パッケージングが完了すると、エクスプローラー ウィンドウがポップアップ表示されます。その中に .cspkg と .cscfg という 2 種類のファイルが格納されています。

4.Windows Azure ポータル (https://manage.windowsazure.com) に移動し、該当するクラウド サービスを選択します。[Staging] タブ (上図の赤い枠内) をクリックします。

5.[Staging] タブに切り替えたら、画面下部のパネル内にある [Update] ボタン (画像の緑の枠内) をクリックします。

6.手順 3 で Visual Studio から生成した .cspkg と .cscfg を指定するためのダイアログ ボックスが表示されます。[From Local] ボタンを選択し、先ほど生成した .cspkg と .cscfg のファイルをそれぞれアップロードします。単一のインスタンス ロールを利用している場合、[Update even if one or more roles contain single instance] チェックボックスをオンにしてください (それぞれ、上図の赤い枠内を参照)。右下のチェック マークをクリックして続行します。

7.これで、OS ファミリ 3 と .NET 4.5 をターゲットとする新しいアプリケーションがステージング スロットに展開されます。運用スロットには、OS ファミリ 1 (または 2) と .NET 4.0 の既存アプリケーションが展開されています。

運用スロットとステージングスロットの VIP スワップを実行する

1.[Production] タブまたは [Staging] タブのいずれかで、画面下部の [Update] ボタンの隣にある [Swap] ボタン (上図の緑の枠内) をクリックして、スワップを実行します。

2.スワップが完了すると、既存のアプリケーションに代わって、OS ファミリ 3 と .NET 4.5 の新しいアプリケーションが運用スロットに展開されます。

既存のクラウド アプリケーションを削除する

1.Windows Azure ポータル (https://manage.windowsazure.com) に移動し、該当するクラウド サービスを選択します。画面下部のパネルにある [STOP] ボタン (上図の緑の枠内) をクリックし、アプリケーションを停止します。ダイアログ ボックスが開くので、[Yes] をクリックします。

2.アプリケーションが停止したら、[DELETE] ボタン (上図の赤い枠内) をクリックし、アプリケーションを削除します。サブメニューが開くので、[Delete production deployment for …] を選択します。

この記事の内容についてご質問がある場合は、下のコメント欄に投稿していただくか、私の Twitter アカウント (@Avilay) 宛てに直接コメントをお寄せください。

--Avilay