チュートリアル: サーバー エクスプローラーの拡張機能から SharePoint クライアント オブジェクト モデルを呼び出す
このチュートリアルでは、サーバー エクスプローラーの [SharePoint 接続] ノードの拡張機能から SharePoint クライアント オブジェクト モデルを呼び出す方法について説明します。 SharePoint クライアント オブジェクト モデルの使用方法の詳細については、「SharePoint オブジェクト モデルの呼び出し」を参照してください。
このチュートリアルでは、次のタスクについて説明します。
サーバー エクスプローラーの [SharePoint 接続] ノードを拡張する Visual Studio 拡張機能を作成する。具体的には次の点を拡張します。
サーバー エクスプローラーの各 SharePoint サイト ノードに新しい Web パーツ ギャラリー ノードを追加する。 この新しいノードには、サイト上の Web パーツ ギャラリー内の個々の Web パーツを表す子ノードが表示されます。
Web パーツのインスタンスを表す新しいノード型を定義する。 新しい Web パーツ ギャラリー ノードの子ノードには、このノード型が使用されます。 新しい Web パーツ ノード型が表す Web パーツについての情報は、[プロパティ] ウィンドウに表示されます。
拡張機能を配置するための Visual Studio Extension (VSIX) パッケージを構築する。
拡張機能をデバッグしてテストする。
注意
このチュートリアルで作成する拡張機能は、「チュートリアル: サーバー エクスプローラーを拡張して Web パーツを表示する」で作成する拡張機能と似ています。 ただし、このチュートリアルでは、SharePoint サーバー オブジェクト モデルは使用しません。同じタスクをクライアント オブジェクト モデルを使用して行います。
必須コンポーネント
このチュートリアルを実行するには、開発コンピューターに次のコンポーネントが必要です。
サポート対象エディションの Microsoft Windows、SharePoint、および Visual Studio。 詳細については、「SharePoint ソリューションの開発要件」を参照してください。
Visual Studio 2010 SDK。 このチュートリアルでは、拡張機能を配置するための VSIX パッケージを、SDK の VSIX プロジェクト テンプレートを使用して作成します。 詳細については、「Visual Studio の SharePoint ツールの拡張」を参照してください。
次の概念に関する知識があると役に立ちますが、チュートリアルを実行するうえで必須というわけではありません。
SharePoint クライアント オブジェクト モデルの使用。 詳細については、「Managed Client Object Model (マネージ クライアント オブジェクト モデル)」を参照してください。
Microsoft SharePoint Services の Web パーツ。 詳細については、「Web Parts Overview (Web パーツの概要)」を参照してください。
プロジェクトの作成
このチュートリアルを完了するには、2 つのプロジェクトを作成する必要があります。
サーバー エクスプローラーの拡張機能を配置するために VSIX パッケージを作成する VSIX プロジェクト。
サーバー エクスプローラーの拡張機能を実装するクラス ライブラリ プロジェクト。
この 2 つのプロジェクトを作成することから始めます。
VSIX プロジェクトを作成するには
Visual Studio を起動します。
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスで、[Visual C#] ノードまたは [Visual Basic] ノードを展開し、[機能拡張] をクリックします。
注意
[機能拡張] ノードは、Visual Studio 2010 SDK がインストールされている場合にのみ使用できます。 詳細については、冒頭の「前提条件」を参照してください。
ダイアログ ボックス上部のコンボ ボックスで、[.NET Framework 4] をクリックします。 SharePoint ツールの拡張機能を使用するには、このバージョンの .NET Framework の機能が必要です。
[VSIX プロジェクト] テンプレートをクリックします。
[プロジェクト名] ボックスに「WebPartNode」と入力します。
[OK] をクリックします。
Visual Studio のソリューション エクスプローラーに WebPartNode プロジェクトが追加されます。
拡張機能プロジェクトを作成するには
ソリューション エクスプローラーでソリューション ノードを右クリックし、[追加] をクリックして、[新しいプロジェクト] をクリックします。
注意
Visual Basic プロジェクトでソリューション エクスプローラーにソリューション ノードが表示されるのは、[全般] ([オプション] ダイアログ ボックス - [プロジェクトおよびソリューション])の [常にソリューションを表示] チェック ボックスがオンになっている場合だけです。
[新しいプロジェクト] ダイアログ ボックスで、[Visual C#] ノードまたは [Visual Basic] ノードを展開し、[Windows] をクリックします。
ダイアログ ボックス上部のコンボ ボックスで、[.NET Framework 4] を選択します。
[クラス ライブラリ] プロジェクト テンプレートを選択します。
[名前] ボックスに「WebPartNodeExtension」と入力します。
[OK] をクリックします。
Visual Studio によって、WebPartNodeExtension プロジェクトがソリューションに追加され、既定の Class1 コード ファイルが開きます。
Class1 コード ファイルをプロジェクトから削除します。
拡張機能プロジェクトの構成
拡張機能を作成するためのコードを記述する前に、コード ファイルおよびアセンブリ参照をプロジェクトに追加し、既定の名前空間を更新しておく必要があります。
プロジェクトを構成するには
WebPartNodeExtension プロジェクトに、次の名前で 2 つのコードを追加します。
SiteNodeExtension
WebPartNodeTypeProvider
[プロジェクト] メニューの [参照の追加] をクリックします。
[.NET] タブで、Ctrl キーを押しながら次のアセンブリを選択し、[OK] をクリックします。
Microsoft.SharePoint.Client
Microsoft.SharePoint.Client.Runtime
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
System.Windows.Forms
[プロジェクト] メニューの [WebPartNodeExtension プロパティ] を選択します。
プロジェクト デザイナーが開きます。
[アプリケーション] タブをクリックします。
[既定の名前空間] ボックス (C#) または [ルート名前空間] ボックス (Visual Basic) に、「ServerExplorer.SharePointConnections.WebPartNode」と入力します。
新しいノードのアイコンの作成
サーバー エクスプローラーの拡張機能に対して 2 つのアイコンを作成します。新しい Web パーツ ギャラリー ノードのアイコンと、Web パーツ ギャラリー ノード下に存在するそれぞれの子 Web パーツ ノードのアイコンです。 これらのアイコンをノードに関連付けるコードは後で作成します。
ノードのアイコンを作成するには
プロジェクト デザイナーで、WebPartNodeExtension プロジェクトの [リソース] タブをクリックします。
[このプロジェクトには既定のリソース ファイルが含まれていません。 ファイルを作成するには、ここをクリックしてください。] をクリックします。
Visual Studio によりリソース ファイルが作成され、デザイナーで開かれます。
デザイナーの一番上にある [追加] ボタンのドロップダウン矢印をクリックし、[新しいアイコンの追加] をクリックします。
新しいアイコン名として「WebPartsNode」と入力し、[追加] をクリックします。
イメージ エディターに新しいアイコンが表示されます。
認識しやすいデザインとなるよう 16x16 版のアイコン ファイルを編集します。
32x32 版のアイコンをクリックします。
[イメージ] メニューの [イメージ タイプの削除] をクリックします。
手順 3. ~ 7. を繰り返して、もう 1 つのアイコンをプロジェクト リソースに追加します。 このアイコンには「WebPart」という名前を付けます。
ソリューション エクスプローラーで、 WebPartNodeExtension プロジェクトの Resources フォルダーにある [WebPartsNode.ico] を選択します。
[プロパティ] ウィンドウで、[ビルド アクション] の横のドロップダウンをクリックし、[埋め込まれたリソース] を選択します。
WebPart.ico について最後の 2 つの手順を繰り返します。
サーバー エクスプローラーへの Web パーツ ギャラリー ノードの追加
各 SharePoint サイト ノードに新しい Web パーツ ギャラリー ノードを追加するクラスを作成します。 新しいノードを追加するため、このクラスに IExplorerNodeTypeExtension インターフェイスを実装します。 サーバー エクスプローラーの既存のノードの動作を拡張 (ノードに新しい子ノードを追加するなど) する場合は必ず、このインターフェイスを実装します。
サーバー エクスプローラーに Web パーツ ギャラリー ノードを追加するには
WebPartNodeExtension プロジェクトで、SiteNodeExtension コード ファイルをダブルクリックします。
このファイルに次のコードを貼り付けます。
注意
このコードを追加した直後は、いくつかのコンパイル エラーが発生します。 これらのエラーは、この後の手順でコードを追加すると解消されます。
Imports System.Collections.Generic Imports System.ComponentModel.Composition Imports Microsoft.SharePoint.Client Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualStudio.SharePoint.Explorer Namespace ServerExplorer.SharePointConnections.WebPartNode ' Export attribute: Enables Visual Studio to discover and load this extension. ' ExplorerNodeType attribute: Indicates that this class extends SharePoint site nodes in Server Explorer. ' SiteNodeExtension class: Represents an extension of SharePoint site nodes in Server Explorer. <Export(GetType(IExplorerNodeTypeExtension))> _ <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _ Friend Class SiteNodeExtension Implements IExplorerNodeTypeExtension Private siteUrl As System.Uri = Nothing Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _ Implements IExplorerNodeTypeExtension.Initialize ' The NodeChildrenRequested event is raised when the user expands the ' SharePoint site node in Server Explorer. AddHandler nodeType.NodeChildrenRequested, AddressOf NodeChildrenRequested End Sub ' Creates the new Web Part Gallery node with the specified icon. Private Sub NodeChildrenRequested(ByVal Sender As Object, ByVal e As ExplorerNodeEventArgs) ' Get the site URL so that it can be used later to access the site ' by using the SharePoint client object model. siteUrl = e.Node.Context.SiteUrl ' The CreateWebPartNodes argument is a delegate that Visual Studio calls ' to create the child nodes under the Web Part Gallery node. e.Node.ChildNodes.AddFolder("Web Part Gallery", My.Resources.WebPartsNode.ToBitmap(), _ AddressOf CreateWebPartNodes) End Sub ' Creates individual Web Part nodes under the new Web Part Gallery node. Private Sub CreateWebPartNodes(ByVal parentNode As IExplorerNode) ' Use the SharePoint client object model to get items from the Web Part gallery. Dim Context As ClientContext = New ClientContext(siteUrl.AbsoluteUri) Dim WebPartsGallery As List = Context.Web.GetCatalog(CType(ListTemplateType.WebPartCatalog, Integer)) Dim WebParts As ListItemCollection = WebPartsGallery.GetItems(New CamlQuery()) ' Request the FieldValuesAsText property values with the Web Part items. Context.Load(WebParts, Function(listItems) listItems.Include(Function(i) i.FieldValuesAsText)) Context.ExecuteQuery() If WebParts IsNot Nothing Then For Each WebPart As ListItem In WebParts ' Create a new annotation object to store the current Web Part item with the new node. Dim Annotations = New Dictionary(Of Object, Object)() Annotations.Add(GetType(ListItem), WebPart) ' Create the new node for the current Web Part item. parentNode.ChildNodes.Add(WebPartNodeTypeProvider.WebPartNodeTypeId, _ WebPart.FieldValuesAsText.FieldValues("Title"), Annotations) Next End If End Sub End Class End Namespace
using System.Collections.Generic; using System.ComponentModel.Composition; using Microsoft.SharePoint.Client; using Microsoft.VisualStudio.SharePoint; using Microsoft.VisualStudio.SharePoint.Explorer; namespace ServerExplorer.SharePointConnections.WebPartNode { // Enables Visual Studio to discover and load this extension. [Export(typeof(IExplorerNodeTypeExtension))] // Indicates that this class extends SharePoint site nodes in Server Explorer. [ExplorerNodeType(ExplorerNodeTypes.SiteNode)] // Represents an extension of SharePoint site nodes in Server Explorer. internal class SiteNodeExtension : IExplorerNodeTypeExtension { private System.Uri siteUrl = null; public void Initialize(IExplorerNodeType nodeType) { // The NodeChildrenRequested event is raised when the user expands the // SharePoint site node in Server Explorer. nodeType.NodeChildrenRequested += NodeChildrenRequested; } // Creates the new Web Part Gallery node with the specified icon. private void NodeChildrenRequested(object sender, ExplorerNodeEventArgs e) { // Get the site URL so that it can be used later to access the site // by using the SharePoint client object model. siteUrl = e.Node.Context.SiteUrl; // The CreateWebPartNodes argument is a delegate that Visual Studio calls // to create the child nodes under the Web Part Gallery node. e.Node.ChildNodes.AddFolder("Web Part Gallery", Properties.Resources.WebPartsNode.ToBitmap(), CreateWebPartNodes); } // Creates individual Web Part nodes under the new Web Part Gallery node. private void CreateWebPartNodes(IExplorerNode parentNode) { // Use the SharePoint client object model to get items from the Web Part gallery. ClientContext context = new ClientContext(siteUrl.AbsoluteUri); List webPartsGallery = context.Web.GetCatalog((int)ListTemplateType.WebPartCatalog); ListItemCollection webParts = webPartsGallery.GetItems(new CamlQuery()); // Request the FieldValuesAsText property values with the Web Part items. context.Load(webParts, listItems => listItems.Include(i => i.FieldValuesAsText)); context.ExecuteQuery(); if (webParts != null) { foreach (ListItem webPart in webParts) { // Create a new annotation object to store the current Web Part item with the new node. var annotations = new Dictionary<object, object>() { { typeof(ListItem), webPart } }; // Create the new node for the current Web Part item. parentNode.ChildNodes.Add(WebPartNodeTypeProvider.WebPartNodeTypeId, webPart.FieldValuesAsText.FieldValues["Title"], annotations); } } } } }
Web パーツを表すノード型の定義
Web パーツを表す新しいノード型を定義したクラスを作成します。 Visual Studio は、この新しいノード型を使用して、Web パーツ ギャラリー ノードの子ノードを表示します。 それぞれの子ノードは、SharePoint サイト上の単一の Web パーツを表します。
新しいノード型を定義するため、このクラスに IExplorerNodeTypeProvider インターフェイスを実装します。 このインターフェイスは、サーバー エクスプローラーに新しい種類のノードを定義する場合に必ず実装します。
Web パーツ ノード型を定義するには
WebPartNodeExtension プロジェクトで、WebPartNodeTypeProvider コード ファイルをダブルクリックします。
このファイルに次のコードを貼り付けます。
Imports System Imports System.Collections.Generic Imports System.Windows.Forms Imports System.ComponentModel.Composition Imports Microsoft.SharePoint.Client Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualStudio.SharePoint.Explorer Namespace ServerExplorer.SharePointConnections.WebPartNode ' Export attribute: Enables Visual Studio to discover and load this extension. ' ExplorerNodeType attribute: Specifies the ID for this new node type. ' WebPartNodeTypeProvider class: Defines a new node type that represents a Web Part on a SharePoint site. <Export(GetType(IExplorerNodeTypeProvider))> _ <ExplorerNodeType(WebPartNodeTypeProvider.WebPartNodeTypeId)> _ Friend Class WebPartNodeTypeProvider Implements IExplorerNodeTypeProvider Friend Const WebPartNodeTypeId As String = "Contoso.WebPart" Private Sub InitializeType(ByVal typeDefinition As IExplorerNodeTypeDefinition) _ Implements IExplorerNodeTypeProvider.InitializeType typeDefinition.DefaultIcon = My.Resources.WebPart.ToBitmap() typeDefinition.IsAlwaysLeaf = True AddHandler typeDefinition.NodePropertiesRequested, AddressOf NodePropertiesRequested AddHandler typeDefinition.NodeMenuItemsRequested, AddressOf NodeMenuItemsRequested End Sub ' Retrieves properties that are displayed in the Properties window when ' a Web Part node is selected. Private Sub NodePropertiesRequested(ByVal Sender As Object, _ ByVal e As ExplorerNodePropertiesRequestedEventArgs) Dim webPart = e.Node.Annotations.GetValue(Of ListItem)() Dim propertySource = e.Node.Context.CreatePropertySourceObject( _ webPart.FieldValuesAsText.FieldValues) e.PropertySources.Add(propertySource) End Sub Private Sub NodeMenuItemsRequested(ByVal Sender As Object, _ ByVal e As ExplorerNodeMenuItemsRequestedEventArgs) Dim WebPartNodeMenuItem As IMenuItem = e.MenuItems.Add("Display Message") AddHandler WebPartNodeMenuItem.Click, AddressOf MenuItemClick End Sub Private Sub MenuItemClick(ByVal Sender As Object, ByVal e As MenuItemEventArgs) Dim ParentNode As IExplorerNode = TryCast(e.Owner, IExplorerNode) If ParentNode IsNot Nothing Then Dim webPart = ParentNode.Annotations.GetValue(Of ListItem)() MessageBox.Show("You clicked the context menu for the following Web part: " & _ webPart.FieldValuesAsText.FieldValues("Title") + ".", "Web Part Menu Command") End If End Sub End Class End Namespace
using System; using System.Collections.Generic; using System.Windows.Forms; using System.ComponentModel.Composition; using Microsoft.SharePoint.Client; using Microsoft.VisualStudio.SharePoint; using Microsoft.VisualStudio.SharePoint.Explorer; namespace ServerExplorer.SharePointConnections.WebPartNode { // Enables Visual Studio to discover and load this extension. [Export(typeof(IExplorerNodeTypeProvider))] // Specifies the ID for this new node type. [ExplorerNodeType(WebPartNodeTypeProvider.WebPartNodeTypeId)] // Defines a new node type that represents a Web Part on a SharePoint site. internal class WebPartNodeTypeProvider : IExplorerNodeTypeProvider { internal const string WebPartNodeTypeId = "Contoso.WebPart"; public void InitializeType(IExplorerNodeTypeDefinition typeDefinition) { typeDefinition.DefaultIcon = Properties.Resources.WebPart.ToBitmap(); typeDefinition.IsAlwaysLeaf = true; typeDefinition.NodePropertiesRequested += NodePropertiesRequested; typeDefinition.NodeMenuItemsRequested += NodeMenuItemsRequested; } // Retrieves properties that are displayed in the Properties window when // a Web Part node is selected. private void NodePropertiesRequested(object sender, ExplorerNodePropertiesRequestedEventArgs e) { var webPart = e.Node.Annotations.GetValue<ListItem>(); object propertySource = e.Node.Context.CreatePropertySourceObject( webPart.FieldValuesAsText.FieldValues); e.PropertySources.Add(propertySource); } private void NodeMenuItemsRequested( object sender, ExplorerNodeMenuItemsRequestedEventArgs e) { e.MenuItems.Add("Display Message").Click += MenuItemClick; } private void MenuItemClick(object sender, MenuItemEventArgs e) { IExplorerNode parentNode = e.Owner as IExplorerNode; if (parentNode != null) { var webPart = parentNode.Annotations.GetValue<ListItem>(); MessageBox.Show("You clicked the context menu for the following Web part: " + webPart.FieldValuesAsText.FieldValues["Title"] + ".", "Web Part Menu Command"); } } } }
チェックポイント
この段階で、Web パーツ ギャラリー ノードに必要なすべてのコードがプロジェクトに揃ったことになります。 エラーが発生することなくプロジェクトをコンパイルできるかどうか、ソリューションをビルドして確認してください。
ソリューションをビルドするには
- [ビルド] メニューの [ソリューションのビルド] をクリックします。
拡張機能を配置するための VSIX パッケージの作成
拡張機能を配置するには、ソリューションで VSIX プロジェクトを使用して VSIX パッケージを作成します。 まず、プロジェクトに含まれている source.extension.vsixmanifest ファイルを変更して、VSIX パッケージを構成します。 次に、ソリューションをビルドして VSIX パッケージを作成します。
VSIX パッケージを構成するには
ソリューション エクスプローラーで、WebPartNode プロジェクトの下にある WebPartNode プロジェクトの source.extension.vsixmanifest ファイルをダブルクリックします。
Visual Studio によってマニフェスト エディターでファイルが開きます。 source.extension.vsixmanifest ファイルが、すべての VSIX パッケージで必要とされる extension.vsixmanifest ファイルの基礎となります。 このファイルの詳細については、「VSIX Extension Schema Reference」を参照してください。
[製品名] ボックスに「Web Part Gallery Node for Server Explorer」と入力します。
[作成者] ボックスに「Contoso」と入力します。
[説明] ボックスに「Adds a custom Web Part Gallery node to the SharePoint Connections node in Server Explorer.」(サーバー エクスプローラーの [SharePoint 接続] ノードに、カスタム Web パーツ ギャラリー ノードを追加します。) と入力します。
エディターの [コンテンツ] セクションで、[コンテンツの追加] をクリックします。
[コンテンツの追加] ダイアログ ボックスで、[コンテンツ タイプの選択] ボックスの一覧の [MEF コンポーネント] をクリックします。
注意
この値は、extension.vsixmanifest ファイル内の MefComponent 要素に対応します。 この要素は、VSIX パッケージ内の拡張機能アセンブリの名前を指定します。 詳細については、「MEFComponent Element (VSX Schema)」を参照してください。
[ソースの選択] の下にある [プロジェクト] をクリックし、その横のボックスの [WebPartNodeExtension] を選択します。
[OK] をクリックします。
[ビルド] メニューの [ソリューションのビルド] をクリックします。 エラーが発生することなくソリューションがコンパイルされることを確認します。
WebPartNode プロジェクトのビルド出力フォルダーを開きます。 このフォルダーに WebPartNode.vsix ファイルが格納されていることを確認します。
既定では、プロジェクト ファイルに格納されているフォルダー の ..\bin\Debug フォルダーがビルド出力フォルダーです。
拡張機能のテスト
これで、サーバー エクスプローラーの新しい Web パーツ ギャラリー ノードをテストする準備ができました。 まず、Visual Studio の実験用インスタンスで拡張機能プロジェクトのデバッグを開始します。 次に、Visual Studio の実験用インスタンスで新しい [Web パーツ] ノードを使用します。
拡張機能のデバッグを開始するには
管理者特権で Visual Studio を再起動し、WebPartNode ソリューションを開きます。
WebPartNodeExtension プロジェクトで、SiteNodeExtension コード ファイルを開き、NodeChildrenRequested メソッドおよび CreateWebPartNodes メソッド内の最初のコード行にブレークポイントを追加します。
F5 キーを押してデバッグを開始します。
Visual Studio によって、拡張機能が %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Web Part Gallery Node Extension for Server Explorer\1.0 にインストールされ、Visual Studio の実験用インスタンスが開始されます。 このインスタンスの Visual Studio でプロジェクト項目をテストします。
拡張機能をテストするには
Visual Studio の実験用インスタンスの [表示] メニューで [サーバー エクスプローラー] をクリックします。
テストに使用する SharePoint サイトが、サーバー エクスプローラーの [SharePoint 接続] ノードに表示されていることを確認します。 表示されない場合は、次の手順を実行します。
[SharePoint 接続] を右クリックし、[接続の追加] をクリックします。
[SharePoint 接続の追加] ダイアログ ボックスで、接続先の SharePoint サイトの URL を入力します。 開発コンピューター上の SharePoint サイトを指定するには、「https://localhost」と入力します。
[OK] をクリックします。
サイト接続ノード (サイトの URL を表示するノード) を展開し、子サイト ノード (チーム サイトなど) を展開します。
Visual Studio のもう一方のインスタンスで、先ほど NodeChildrenRequested メソッドに設定したブレークポイントで、コードが停止していることを確認します。 F5 キーを押して、プロジェクトのデバッグを続行します。
Visual Studio の実験用インスタンスで、[Web パーツ ギャラリー] という新しいノードがトップ レベルのサイト ノードの下に表示されます。 [Web パーツ ギャラリー] ノードを展開します。
Visual Studio のもう一方のインスタンスで、先ほど CreateWebPartNodes メソッドに設定したブレークポイントで、コードが停止していることを確認します。 F5 キーを押して、プロジェクトのデバッグを続行します。
Visual Studio の実験用インスタンスで、サーバー エクスプローラーの [Web パーツ ギャラリー] ノードに、接続先サイトのすべての Web パーツが表示されていることを確認します。
いずれかの Web パーツを右クリックして、[プロパティ] をクリックします。
[プロパティ] ウィンドウに Web パーツに関する詳細が表示されることを確認します。
サーバー エクスプローラーで、同じ Web パーツを再度右クリックし、[メッセージを表示する] をクリックします。
メッセージ ボックスが表示されることを確認します。 メッセージ ボックスの [OK] をクリックします。
Visual Studio からの拡張機能のアンインストール
拡張機能のテストが完了したら、拡張機能を Visual Studio からアンインストールします。
拡張機能をアンインストールするには
Visual Studio の実験用インスタンスの [ツール] メニューで、[拡張機能マネージャー] をクリックします。
[拡張機能マネージャー] ダイアログ ボックスが表示されます。
拡張機能の一覧で、[Web Part Gallery Node Extension for Server Explorer] をクリックし、[アンインストール] をクリックします。
確認のダイアログ ボックスが表示されたら、[はい] をクリックして、拡張機能をアンインストールします。
[今すぐ再起動] をクリックするとアンインストールは完了です。 プロジェクト項目もアンインストールされます。
Visual Studio の両方のインスタンス (WebPartNode ソリューションを開いた Visual Studio の実験用インスタンスとインスタンス) を閉じます。
参照
処理手順
参照
概念
サーバー エクスプローラーの [SharePoint 接続] ノードの拡張