うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

既存のASP.NETとかWebRoleを1つのAzureプロジェクトでまとめる

やりたいこと

Azureプロジェクトをテンプレートから作成した以外に、既存のWebRoleとか既存のASP.NETをAzureプロジェクトで再利用したい。
イメージ的には
http://localhost/ <- Azureプロジェクトで作成したデフォルトのWebRoleが参照される
http://localhost/OtherWebRole <- 既存のAzureプロジェクトで作成したページが参照される
http://localhost/OtherASP <- 既存のASP.NETで作成したページが参照される

手順

  1. まとめるためのAzureプロジェクトを作成。ここではWindowsAzure1プロジェクト、WebRoleはWebRole1として作成する。
  2. 既存のAzureプロジェクトから再利用したいWebRoleをWindowsAzure1プロジェクト配下にコピーする。(OtherWebRoleディレクトリとする。
  3. 同様に既存のASP.NETプロジェクトから再利用したいWebAppをWindowsAzure1プロジェクト配下にコピーする。(OtherASPディレクトリとする。
  4. WindowsAzure1プロジェクトをVisualStudioで起動して、OtherWebRole、OtherASPを「既存プロジェクトを追加」で追加する。
  5. OtherWebRoleでWebRole.csを削除する。
  6. WindowsAzure1プロジェクトのServiceDefinition.csdefを次のように編集する。
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WindowsAzure1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
  <WebRole name="WebRole1" vmsize="Small">
    <Sites>
      <Site name="Web">
        <!-- VirtualApplication を追加する START -->
        <VirtualApplication name="OtherWebRole" physicalDirectory="..\OtherWebRole"/>
        <VirtualApplication name="OtherASP" physicalDirectory="..\OtherASP"/>
        <!-- VirtualApplication を追加する END -->
      </Site>
    </Sites>
  </WebRole>
</ServiceDefinition>



これであとは実行すればokです。
プロジェクトによって必要なライブラリとかあると思うので、それらはWindowsAzure1プロジェクトに追加したり、参照を設定しなおしたりすればいい感じです。