SharePoint ソリューションをデバッグする

Visual Studio デバッガーを使用して SharePoint ソリューションをデバッグできます。 デバッグを開始すると、プロジェクト ファイルが Visual Studio によって SharePoint サーバーに配置され、SharePoint サイトのインスタンスが Web ブラウザーで開きます。 以下のセクションでは、Visual Studio で 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. ワークフローの場合は、ワークフロー アセンブリがインストールされます。 その場所は、[アセンブリの場所] プロパティを使用して変更できます。

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

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

    Note

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

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

  10. Visual Studio デバッガーを Windows SharePoint Services プロセス (w3wp.exe) にアタッチします。 プロジェクトの種類で [サンドボックス ソリューション] プロパティを変更でき、その値が 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\FEATURESfeature ディレクトリにフォルダーが作成されます。 フィーチャーには、"プロジェクト名_Featurex という形式の名前が付きます (TestProject_Feature1 など)。

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

デバッグ ワークフロー

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

Note

その他のアセンブリに参照を追加する場合は、アセンブリがグローバル アセンブリ キャッシュ (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 値が存在しない場合は、手動で作成します。 "EnableDiagnostics" の値を "1" に設定します。

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

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