既存の SharePoint サイトからのアイテムのインポート
SharePoint ソリューション パッケージのインポート プロジェクト テンプレートを使用すると、既存の SharePoint サイトのコンテンツ タイプやフィールドなどの要素を、新しい Visual Studio SharePoint ソリューションで再利用できます。インポートしたほとんどのソリューションは変更しなくても実行できますが、考慮する必要のある制限事項と問題があります。特に、インポートした後でアイテムを変更する場合に注意が必要です。
[!メモ]
再利用可能なワークフローをインポートするには、再利用可能なワークフローのインポート プロジェクト テンプレートを使用します。詳細については 再利用可能なワークフローをインポートするためのガイドライン.
サポートされる SharePoint ソリューション
Visual Studio 2012 は、SharePoint Foundation 2010 および SharePoint Server 2010 で作成されたソリューションのインポートを完全にサポートします。
Visual Studio 2012 は、次のアプリケーションで作成されたソリューションのインポートをサポートしません。
Windows SharePoint Services 3.0
Microsoft Office SharePoint Server 2007
Visual Studio 2008
Microsoft SharePoint Designer 2007
Visual Studio 2010
これらのアプリケーションで作成したソリューションを正常にインポートできることがよくありますが、機能はテストおよびサポートされていません。
アイテムのインポートに関する制限事項
既存の .wsp ファイルからはほとんどの SharePoint アイテムをインポートできますが、次のアイテムはサポートされず、正常に動作するには変更が必要な場合があります。
BDC エンティティ
コード ワークフロー関連付け要素
コード ワークフロー
可視 Web パーツ (.ascx)
Web サービス (.asmx)
コンテンツ タイプ バインディング
イベント レシーバー
リスト定義 (テンプレート)
サイト定義
SharePoint Foundation 2010 または SharePoint Server 2010 からソリューションをエクスポートするとき、これらのアイテムは .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 テンプレートが含まれる場合は、それがソリューション エクスプローラーでスタートアップ ページとして設定されます。
フィールドとプロパティ バッグのインポート
複数のフィールドがあるソリューションをインポートすると、すべての個別のフィールド定義が 1 つの Elements.xml ファイルにマージされて、ソリューション エクスプローラーの [フィールド] という名前のノードに格納されます。同様に、すべてのプロパティ バッグ エントリが Elements.xml ファイルにマージされて、[PropertyBags] という名前のノードに格納されます。
SharePoint でのフィールドは、テキスト、ブール値、ルックアップなど、指定されたデータ型の列です。詳細については、「Building Block: Columns and Field Types (構成要素: 列とフィールドの型)」を参照してください。プロパティ バッグを使用すると、ファームから SharePoint サイトのリストまで、あらゆるもののプロパティを SharePoint のオブジェクトに追加できます。プロパティ バッグは、プロパティ名と値のハッシュ テーブルとして実装されます。詳細については、「Managing SharePoint Configuration (SharePoint の構成の管理)」または「SharePoint Property Bag Settings (SharePoint のプロパティ バッグの設定)」を参照してください。
プロジェクト内のアイテムの削除
SharePoint ソリューションのほとんどのアイテムには、1 つ以上の依存するアイテムがあります。たとえば、リスト インスタンスはコンテンツ タイプに依存し、コンテンツ タイプはフィールドに依存します。SharePoint ソリューションをインポートした後、ソリューション内のあるアイテムを削除して、その依存アイテムを削除しなかった場合、ソリューションの配置を試みるまで、Visual Studio では参照の問題が通知されません。たとえば、インポートされたソリューションに含まれるリスト インスタンスがコンテンツ タイプに依存している場合、そのコンテンツ タイプを削除すると、配置時にエラーが発生する場合があります。依存アイテムが SharePoint サーバーに存在しない場合は、エラーが発生します。同様に、削除された項目に関連するプロパティ バッグがある場合は、[PropertyBags] Elements.xmlファイルからこれらのプロパティ バッグ エントリを削除します。したがって、インポートしたソリューションから項目を削除すると、配置エラーが表示された場合は、参照先の項目も削除する必要があるかどうかを確認します。
欠落したフィーチャー属性の復元
ソリューションをインポートすると、一部のオプションのフィーチャー属性がインポートされたフィーチャー マニフェストから除外されます。このような属性を新しいフィーチャー ファイルに復元する必要がある場合は、元のフィーチャー ファイルと新しいフィーチャー マニフェストを比較して欠落している属性を識別し、トピック「方法: SharePoint フィーチャーをカスタマイズする」の指示に従ってください。
組み込みのリスト インスタンスでは実行されない配置の競合検出
Visual Studio では、組み込みのリスト インスタンス (つまり、SharePoint に付属する既定のリスト インスタンス) に対しては配置の競合検出が実行されません。これは、SharePoint で組み込みのリスト インスタンスが上書きされるのを防ぐためです。組み込みのリスト インスタンスも、が削除または上書きされる配置されていないか、が更新されます。詳細については SharePoint のパッケージ化と配置のトラブルシューティング.
SharePoint Server 2010 ワークフローのインポート
SharePoint Server 2010 で作成したワークフローをインポートした場合、配置した後で正常に動作しません。これは、一部のアセンブリが欠落していること、およびワークフロー SharePoint Server 2010 が Visual Studio のワークフロー ソリューションで現在サポートされていないInfoPathフォームを含むため、正しく実行されません。ただし、インポートした SharePoint Server 2010 ワークフローに対して、SharePoint Server 2010 アセンブリへの参照の追加や、InfoPath フォームの再接続などのいくつかのアイテムの修正を行うと、正しく動作させることができます。詳細については「Importing SharePoint Server 2010 Workflows (SharePoint Server 2010 ワークフローをインポートする)」を参照してください。
アイテム名の文字制限
Visual Studio には、パスを含むプロジェクト名とプロジェクト アイテム名に全体で 260 字の制限があります。ソリューションのインポート時、アイテム名がこの制限を超えた場合、エラーが発生します。
指定されたパス、ファイル名、またはその両方が長すぎます。完全限定型名は 260 文字未満で指定し、ディレクトリ名は 248 未満で指定してください。
このエラーが発生すると、アイテムは作成されません。この問題はインポートされるモジュールでよく発生します。この問題を回避するには、次のようにします。
[新しいプロジェクトの追加] ダイアログ ボックスでプロジェクト名を入力するときに、短い名前を使用します。
できる限りルート フォルダーに近い場所にプロジェクトを作成することで、パスを短くします。
SharePointProductVersion 属性
Windows SharePoint Services 3.0 や Microsoft Office SharePoint Server 2007 などの旧バーションの SharePoint で作成されたソリューションをインポートする場合は、パッケージ マニフェストの SharePointProductVersion 属性値を 12.0 に変更するか、スクリプト マネージャー コントロールをすべてのインポートされる Web ページに挿入し、SharePointProductVersion の設定を 14.0 のままにします。そうしないと、インポートされた Web フォームが SharePoint で表示されません。
背景
SharePoint Foundation 2010 および SharePoint Server 2010 のソリューションには、SharePointProductVersion という属性が含まれます。SharePoint ではこの属性をパッケージ マニフェストに使用し、ソリューションの設計対象である SharePoint のバージョンを判断しています。有効な 2 つの値は 12.0 と 14.0 です。12.0 の値は、アイテムが Windows SharePoint Services 3.0 用または Microsoft Office SharePoint Server 2007 用に設計されていることを示します。また、14.0 はアイテムが SharePoint Foundation 2010 用または SharePoint Server 2010 用に設計されていることを示します。
ASPX ページをレンダリングするときのセキュリティは強化されたため、SharePoint Foundation 2010 および SharePoint Server 2010 では、すべての ASPX ページまたはマスター ページにスクリプト マネージャー コントロールを含める必要があります。スクリプト マネージャーの詳細については、「ScriptManager コントロールの概要」を参照してください。スクリプト マネージャー コントロールは Windows SharePoint Services 3.0 と Microsoft Office SharePoint Server 2007 で使用できなかったため、SharePoint Foundation 2010 または SharePoint Server 2010 にアップグレードされた Windows SharePoint Services 3.0 ページまたは Microsoft Office SharePoint Server 2007 ページに追加する必要がありました。標準のマスター ページを使用する ASPX ページにスクリプト マネージャー コントロールは不要です。標準のマスター ページに既に追加されているためです。ただし、SharePoint Foundation 2010 または SharePoint Server 2010 で機能するには、マスター ページを使用しない ASPX ページまたはカスタム マスター ページを使用する ASPX ページによってスクリプト コントロールを追加する必要があります。
スクリプト マネージャー コントロールがないと、Windows SharePoint Services 3.0 プロジェクトまたは Microsoft Office SharePoint Server 2007 プロジェクトを Visual Studio 2010 にインポートする場合に問題になることがあります。すべての新しいプロジェクトの SharePointProductVersion 属性は 14.0 に設定されるためです。スクリプト マネージャーがない Web フォームを持つアップグレードされたプロジェクトを配置する場合、フォームは SharePoint に表示されません。
参照
処理手順
チュートリアル: 既存の SharePoint サイトからのアイテムのインポート
チュートリアル: SharePoint Designer の再利用可能なワークフローの Visual Studio へのインポート
方法: 既存の BDC モデル ファイルを SharePoint プロジェクトに追加する