SharePoint プロバイダー ホスト型アドインを配布用に構成する

このページでは、SharePoint プロバイダー ホスト型アドインを他の開発者と共有したり、Team Foundation Server、Git、Visual Studio Team Services などのソース管理システムからコピーを入手したりするときに発生する可能性のある問題について説明しています。

Visual Studio を使用して作成されたすべての SharePoint プロバイダー ホスト型アドインには、SharePoint 特有のコードと SharePoint アドイン用の RemoteWeb として動作する Web アプリケーションへの参照を追加する NuGet パッケージが含まれています。

Visual Studio の Office Developer Tools によって Web アプリケーション プロジェクトに追加された NuGet パッケージは NuGet パッケージ レジストリに存在しないため、NuGet パッケージの復元を実行しようとする試みは、一致するパッケージが見つからないために失敗します。

問題を理解する

Office Developer Tools for Visual Studio バージョン 12.0.31105 では、SharePoint プロバイダー ホスト型アドイン用の RemoteWeb として作成された Web アプリケーションに、NuGet パッケージが追加されます。このパッケージ (App for SharePoint Web Toolkit) により、次のアイテムが Web プロジェクトに追加されます。

  • アセンブリと、SharePoint クライアント側オブジェクト モデル (CSOM) アセンブリへの参照
  • アドインの認証プロセスを支援するコード ファイル (TokenHelper.cs)。
  • Web アプリケーション内で SharePoint コンテキストを作成し、メンテナンスを行うために役立つコード ファイル (SharePointContext.cs)。

Visual Studio はそれ自体またはアドインに NuGet パッケージのローカル コピーを含めた状態で動作するため、開発者は必ずしもインターネットに接続して NuGet パッケージをダウンロードする必要がありません。 ツールによって含められるパッケージの ID は AppForSharePoint16WebToolkit です。

プロジェクトがソース管理にコミットされるとき、通常はパッケージがコミットの一部として含められることはありません。他の開発者との共有時に余分の記憶領域が大量に必要になり、パッケージのサイズが不必要に大きくなる可能性があるためです。 そのため、開発者がソース管理からプロジェクトのコピーを入手した後で最初に行うタスクの 1 つは、NuGet パッケージの復元を実行することです。

その際に問題になるのは、同じ ID のパッケージが NuGet パッケージ レジストリに存在しないことです (AppForSharePoint16WebToolkit という ID のパッケージはありません)。 代わりに、まったく同じパッケージが AppForSharePointWebToolkit として NuGet パッケージ レジストリに追加されます (ID に 16 が含まれないことに注意してください)。

ソース管理用および配布用のプロバイダー ホスト型アドイン プロジェクトの準備

Office Developer Tools for Visual Studio が更新されてこの問題が修正されるまでは、Team Foundation Server、Visual Studio Team Services、Git、その他のソリューションのいずれを使用するかにかかわらず、ソース管理システムにコミットする前にプロジェクトを変更することをお勧めします。

プロジェクトの作成後に、プロジェクトの packages.config ファイルを参照して、ID が AppForSharePoint16WebToolkit のパッケージを検索します。 プロジェクトを更新する最も安全な方法は、パッケージをアンインストールして、再度インストールすることです。

パッケージをアンインストールするには、Visual Studio でパッケージ マネージャー コンソールを開き、次のように入力します。

  PM> Uninstall-Package -Id AppForSharePoint16WebToolkit

注:

アンインストール時にパッケージが見つからないというエラー メッセージが返される場合は、単に packages.config ファイルからパッケージ参照を手動で削除し、変更を保存します。

それから、パブリック レジストリにある同じ NuGet パッケージの公開バージョンをインストールします。

  PM> Install-Package -Id AppForSharePointWebToolkit

関連項目