Visual Studio での SharePoint ツールの拡張機能の配置
SharePoint ツールの拡張機能を配置するには、拡張機能アセンブリと、拡張機能に同梱する必要のあるその他のファイルを含む Visual Studio 拡張機能 (VSIX) パッケージを作成します。 VSIX パッケージは、Open Packaging Conventions (OPC) 標準に準拠した圧縮ファイルです。 VSIX パッケージには .vsix の拡張子が付いています。
VSIX パッケージを作成すると、作成した拡張機能を、他のユーザーが .vsix ファイルを実行してインストールできます。 作成した拡張機能を他のユーザーがインストールすると、すべてのファイルは %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0\Extensions フォルダーに格納されます。 拡張機能を配置するには、Visual Studio Gallery (Visual Studio ギャラリー) Web サイトに VSIX パッケージをアップロードするか、ネットワーク共有やその他の Web サイトでパッケージをホスティングするなど、他の方法で顧客にパッケージを配布できます。
VSIX パッケージの作成と、Visual Studio ギャラリーへの配置の詳細については、「VSIX Deployment」を参照してください。
VSIX パッケージは、Visual Studio の VSIX プロジェクト テンプレートを使用するか、手動で作成します。
VSIX プロジェクトを使用した VSIX パッケージの作成
Visual Studio 2010 SDK によって提供される VSIX プロジェクト テンプレートを使用し、SharePoint ツールの拡張機能の VSIX パッケージを作成できます。 VSIX プロジェクトによる VSIX パッケージの作成は、手動で作成する場合に比べて次のような利点があります。
プロジェクトが構築されると、Visual Studio は VSIX パッケージを自動的に生成します。 パッケージへの配置ファイルの追加や、パッケージの [Content_Types].xml ファイルの作成などのタスクは、自動的に実行されます。
拡張機能プロジェクトやその他のファイル (プロジェクト テンプレート、項目テンプレートなど) のビルド出力を VSIX パッケージに含めるよう、VSIX プロジェクトを設定できます。
VSIX プロジェクトの使用方法の詳細については、「VSIX Project Template」を参照してください。
プロジェクトの整理
既定では、VSIX プロジェクトはアセンブリを生成せず、VSIX パッケージのみを生成します。 そのため、通常は、VSIX プロジェクトには SharePoint ツールの拡張機能を実装しません。 一般的には、少なくとも次の 2 つのプロジェクトを操作します。
VSIX プロジェクト。
拡張機能を実装するクラス ライブラリ プロジェクト。
特定の種類の拡張機能の場合、次のような追加のプロジェクトを操作することもあります。
拡張機能で使用される SharePoint コマンドを実装するクラス ライブラリ プロジェクト。 このシナリオを示すチュートリアルについては、「チュートリアル: サーバー エクスプローラーを拡張して Web パーツを表示する」を参照してください。
項目テンプレートまたはプロジェクト テンプレートを作成する項目テンプレート プロジェクトまたはプロジェクト テンプレート プロジェクト (拡張機能で SharePoint プロジェクト項目の新しい種類を定義する場合)。 このシナリオを示すチュートリアルについては、「チュートリアル: 項目テンプレートに基づくカスタム動作プロジェクト項目の作成 (パート 1)」を参照してください。
項目テンプレートまたはプロジェクト テンプレートのカスタム ウィザードを実装するクラス ライブラリ プロジェクト (拡張機能にテンプレートが含まれる場合)。 このシナリオを示すチュートリアルについては、「チュートリアル: 項目テンプレートに基づくカスタム動作プロジェクト項目の作成 (パート 2)」を参照してください。
すべてのプロジェクトを同じ Visual Studio ソリューションに含める場合は、VSIX プロジェクトの source.extension.vsixmanifest ファイルを修正し、クラス ライブラリ プロジェクトのビルド出力を含めることができます。
VSIX マニフェストの編集
拡張機能に含めるすべての項目のエントリを含むように、VSIX プロジェクトの source.extension.vsixmanifest ファイルを編集する必要があります。 source.extension.vsixmanifest ファイルを編集するときに、Visual Studio は、ファイル内の XML を編集するための UI があるデザイナーでファイルを開きます。 詳細については、「VSIX Manifest Designer」を参照してください。
次の項目のエントリを source.extension.vsixmanifest ファイルに追加する必要があります。
拡張機能アセンブリ。
拡張機能で使用される SharePoint コマンドを実装するアセンブリ。
拡張機能に関連付けられているプロジェクト テンプレートまたは項目テンプレート。
拡張機能に関連付けられているテンプレートのカスタム ウィザード。
次の手順は、これらの各項目のエントリを .vsixmanifest ファイルに追加する方法を示しています。
拡張機能アセンブリを含めるには
VSIX プロジェクトで source.extension.vsixmanifest ファイルをダブルクリックし、デザイナーでファイルを開きます。
エディターの [コンテンツ] セクションで、[コンテンツの追加] をクリックします。
[コンテンツの追加] ダイアログ ボックスで、[コンテンツ タイプの選択] ボックスの一覧の [MEF コンポーネント] をクリックします。
[ソースの選択] で、次のいずれかの手順を実行します。
拡張機能アセンブリが、VSIX プロジェクトと同じソリューションにあるプロジェクトから構築されている場合は、[プロジェクト] をクリックし、その隣にあるリスト ボックスの中からプロジェクトの名前を選択します。
拡張機能アセンブリが、プロジェクトのファイルとして含まれている場合は、[プロジェクトに含める] をクリックし、その隣にあるリスト ボックスの中からアセンブリを選択します。
拡張機能アセンブリがその他の場所にある場合は、[ファイル] をクリックし、[ファイルの選択] ダイアログ ボックスでアセンブリの場所を特定して選択します。
[OK] をクリックします。
SharePoint コマンド アセンブリを含めるには
VSIX プロジェクトで source.extension.vsixmanifest ファイルをダブルクリックし、デザイナーでファイルを開きます。
エディターの [コンテンツ] セクションで、[コンテンツの追加] をクリックします。
[コンテンツの追加] ダイアログ ボックスで、[コンテンツの種類の選択] リスト ボックスの [カスタム拡張機能の種類] をクリックします。
[種類] ボックスに「SharePoint.Commands.v4」と入力します。 この値は、SharePoint コマンドを含むすべてのアセンブリに対して必要です。
[ソースの選択] で、次のいずれかの手順を実行します。
コマンド アセンブリが、VSIX プロジェクトと同じソリューションにあるプロジェクトから構築されている場合は、[プロジェクト] をクリックし、その隣にあるリスト ボックスの中からコマンド プロジェクトの名前を選択します。
コマンド アセンブリが、プロジェクトのファイルとして含まれている場合は、[プロジェクトに含める] をクリックし、その隣にあるリスト ボックスの中からアセンブリを選択します。
コマンド アセンブリがその他の場所にある場合は、[ファイル] をクリックし、[ファイルの選択] ダイアログ ボックスを使用し、アセンブリの場所を特定して選択します。
[OK] をクリックします。
Visual Studio SDK のプロジェクト テンプレート プロジェクトまたは項目テンプレート プロジェクトを使用して作成するテンプレートを含めるには
VSIX プロジェクトで source.extension.vsixmanifest ファイルをダブルクリックし、デザイナーでファイルを開きます。
エディターの [コンテンツ] セクションで、[コンテンツの追加] をクリックします。
[コンテンツの追加] ダイアログ ボックスの [コンテンツの種類の選択] ボックスから、[プロジェクト テンプレート] または [項目テンプレート] をクリックします。
[ソースの選択] の下にある [プロジェクト] をクリックし、その横のボックスでプロジェクトの名前を選択します。
[OK] をクリックします。
ソリューション エクスプローラーで、プロジェクト テンプレート プロジェクトまたは項目テンプレート プロジェクトのノードを右クリックし、[プロジェクトのアンロード] をクリックします。
プロジェクト ノードを再度右クリックし、[YourTemplateProjectName.csproj の編集] または [YourTemplateProjectName.vbproj の編集] をクリックします。
プロジェクト ファイルで次の VSTemplate 要素を見つけます。
<VSTemplate Include="YourTemplateName.vstemplate">
この VSTemplate 要素を次の XML に置き換えます。
<VSTemplate Include="YourTemplateName.vstemplate"> <OutputSubPath>SharePoint\SharePoint14</OutputSubPath> </VSTemplate>
OutputSubPath 要素は、プロジェクトをビルドするとプロジェクト テンプレートが作成されるパス内の追加フォルダーを指定します。 ここで指定するフォルダーにより、項目テンプレートはユーザーが [新しいプロジェクトの追加] ダイアログ ボックスで [SharePoint] ノードの [2010] ノードをクリックしたときにのみ使用できるようになります。
ファイルを保存して閉じます。
ソリューション エクスプローラーで、プロジェクト テンプレート プロジェクトまたは項目テンプレート プロジェクトを右クリックし、[プロジェクトの再読み込み] をクリックします。
手動で作成するテンプレートを含めるには
VSIX プロジェクトで、テンプレートを格納するプロジェクトに新しいフォルダーを追加します。
この新規フォルダーの下に、次のサブフォルダーを追加し、LocaleID フォルダーにテンプレート (zip) ファイルを追加します。
YourTemplateFolder
SharePoint
SharePoint14
ロケール ID
YourTemplateName.zip
たとえば、英語 (US) ロケールに対応した ContosoCustomAction.zip という名前の項目テンプレートがある場合は、完全パスは ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip のようになります。
ソリューション エクスプローラーで、テンプレート ファイル (YourTemplateName.zip) をクリックします。
[プロパティ] ウィンドウで、[ビルド アクション] プロパティを [コンテンツ] に設定します。
source.extension.vsixmanifest ファイルをダブルクリックし、デザイナーでファイルを開きます。
エディターの [コンテンツ] セクションで、[コンテンツの追加] をクリックします。
[コンテンツの追加] ダイアログ ボックスの [コンテンツの種類の選択] リスト ボックスから、[項目テンプレート] または [プロジェクト テンプレート] をクリックします。
[ソースの選択] で [プロジェクトに含める] をクリックし、その隣にあるボックスからテンプレートの完全パスを選択します。 たとえば、ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip などです。
[OK] をクリックします。
プロジェクト テンプレートまたは項目テンプレートのウィザードを含めるには
VSIX プロジェクトで source.extension.vsixmanifest ファイルをダブルクリックし、デザイナーでファイルを開きます。
エディターの [コンテンツ] セクションで、[コンテンツの追加] をクリックします。
[コンテンツの追加] ダイアログ ボックスで、[コンテンツ タイプの選択] リスト ボックスの [テンプレート ウィザード] をクリックします。
[ソースの選択] で、次のいずれかの手順を実行します。
ウィザード アセンブリが、VSIX プロジェクトと同じソリューションにあるプロジェクトから構築されている場合は、[プロジェクト] をクリックし、その隣にあるボックスの中からプロジェクトの名前を選択します。
ウィザード アセンブリが、プロジェクトのファイルとして含まれている場合は、[プロジェクトに含める] をクリックし、その隣にあるボックスの中からアセンブリを選択します。
ウィザード アセンブリがその他の場所にある場合は、[ファイル] をクリックし、[ファイルの選択] ダイアログ ボックスを使用し、アセンブリの場所を特定して選択します。
[OK] をクリックします。
関連するチュートリアル
次の表に、VSIX プロジェクトを使用してさまざまな種類の SharePoint ツールの拡張機能を配置する方法について説明しているチュートリアルを示します。
拡張機能の種類 |
関連するチュートリアル |
---|---|
拡張機能アセンブリのみが含まれる拡張機能 |
チュートリアル: SharePoint プロジェクト項目の種類の拡張 チュートリアル: SharePoint プロジェクトの拡張機能の作成 チュートリアル: サーバー エクスプローラーの拡張機能から SharePoint クライアント オブジェクト モデルを呼び出す |
SharePoint コマンドが含まれる拡張機能 |
チュートリアル: SharePoint プロジェクトに対するカスタムの配置手順の作成 |
Visual Studio テンプレートが含まれる拡張機能 |
|
テンプレート ウィザードが含まれる拡張機能 |
VSIX パッケージの手動作成
SharePoint ツールの拡張機能の VSIX パッケージを手動で作成するには、次の手順を実行します。
extension.vsixmanifest ファイル、[Content_Types].xml、および VSIX パッケージ ファイル (.vsix ファイル) を作成します。 詳細については、「Anatomy of a VSIX Package」および「How to: Manually Package an Extension (VSIX Deployment)」を参照してください。
VSIX パッケージに拡張機能アセンブリを追加します。 拡張機能に SharePoint コマンドが含まれる場合は、VSIX パッケージに SharePoint コマンドを実装するアセンブリも追加します。
次のように、extension.vsixmanifest ファイルを修正します。
Content 要素の下に MefComponent 要素を追加します。 要素の値を、VSIX パッケージ内の拡張機能を実装するアセンブリの相対パスに設定します。 詳細については、「MEFComponent Element (VSX Schema)」を参照してください。
拡張機能に、SharePoint サーバー オブジェクト モデルを呼び出す SharePoint コマンドが含まれる場合は、Content 要素の下に新しい CustomExtension 要素を追加します。 要素の値を、VSIX パッケージ内の SharePoint コマンドを実装するアセンブリの相対パスに設定し、Type 属性を値 SharePoint.Commands.v4 に設定します。 詳細については、「CustomExtension Element (VSX Schema)」を参照してください。
拡張機能にプロジェクト テンプレートまたは項目テンプレートが含まれる場合は、新しい ProjectTemplate 要素または ItemTemplate 要素を Content 要素の下に追加します。 要素の値を、VSIX パッケージ内のテンプレートが含まれるフォルダーの相対パスに設定します。 詳細については、「ProjectTemplate Element (VSX Schema)」および「ItemTemplate Element (VSX Schema)」を参照してください。
拡張機能にプロジェクト テンプレートまたは項目テンプレートのカスタム ウィザードが含まれる場合は、新しい Assembly 要素を Content 要素の下に追加します。 要素の値を VSIX パッケージ内のアセンブリの相対パスに設定し、AssemblyName 属性を完全なアセンブリ名 (バージョン、カルチャ、および公開キー トークンを含む) に設定します。 詳細については、「Assembly Element (VSX Schema)」を参照してください。
例
次の例は、SharePoint ツールの拡張機能の extension.vsixmanifest ファイルの内容を示しています。 拡張機能は、Contoso.ProjectExtension.dll という名前のアセンブリで実装されています。 この拡張機能には、Contoso.ExtensionCommands.dll という名前の SharePoint コマンド アセンブリと、VSIX パッケージ内の ItemTemplates という名前のフォルダーの下にある項目テンプレートが含まれています。 この例では、どちらのアセンブリも、VSIX パッケージの extension.vsixmanifest ファイルと同じフォルダーにあることを想定しています。
<?xml version="1.0" encoding="utf-8"?>
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
Version="1.0.0" xmlns="https://schemas.microsoft.com/developer/vsx-schema/2010">
<Identifier Id="CustomActionProjectItem.Contoso.b1d75407-01bd-459d-9d04-d12e9113af49">
<Name>Custom Action Project Item</Name>
<Author>Contoso</Author>
<Version>1.0</Version>
<Description xml:space="preserve">A SharePoint project item that represents a custom action.</Description>
<Locale>1033</Locale>
<SupportedProducts>
<VisualStudio Version="10.0">
<Edition>Pro</Edition>
</VisualStudio>
</SupportedProducts>
<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.0" />
</Identifier>
<References />
<Content>
<MefComponent>Contoso.ProjectExtension.dll</MefComponent>
<CustomExtension Type="SharePoint.Commands.v4">Contoso.ExtensionCommands.dll</CustomExtension>
<ItemTemplate>ItemTemplates</ItemTemplate>
</Content>
</Vsix>
参照
概念
サーバー エクスプローラーの [SharePoint 接続] ノードの拡張