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 ファイルを編集するかを選択できるようになっています。前者を選択した場合、プロジェクトは正常に実行されます。2番目のオプションを選択すると、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. Windows SharePoint Services のプロセス (w3wp.exe) に Visual Studio のデバッガーをアタッチします。プロジェクトの種類が 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 2010 などのクライアント アプリケーションや別個のサーバー側のコードを使用して、ワークフローを開始することもできます。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\11.0\SharePointTools]

「EnableDiagnostics」の REG_DWORD の値がない場合は、列を手動で作成します。設定します「1. "と「EnableDiagnostics値を」

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

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

参照

概念

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