既存の SharePoint サイトからのアイテムのインポート

SharePoint ソリューション パッケージのインポート プロジェクト テンプレートによって、既存の SharePoint サイトのコンテンツ タイプやフィールドなどの要素を新しい Visual Studio SharePoint ソリューションで再利用できます。 インポートしたソリューションのほとんどは変更せずに実行できますが、それらをインポートした後にいずれかの項目を変更する場合は特に、考慮すべき特定の制限事項および問題があります。

Note

再利用可能なワークフローをインポートするには、再利用可能なワークフローのインポート プロジェクト テンプレートを使用します。 詳細については、「再利用可能なワークフローをインポートするためのガイドライン」を参照してください。

サポートされる SharePoint ソリューション

Visual Studio 2012 では、SharePoint Foundation と SharePoint Server で作成されたソリューションのインポートが完全にサポートされています。

Visual Studio 2012 では、以下のアプリケーションで作成されたソリューションのインポートはサポートされません。

  • Windows SharePoint Services 3.0

  • Microsoft Office SharePoint Server 2007

  • Visual Studio 2008

  • Microsoft SharePoint Designer 2007

  • Visual Studio 2010

    これらのアプリケーションによって作成されたソリューションを正常にインポートできる場合もありますが、その機能はテストされておらず、サポートされていません。

アイテムのインポートに関する制限事項

ほとんどの SharePoint アイテムは既存の .wsp ファイルからインポートできますが、次のアイテムはサポートされておらず、変更を加えないと正常に機能しない場合があります。

  • BDC エンティティ

  • コード ワークフロー関連の要素

  • コード ワークフロー

  • 視覚的 Web パーツ (.ascx)

  • Web サービス (.asmx)

  • コンテンツ タイプのバインディング

  • イベント レシーバー

  • リスト定義 (テンプレート)

  • サイト定義

    SharePoint Foundation または SharePoint Server からソリューションをエクスポートすると、これらのアイテムは .wsp ファイルから自動的に除外されます。 ただし、サポートされていないツールによって生成された他の .wsp ファイルには、これらのアイテムが含まれることがあります。 (このトピック前半の「サポートされる SharePoint ソリューション」をご覧ください。)

ソリューションのインポート時に実行される動作

SharePoint ソリューション パッケージのインポート テンプレートでソリューションをインポートする場合、Visual Studio では .wsp ファイルのすべての内容をコピーし、インポートする要素とそのファイルの間の関連付けと参照を可能な限り調整し、維持しようとします。

インポートされるすべてのアイテムは、 ソリューション エクスプローラーの対応するフォルダーにコピーされます。 たとえば、 [コンテンツ タイプ] フォルダーの下にコンテンツ タイプが表示され、 [リスト インスタンス]の下にリスト インスタンスが一覧表示されます。 インポートされたアイテムに関連付けられているファイルは、そのアイテムのフォルダーにコピーされます。 たとえば、インポートしたリスト インスタンスには、そのモジュール、フォーム、ASPX ページが含まれます。

依存アイテム

[SharePoint ソリューション パッケージのインポート] ウィザードでアイテムを選んだものの、その依存アイテムを選んでいない場合は、インポートする前に依存アイテムも選ぶ必要があることがメッセージ ボックスで通知されます。

フィーチャーとは

SharePoint Designer のユーザーは、"フィーチャー" という予期しないファイルが、ソリューション エクスプローラー内のインポートされたソリューションにあるのを見つけることがあります。フィーチャーは SharePoint Designer ソリューション内に存在していましたが、非表示になっていました。 現在では Visual Studio にフィーチャーが表示されるようになりました。

フィーチャーは、SharePoint アイテムのコンテナーになります。 各フィーチャーは、その中に含まれているコンテンツ タイプやリスト定義などの各アイテムへの参照を保持します。 ソリューションをインポートすると、Visual Studio では、インポートされた要素のすべてのフィーチャーを設定し、ファイルのフィーチャーと要素との関係を維持しようとします。 参照を解決できないファイルがあれば、 [その他のインポートされたファイル] フォルダーに配置されます。

フィーチャーの詳細については、「SharePoint ソリューションの開発」および「フィーチャーの使用」を参照してください。

特殊な場合の処理

Visual Studio はアイテムとその依存ファイルの調整ができない場合があります。 Visual Studio が解決できなかったファイルは [その他のインポートされたファイル] フォルダーに表示されます。 また、その DeploymentType プロパティは NoDeployment に設定されるので、それらのファイルがソリューションと一緒に配置されることはありません。

たとえば、リスト定義 ExpenseForms をインポートする場合、その名前を持つリスト定義は、ソリューション エクスプローラー[リスト定義] フォルダーに、その Elements.xml ファイルおよび Schema.xml ファイルと一緒に表示されます。 しかし、関連付けられた ASPX と HTML フォームは、 [その他のインポートされたファイル] フォルダーの下にある [ExpenseForms] と呼ばれるフォルダーに配置される可能性があります。 インポートを完了するには、 ソリューション エクスプローラー で ExpenseForms リスト定義の下にあるそれらのファイルを移動し、各ファイルの DeploymentType プロパティを NoDeployment から ElementFileに変更します。

イベント レシーバーをインポートする場合、Elements.xml ファイルは適切な場所にコピーされますが、アセンブリを手動でソリューション パッケージに含めて、ソリューションと一緒に配置されるようにする必要があります。 これを行う方法の詳細については、「方法: アセンブリを追加および削除する」を参照してください。

ワークフローをインポートすると、InfoPath フォームが [その他のインポートされたファイル] フォルダーにコピーされます。 .wsp ファイルに Web テンプレートが含まれている場合、それがソリューション エクスプローラーのスタートアップ ページとして設定されます。

フィールドとプロパティ バッグのインポート

複数のフィールドを持つソリューションをインポートするときには、すべての個別のフィールド定義が単一の Elements.xml ファイルにマージされ、ソリューション エクスプローラー内の Fields というノードの下に置かれます。 同様に、すべてのプロパティ バッグ エントリが、PropertyBags というノードの下にある Elements.xml ファイルにマージされます。

SharePoint 内のフィールドは、テキスト、ブール値、参照などの指定したデータ型の列です。 詳しくは、「 構成要素: 列とフィールド型」をご覧ください。 プロパティ バッグを使用することによって、SharePoint 内のオブジェクト (ファームから SharePoint サイト上のリストまですべて) にプロパティを追加できます。 プロパティ バッグは、プロパティの名前と値のハッシュ テーブルとして実装されます。 詳しくは、「 SharePoint 構成の管理 」または「 SharePoint プロパティ バッグ設定」をご覧ください。

プロジェクト内のアイテムの削除

SharePoint ソリューションのほとんどのアイテムには、1 つ以上の依存アイテムがあります。 たとえば、リスト インスタンスはコンテンツ タイプに依存します。また、コンテンツ タイプは、フィールドに依存します。 SharePoint ソリューションをインポートした後でソリューション内のアイテムを削除し、その依存アイテムは削除しない場合、ソリューションの配置を試みるまで Visual Studio では参照の問題を通知しません。 たとえば、インポートされたソリューションに、コンテンツ タイプに依存するリスト インスタンスがある場合、そのコンテンツ タイプを削除すると、配置でエラーが発生する可能性があります。 依存アイテムが SharePoint サーバー上に存在しない場合に、エラーが発生します。 同様に、削除されるアイテムに関連したプロパティ バッグもある場合は、それらのプロパティ バッグのエントリを PropertyBagsElements.xml ファイルから削除します。 そのため、インポートされたソリューションから何らかのアイテムを削除すると配置エラーが発生する場合は、削除が必要な配置アイテムがないか確認します。

失われたフィーチャー属性の復元

ソリューションをインポートするときに、オプションのいくつかのフィーチャー属性は、インポートされたフィーチャー マニフェストから除外されます。 これらの属性を新しいフィーチャー ファイルで復元する場合は、元のフィーチャー ファイルと新しいフィーチャー マニフェストを比較して失われた属性を識別し、トピック「方法: SharePoint フィーチャーをカスタマイズする」の説明に従います。

組み込みのリスト インスタンスで配置競合の検出は行われない

Visual Studio では、組み込みのリスト インスタンス (つまり、SharePoint に付属している既定のリスト インスタンス) に関する配置競合の検出は実行しません。 SharePoint 上の組み込みのリスト インスタンスを上書きしないために、競合の検出は実行されません。 組み込みのリスト インスタンスは配置されたり、更新されたりしますが、削除されたり、上書きされたりすることはありません。 詳細については、「SharePoint のパッケージ化と配置のトラブルシューティング」を参照してください。

SharePoint Server 2010 のワークフローのインポート

SharePoint Server で作成したワークフローをインポートすると、それを配置した後に正しく実行されません。 ワークフローが正しく実行されない理由は、特定のアセンブリが不足していて、SharePoint Server のワークフローに Visual Studio のワークフロー ソリューションで現在サポートされていない InfoPath フォームが含まれていることです。 ただし、インポートされた SharePoint Server のワークフローは、SharePoint Server アセンブリへの参照を追加したり InfoPath フォームを再接続したりして一部のアイテムを修正すると、正常に機能できます。 詳細については、SharePoint Server 2010 ワークフローのインポートに関する記事を参照してください。

アイテム名の文字制限

Visual Studio では、プロジェクトおよびプロジェクト アイテムの名前 (パスを含む) に合計 260 文字の制限があります。 ソリューションをインポートするときに、アイテム名がこの制限を超えると、次のエラーが発生します。

"指定されたパス、ファイル名、またはその両方が長すぎます。 完全に記述されたファイル名は 260 文字未満である必要があり、ディレクトリ名は 248 文字未満である必要があります。

このエラーが発生すると、アイテムは作成されません。 この問題は、インポートしたモジュールで最も頻繁に発生します。 この問題を回避するには、次の操作を行います。

  • [新しいプロジェクトの追加] ダイアログ ボックスにプロジェクト名を入力するときは、短い名前を使用します。

  • パスを短くために、可能な限りルート フォルダーに近い場所にプロジェクトを作成します。

SharePointProductVersion 属性

Windows SharePoint Services 3.0 や Microsoft Office SharePoint Server 2007 など SharePoint の以前のバージョンで作成されたソリューションをインポートする場合、パッケージ マニフェストの SharePointProductVersion 属性の値を 12.0 に変更するか、インポートされたすべての Web ページに Script Manager コントロールを挿入して SharePointProductVersion の設定を 14.0 のままにします。 それ以外の場合、インポートされた Web フォームは、SharePoint では表示されません。

背景

SharePoint Foundation と SharePoint Server のソリューションには、SharePointProductVersion という属性が含まれています。 SharePoint はパッケージ マニフェストのこの属性を使用して、そのソリューションが設計されている SharePoint のバージョンを判別します。 正しい値は 12.0 と 14.0 の 2 つです。 値 12.0 は、アイテムが Windows SharePoint Services 3.0 または Microsoft Office SharePoint Server 2007 向けに設計されていることを示し、値 14.0 は、アイテムが SharePoint Foundation または SharePoint Server 向けに設計されていることを示します。

ASPX ページのレンダリング時のセキュリティを強化するために、SharePoint Foundation と SharePoint Server では、すべての ASPX またはマスターのページに Script Manager コントロールを含める必要があります。 Script Manager について詳しくは、「 ScriptManager コントロールの概要」をご覧ください。 Script Manager コントロールは Windows SharePoint Services 3.0 と Microsoft Office SharePoint Server 2007 では使用できなかったため、SharePoint Foundation または SharePoint Server にアップグレードされた Windows SharePoint Services 3.0 または Microsoft Office SharePoint Server 2007 のページにそれを追加する必要があります。 標準のマスター ページを使用する ASPX ページでは、標準のマスター ページに既に Script Manager コントロールが 1 つ追加されているため、Script Manager コントロールは必要ありません。 ただし、マスター ページを使用しない、またはカスタム マスター ページを使用する ASPX ページでは、SharePoint Foundation または SharePoint Server で作業するために Script Manager コントロールを追加する必要があります。

新しいすべてのプロジェクトの SharePointProductVersion 属性は 14.0 に設定されるため、Script Manager コントロールがないと、Windows SharePoint Services 3.0 または Microsoft Office SharePoint Server 2007 のプロジェクトを Visual Studio 2010 にインポートするときに問題が発生するおそれがあります。 Web フォームが存在するアップグレードされたプロジェクトを Script Manager なしで配置する場合、フォームは SharePoint に表示されません。

関連項目