このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開

パッケージの検証警告およびエラーのトラブルシューティング

更新日: 2015年3月

パッケージを作成するか、Azure クラウド サービス プロジェクトを発行するときに、1 つ以上の警告またはエラーが表示されることがあります。これらの警告およびエラーを使用して、プロジェクトのデプロイまたは発行を妨げる問題を特定し、修正することができます。パッケージ化の段階で警告またはエラーを受信することによって、Azure プロジェクトをデプロイする前にこれらの問題を修正することによって時間を節約することができます。デプロイが完了するまで待機してから破棄する必要はありません。

既定では、パッケージの検証の問題は警告として扱われます。ロールのデプロイを妨げることはありません。既定の値を変更してデプロイを防止するには、Azure プロジェクトのプロパティ [警告をエラーとして扱う]True に設定します。「方法: Visual Studio を使用した Azure クラウド サービス プロジェクトの構成」を参照してください。

次の表に、Azure プロジェクトのパッケージ検証の主要な警告と、それぞれの警告の詳細へのリンクを示します。

 

エラー番号

メッセージ

詳細情報

WAT150

プロジェクト 'ProjectName' は次のアセンブリに依存しています: ‘AssemblyName’。このアセンブリはパッケージ内にありません。ロールが起動するようにするには、このアセンブリを参照としてプロジェクトに追加して、[ローカルにコピー] プロパティを true に設定します。

Include Files in the Service Package

WAT151

プロジェクト 'ProjectName' は次のアセンブリに依存しています: ‘AssemblyName’。このアセンブリは、パッケージ内に含まれず、GAC にインストールする必要があります。ロールが起動するようにするには、このアセンブリを参照としてプロジェクトに追加して、[ローカルにコピー] プロパティを true に設定します。次に、ロールのスタートアップ タスクを使用して、アセンブリを GAC に追加します。

WAT152

プロジェクト 'ProjectName' は次のアセンブリに依存しています: ‘AssemblyName’。このアセンブリは、Windows インストーラー ファイル (.msi ファイル) によって GAC にインストールされます。ロールが起動するようにするには、ロールのスタートアップ タスクを使用してこの Windows インストーラー ファイルをインストールするか、このアセンブリを参照としてプロジェクトに追加して [ローカルにコピー] プロパティを true に設定する必要があります。

WAT153

Web プロジェクト 'プロジェクト名' は次の MVC アセンブリに依存しています: 'アセンブリ名'。これらのアセンブリをパッケージに追加するか、ロールの仮想マシンにインストールする必要があります。詳細については、次のヘルプ ページを参照してください。http://go.microsoft.com/fwlink/?LinkId=218227。

Web ロールとしての MVC プロジェクトの発行

WAT160

プロジェクト 'プロジェクト名' には次のアセンブリが含まれています: 'AssemblyName’。このアセンブリは、Azure 上の IIS で使用される 64 ビット プロセッサ アーキテクチャとの互換性はありません。ロールが開始されるようにするには、このアセンブリをこのアーキテクチャと互換性のあるアセンブリに置き換える必要があります。

32 ビット アプリケーションを実行するように IIS を構成するスタートアップ タスクがある場合、この警告メッセージを無視できます。この方法の詳細については、「スタートアップ タスクを使用して IIS アプリケーション プールで 32 ビット アプリケーション モードを有効にする (このページは英語の場合があります)」を参照してください。

それ以外の場合は、プロジェクトからアセンブリを削除し、64 ビット プロセッサ アーキテクチャと互換性があるアセンブリを追加します。次に、アプリケーションを再パッケージ化または発行します。

WAT170

構成設定 '設定名' は、構成ファイル 'ファイル名' にあるロール 'ロール名' のローカルのストレージ エミュレーターを使用するセットアップです。Azure ストレージ サービスにアクセスするには、有効な Azure ストレージ接続文字列を指定する必要があります。

有効な Azure ストレージ接続文字列を追加する方法の詳細については、「Visual Studio からのクラウド サービスの発行に必要なサービスの設定」を参照してください。

WAT180

検証エラーが発生したため、パッケージを作成できませんでした。これらのエラーを修正してください。この Azure プロジェクトの "警告をエラーとして扱う" プロパティを false に設定することもできます。

プロパティ [警告をエラーとして扱う] を設定する方法の詳細については、「方法: Visual Studio を使用した Azure クラウド サービス プロジェクトの構成」を参照してください。

WAT190

プロジェクト 'プロジェクト名' のターゲットは '.NET Framework のバージョン' です。ロールが開始されるようにするには、このバージョンの .NET Framework をこのロールの仮想マシンにインストールする必要があります。必要なバージョンが Azure ゲスト OS の一部としてまだインストールされていない場合は、スタートアップ タスクを使用して必要なバージョンをインストールできます。

ロールのスタートアップ タスクを使用して、あるバージョンの .NET Framework をインストールします。

WAT230

接続文字列 'DefaultConnection' では、プロジェクト 'プロジェクト名' のローカル データベース '.\SQLEXPRESS' が使用されています。Azure でこのアプリケーションを実行すると、この接続文字列は動作しません。別のデータベースにアクセスするには、web.config ファイル内の接続文字列を更新する必要があります。 詳細については、次のヘルプ ページを参照してください。http://go.microsoft.com/fwlink/?LinkId=224877

ユニバーサル ASP.NET プロバイダーでの SQL Azure データベースの使用

ロールを開始できない場合は、パッケージのビルド/デプロイ出力ウィンドウをチェックして、検証の警告やエラーがないことを確認してください。プロジェクトの発行時にリモート デスクトップ接続を設定して、仮想マシンへのアクセスと問題の診断を実行できるようにすることもできます。詳細については、「Azure ロールでのリモート デスクトップの使用」を参照してください。

デプロイに対して IntelliTrace を有効にすることによってロールの開始に失敗した理由を確認する方法もあります。詳細については、「IntelliTrace および Visual Studio を使用した発行済みのクラウド サービスのデバッグ」および「ロールが起動しない問題のトラブルシューティング」を参照してください。

仮想マシンにロールを作成する場合、仮想マシンが作成されてからロールが開始されるまでの間に実行されるスタートアップ タスクを追加することが必要になる場合があります。このタスクを実行すると、ロールを正常に開始できます。たとえば、次のタスクのいずれかを実行する必要があります。

  • Windows インストーラー ファイルをインストールします。

  • アセンブリを GAC に追加します。

  • ロールに必要な特定のバージョンの .NET Framework をインストールします。

ロールに追加するスタートアップ タスクは、コマンド ラインから実行されます。一連のコマンドを実行するバッチ ファイルを作成するか、実行する特定のコマンドを追加することができます。スタートアップ タスクのファイルをプロジェクトに追加して、サービス パッケージのデプロイ時にファイルがインストールされるようにします。そのロールの仮想マシンが作成された後に、これらのファイルを使用してスタートアップ タスクが実行されます。

Important重要
スタートアップ タスクのファイルがサブフォルダー内にある場合は、スタートアップ タスクのコマンドが仮想マシンで実行されるときに、バッチ ファイルのディレクトリへのアクセスが必要になる可能性があります。次の変数を使用すると、バッチ ファイルのディレクトリにアクセスできます: %~dp0。この変数には、バッチ ファイルのドライブとパスが含まれ、パスの末尾に円記号が追加されることに注意してください。たとえば、次のコマンドを使用して、バッチ ファイルと同じフォルダー内にある .exe ファイル (StartUp.exe) を実行できます: %~dp0StartUp.exe

  1. (省略可能) スタートアップ タスクで一連のコマンドを一緒に実行する場合は、バッチ ファイルを作成できます。スタートアップ タスクを実行すために作成するファイルには、バイト オーダー マークを含めることはできません。この問題を回避するには、メモ帳を使用して、スタートアップ タスクを実行するためのファイルを作成するか、Visual Studio で作成したファイルをエンコード付きで保存します。Visual Studio でファイルをエンコード付きで保存するには、次の手順を使用します。

    1. Visual Studio でファイルをエンコード付きで保存するには、そのファイルが Visual Studio エディター ウィンドウに表示されることを確認してください。メニュー バーで [ファイル]、[名前を付けて保存] の順にクリックします。

      [名前を付けてファイルを保存] ダイアログ ボックスが表示されます。

    2. ファイルをエンコード付きで保存するには、[保存] ボタンのドロップダウン矢印をクリックし、[エンコード付きで保存] をクリックします。

      [保存オプションの詳細設定] ダイアログ ボックスが表示されます。

    3. [エンコード] ボックスの一覧で、[Unicode (UTF-8 シグネチャ付き) - コードページ 65001] を選択し、[OK] をクリックします。

  2. スタートアップ タスク用のフォルダーを追加するには、スタートアップ タスクが必要なロールのプロジェクト内にフォルダーを作成します。たとえば、WebRole1 という Web ロール プロジェクトで Windows インストーラー ファイルをインストールする必要がある場合は、この Web ロール プロジェクトに Startup というフォルダーを追加します。

  3. ファイルをこのフォルダーに追加するには、フォルダーのショートカット メニューを開き、[追加]、[既存の項目] の順にクリックします。バッチ ファイルを含むスタートアップ タスクに必要なファイルを選択し、[追加] をクリックします。

    ファイルは、ソリューション エクスプローラー内の、作成したフォルダーの下に表示されます。

  4. これらのファイルをサービス パッケージに含めても、これらのファイルをビルドしないようにするには、各ファイルのショートカット メニューを開き、[プロパティ] をクリックします。[プロパティ] ビューで、[ビルド アクション] ドロップダウン リストから [なし] を選択し、[出力ディレクトリにコピー] ドロップダウン リストから [新しい場合はコピーする] を選択します。

  5. スタートアップ タスクをロールに追加するには、サービス定義ファイル ServiceDefinition.csdef のショートカット メニューを開き、[開く] をクリックします。このスタートアップ タスクを必要とするロール要素に次の XML ステートメントを追加します。このコマンドは、Startup という名前のスタートアップ タスク用のフォルダーを作成済みであること、およびこのバッチ ファイルまたはコマンドに昇格した特権が必要であることを前提にしています。コマンドには、.exe ファイル、バッチ ファイル、.msi ファイルまたは任意の有効なコマンド ライン ステートメントを使用できます。

    
    <Startup>
       <Task commandLine="startup\<command>" executionContext="elevated" taskType="simple" />
    </Startup>
    
    

    スタートアップ タスクが追加されたサービス定義ファイルの webrole 要素の例を次に示します。

    
    <WebRole name="WebRole1">
        <Sites>
          <Site name="Web">
            <Bindings>
              <Binding name="Endpoint1" endpointName="Endpoint1" />
            </Bindings>
          </Site>
        </Sites>
        <Endpoints>
          <InputEndpoint name="Endpoint1" protocol="http" port="80" />
        </Endpoints>
        <Imports>
          <Import moduleName="Diagnostics" />
          <Import moduleName="RemoteAccess" />
          <Import moduleName="RemoteForwarder" />
        </Imports>
        <Startup>
          <Task commandLine="startup\StartUpTask.cmd" executionContext="elevated" />
        </Startup>
    </WebRole>
    
    
  6. スタートアップ タスクが実行されることを確認するには、Azure プロジェクトを発行します。必要に応じて、プロジェクトを発行するときに、ロールに対する仮想マシンのリモート デスクトップ接続を作成できます。これで、仮想マシンに接続し、スタートアップ タスクが正しく実行されているか確認できます。Azure ロールでリモート デスクトップを使用する方法の詳細については、「Azure ロールでのリモート デスクトップの使用」を参照してください。

詳細については、「ロールのスタートアップ タスクを定義する」を参照してください。スタートアップ タスクで環境変数を使用する必要がある場合は、サービス定義ファイルでロールの環境変数を定義できます。詳細については、「ロールを開始する前に環境変数を定義する」または「Azure でスタートアップ タスクを実行する」を参照してください。

MVC プロジェクトを Web ロールとして Azure に発行する場合は、Web ロールが Azure で実行されるときに必要なすべての MVC のアセンブリが使用できることを確認する必要があります。Visual Studio の最新の Azure Tools によって提供されるテンプレートを使用して MVC プロジェクトを Web ロールとして作成した場合、必要なアセンブリがサービス パッケージに自動的に追加されます。この状況では、サービス パッケージが作成されても、見つからない MVC アセンブリについて警告メッセージは表示されません。

MVC アセンブリがないことを示す警告メッセージを修正するには、MVC プロジェクトに適用される手順に従う必要があります。

  1. Visual Studio Service Pack 1 を使用して Azure プロジェクトを発行する場合は、次の手順を使用して、アセンブリに参照を追加し、それらの参照をサービス パッケージに含めます。

    1. MVC プロジェクトのショートカット メニューを開き、[配置可能な依存関係の追加] をクリックします。

      [配置可能な依存関係の追加] ダイアログ ボックスが表示されます。

    2. [ASP.NET MVC] チェック ボックスをオンにし、[OK] をクリックします。

      サービス パッケージを作成すると、アセンブリが追加されます。サービス パッケージがデプロイされるときに、アセンブリはこの Web ロールの仮想マシンにインストールされます。

  2. Visual Studio Service Pack 1 を使用しないで Azure プロジェクトを発行する場合は、次のタスクのいずれかを実行して、Azure プロジェクトが Azure にデプロイされるときに正しく実行されるかどうかを確認できます。

    1. Web ロール プロジェクトに、次のアセンブリへの参照を追加し、[ローカルにコピー] プロパティを [True] に設定します。

      • Microsoft.Web.Infrastructure

      • System.Web.Helpers

      • System.Web.Mvc

      • System.Web.Razor

      • System.Web.WebPages

      • System.Web.WebPages.Deployment

      • System.Web.WebPages.Razor

      noteメモ
      Web ロール プロジェクトにアセンブリ参照を追加する方法の詳細については、「Include Files in the Service Package」を参照してください。

    2. Web ロールにスタートアップ タスクを追加して MVC3 アセンブリをインストールします。startup というフォルダーをプロジェクトに作成します。次に、ファイル AspNetMVC3Setup.exe をこのフォルダーに追加します。最後に、この XML をサービス定義ファイルの Web ロール要素に追加します。

      
      <Startup>
         <Task commandLine="startup\AspNetMVC3Setup.exe /q /log mvc3_install.htm" executionContext="elevated" />
      </Startup>
      
      
      noteメモ
      MVC3 アセンブリのスタートアップ タスクの追加についてのブログのエントリを参照してください。スタートアップ タスクの詳細については、前のセクション「ロールのスタートアップ タスクを作成する」を参照してください。

  1. MVC2 プロジェクトでこの警告メッセージが表示される場合は、System.Web.Mvc アセンブリの参照は既に Web ロール プロジェクトに追加されています。このアセンブリをサービス パッケージに含めるには、このアセンブリのショートカット メニューを開き、[プロパティ] をクリックします。

    [プロパティ] ウィンドウが表示されます。

  2. [ローカルにコピー] ボックスの一覧で、[True] を選択します。

Visual Studio の Azure Tools で MVC3 Web ロールを作成すると、その Web ロールはユニバーサル ASP.NET プロバイダーを使用するように設定されます。既定では、このプロバイダーは DefaultConnection 接続文字列の中の LocalDB データベースを使用するように構成されています。Azure プロジェクトを発行するときに、Azure がホストする SQL データベース インスタンスを使用するように接続文字列を変更する必要があります。

Important重要
このようにするには、Azure がホストする SQL データベース インスタンスを使用できるサブスクリプションが必要です。Azure 管理ポータルからサブスクリプションにアクセスすると、サブスクリプションで提供されるサービスを確認できます。詳細については、「方法:Visual Studio から Azure クラウド サービスへの Web アプリケーションの移行および発行」を参照してください。

関連項目

表示:
© 2015 Microsoft