SharePoint ソリューションのデバッグ

SharePoint ソリューションは、Visual Studio デバッガーを使用してデバッグできます。 デバッグを開始すると、プロジェクト ファイルが Visual Studio によって SharePoint サーバーに配置され、SharePoint サイトのインスタンスが Web ブラウザーで開きます。 以下のセクションでは、Visual Studio で SharePoint アプリケーションをデバッグする方法について説明します。

  • デバッグの有効化

  • F5 キーによるデバッグと配置プロセス

  • SharePoint プロジェクトのフィーチャー

  • デバッグのワークフロー

  • フィーチャーのイベント レシーバーのデバッグ

  • 拡張デバッグ情報

デバッグの有効化

SharePoint ソリューションを Visual Studio で初めてデバッグするとき、デバッグを有効にするように web.config ファイルが構成されていないことを警告するダイアログ ボックスが表示されます。 web.config ファイルは SharePoint サーバーのインストール時に作成されます。 詳細については、「Web.config ファイルを使用して作業する」を参照してください。 このダイアログ ボックスでは、デバッグせずにプロジェクトを実行するか、デバッグを有効にするように web.config ファイルを編集するかを選択できるようになっています。 前者を選択した場合、プロジェクトは通常どおりに実行されます。 後者を選択した場合、web.config ファイルは次のように構成されます。

  • 呼び出し履歴は有効にする (CallStack="true")

  • Visual Studio のカスタム エラーは無効にする (<customErrors mode="Off" />)

  • コンパイル デバッグは有効にする (<compilation debug="true">)

結果として生成される web.config ファイルは、次のとおりです。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <configuration>
        ...
        <SharePoint>
            <SafeMode MaxControls="200"
                CallStack="true"
                DirectFileDependencies="10"
                TotalFileDependencies="50"
                AllowPageLevelTrace="false">
                ...
            </SafeMode>
        ...
        </SharePoint>
        <system.web>
            ...
            <customErrors mode="Off" />
            ...
            <compilation debug="true">
            ...
            </compilation>
            ...
        </system.web>
        ...
    </configuration>

変更を元に戻し、デバッグを無効にするには、web.config ファイルで、次の XML を変更します。

  • 呼び出し履歴は無効にする (CallStack="false")

  • Visual Studio のカスタム エラーは有効にする (<customErrors mode="On" />)

  • コンパイル デバッグは無効にする (<compilation debug="false">)

F5 キーによるデバッグと配置プロセス

SharePoint プロジェクトをデバッグ モードで実行するとき、SharePoint の配置プロセスによって、次のタスクが実行されます。

  1. カスタマイズ可能な配置前コマンドが実行されます。

  2. MSBuild コマンドを使用して、Web ソリューション パッケージ (.wsp) ファイルが作成されます。 この .wsp ファイルには、すべての必要なファイルおよびフィーチャーが含まれます。 詳細については、「ソリューションの概要」を参照してください。

  3. SharePoint ソリューションがファーム ソリューションである場合は、指定されたサイトの URL の IIS アプリケーション プールがリサイクルされます。 この段階で、IIS のワーカー プロセスによってロックされたファイルが解放されます。

  4. 以前のバージョンのパッケージが既に存在する場合は、.wsp ファイル内の以前のバージョンのフィーチャーおよびファイルが取り消されます。 この段階で、フィーチャーが非アクティブ化され、ソリューション パッケージがアンインストールされた後に、ソリューション パッケージが SharePoint サーバーから削除されます。

  5. .wsp ファイル内の最新のバージョンのフィーチャーおよびファイルがインストールされます。 この段階で、SharePoint サーバーにソリューションが追加され、インストールされます。

  6. ワークフローの場合は、ワークフロー アセンブリがインストールされます。 その場所を変更するには、Assembly Location プロパティを使用します。

  7. スコープがサイトまたは Web の場合は、SharePoint でプロジェクトのフィーチャーがアクティブ化されます。 ファーム スコープおよび Web アプリケーション スコープのフィーチャーはアクティブ化されません。

  8. ワークフローの場合は、SharePoint カスタマイズ ウィザード で選択した SharePoint ライブラリ、リスト、またはサイトにワークフローが関連付けられます。

    注意

    この関連付けは、ウィザードで [ワークフローを自動的に関連付ける] を選択した場合にのみ行われます。

  9. カスタマイズ可能な配置後コマンドが実行されます。

  10. Visual Studio デバッガーを Windows SharePoint Services プロセス (w3wp.exe) にアタッチします。プロジェクトの種類で Sandboxed Solution プロパティの変更が許可されており、その値が true に設定された場合、デバッガーは別のプロセス (SPUCWorkerProcess.exe) にアタッチされます。 詳細については、「サンドボックス ソリューションの考慮事項」を参照してください。

  11. SharePoint ソリューションがファーム ソリューションである場合は、JavaScript デバッガーが開始されます。

  12. 適切なライブラリ、リスト、またはサイト ページが Web ブラウザーに表示されます。

タスクが 1 つ完了するたびに、ステータス メッセージが Visual Studio の出力ウィンドウに表示されます。 タスクを完了できなかった場合は、Visual Studio の [エラー一覧] ウィンドウにエラー メッセージが表示されます。

SharePoint プロジェクトのフィーチャー

フィーチャーは、サイト定義を使用することによってサイトの変更を単純化する、移植性のあるモジュール式の機能単位です。 これは、特定のスコープに対してアクティブ化でき、ユーザーが特定の目的またはタスクを達成するのを支援する Windows SharePoint Services (WSS) 要素のパッケージでもあります。 テンプレートはフィーチャーとして配置されます。

プロジェクトをデバッグ モードで実行すると、配置プロセスにより、%COMMONPROGRAMFILES%\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES の feature ディレクトリにフォルダーが作成されます。 フィーチャーには、"<プロジェクト名>_Featurex" という形式の名前が付きます (例: TestProject_Feature1)。

feature ディレクトリに作成された、ソリューションのフォルダーには、機能定義ファイルとワークフロー定義ファイルが格納されます。 機能定義ファイル (Feature.xml) は、プロジェクトのフィーチャーに含まれているファイルについて記述したファイルです。プロジェクト定義ファイル (Elements.xml) は、プロジェクト テンプレートについて記述したファイルです。 Elements.xml はソリューション エクスプローラーに表示されますが、Feature.xml はフィーチャー パッケージの作成時に生成されます。 これらのファイルの詳細については、「SharePoint プロジェクトとプロジェクト項目テンプレート」を参照してください。

デバッグのワークフロー

ワークフロー プロジェクトをデバッグすると、その種類に応じたワークフロー テンプレートが Visual Studio によってライブラリまたはリストに追加されます。 このワークフロー テンプレートは手動で開始できるほか、項目を追加または更新することによって開始することもできます。 これで、Visual Studio を使用してワークフローをデバッグできます。

注意

その他のアセンブリに参照を追加する場合は、アセンブリがグローバル アセンブリ キャッシュ (GAC) にインストールされていることを確認してください。 そうしないと、ワークフロー ソリューションは失敗します。 アセンブリをインストールする方法については、「ドキュメントまたは項目でワークフローを手動で起動する」を参照してください。

ただし、配置プロセスでは、ワークフローは開始されません。 SharePoint Web サイトからワークフローを開始する必要があります。 Microsoft Office Word 2007 などのクライアント アプリケーションや別個のサーバー側のコードを使用して、ワークフローを開始することもできます。 SharePoint カスタマイズ ウィザード が指定するアプローチのいずれかを使用してください。

たとえば、ワークフローの手動での開始を許可した場合は、ライブラリまたはリスト内のアイテムから、ワークフローを直接開始します。 ワークフローを手動で開始する方法の詳細については、「ドキュメントまたはアイテムでワークフローを手動で起動する」を参照してください。

フィーチャーのイベント レシーバーのデバッグ

既定では、Visual Studio SharePoint アプリケーションを実行すると、そのフィーチャーが SharePoint サーバー上で自動的にアクティブ化されます。 ただし、フィーチャーのイベント レシーバーをデバッグする際は、このことが問題になります。Visual Studio によってアクティブ化されたフィーチャーは、デバッガーとは異なるプロセスで実行されるためです。 つまり、ブレークポイントなどの一部のデバッグ機能が正常に機能しなくなるということです。

SharePoint でフィーチャーが自動的にアクティブ化される動作を無効にし、フィーチャーのイベント レシーバーが適切にデバッグされるようにするには、プロジェクトの [アクティブな配置構成] プロパティの値を [アクティブ化しない] に設定してからデバッグを実行します。 そのうえで、Visual Studio SharePoint アプリケーションが起動されてから、SharePoint でフィーチャーを手動でアクティブ化します。 これを行うには、SharePoint の [サイトの操作] メニューの [サイトの設定] をクリックし、[サイト フィーチャーの管理] リンクをクリックして、フィーチャーの横にある [アクティブ化] ボタンをクリックします。次に、通常どおりにデバッグを再開します。

拡張デバッグ情報

Visual Studio プロセス (devenv.exe)、Visual Studio SharePoint ホスト プロセス (vssphost4.exe)、SharePoint、および WCF レイヤー間の相互作用がときには複雑であるため、ビルドや配置などの実行中に発生したエラーを診断することが困難な場合があります。 拡張デバッグ情報を有効にすると、こうしたエラーが解決しやすくなります。 これを行うには、まず Windows レジストリで次のレジストリ キーに移動します。

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\SharePointTools]

"EnableDiagnostics" キー値を "0" から "1" に変更します。

このキー値 1 に設定すると、Visual Studio の実行時にプロジェクト システム エラーが発生するたびに、[出力] ウィンドウにスタック トレース情報が表示されます。 強化されたデバッグ情報を無効にするには、EnableDiagnostics を 0 に戻します。

他の SharePoint レジストリ キーの詳細については、「Visual Studio での SharePoint ツールの拡張機能のデバッグ」を参照してください。

参照

概念

SharePoint ソリューションのトラブルシューティング