SharePoint 2013 ソリューションの仮想ディレクトリ
仮想ディレクトリ システムの変更が SharePoint の ファーム ソリューション 作成にどのような影響を与えるかについて説明します。
ソリューションが新しい UI モード システムと互換性があるようにする
現在 Microsoft SharePoint 2010 Software Development Kit (SDK) を使用しているが、SharePoint の開発を行っている場合、作業時に検討する必要がある、仮想ディレクトリ システムの変更があります。 この変更は、SharePoint 2010 モードと SharePoint モードのどちらでも、サイト コレクションを実行できるようにする、新しい SharePoint 機能の副作用です。 このモードは互換性レベルや UI バージョンと呼ばれることもあります。 仮想フォルダー _layouts
または _controltemplates
のファイルの場合、SharePoint では、サイト コレクションのモードに応じて、%ProgramFiles%\Common Files\Microsoft Shared\Web サーバー拡張機能\15\ (15 hive とも呼ばれます) または対応する 14 Hive 内のファイルのバージョンを使用する必要があります。 SharePoint は、SharePoint ファイルを使用する必要があることを示すため、仮想ディレクトリ パス名の後ろに「/15」を追加します。 その文字列が存在しない場合、SharePoint 2010 ファイルが使用されることを意味します。
この新しいシステムは、SharePoint のソリューションとアプリを開発する場合、特に SharePoint 2010 SDK を使用している場合に影響を与えます。 SharePoint モードでのみ実行される任意の SharePoint アドインと、SharePoint モードで実行されるサイト コレクションでのみ使用されることがわかっている SharePoint ソリューションでは、ソリューション/アプリで作成したすべての_layouts
_controltemplates
仮想パスに "/15" を自分で追加する必要があります。 この文字列が SharePoint 2010 SDK のガイダンスにこの文字列が表示されていない場合でも、この操作が必要です。 たとえば、SharePoint 2010 SDK で を使用 ~/_layouts/images/myimage.png
するように指示された場合は、SharePoint 用の開発時に を使用 ~/_layouts/15/images/myimage.png
する必要があります。
ソリューションが両方のモードのサイト コレクションと互換性があるようにするには、現在のサイト コレクションのモードを判別するための分岐ロジックが必要で、それに従って仮想パスを作成する必要があります。 CompatibilityLevel プロパティは、すべての SharePoint クライアント オブジェクト モデルと REST インターフェイスでも使用でき、コードでモードを確認できる 1 つの場所です。 SPUtility クラスもいくつかの新しいプロパティを備えており、ソリューション内での互換性レベルの管理をサポートします。 これらのプロパティは、クライアント オブジェクト レベルでは使用できません。 最後に SharePoint には、コードで現在の互換性レベルの検出に使用できる UIVersion プロパティを公開する、いくつかのコントロールが用意されています。
注:
仮想パスのファイルが *.aspx の場合、SharePoint は現在のサイト コレクションのモードを自動的に検出し、適切なハイブからファイルを返します。 このため、仮想パスに「/15」を挿入する必要はありません。