Názorný postup: Rozšíření typ položky služby SharePoint projektu
Můžete použít položku projektu Model Připojení obchodních dat k vytvoření modelu pro službu Připojení obchodních dat ve službě SharePoint.Ve výchozím nastavení se data v modelu uživatelům nezobrazí, když vytvoříte model pomocí této položky projektu.Musíte také vytvořit externí seznam ve službě SharePoint pro umožnění zobrazení dat uživatelům.
V tomto návodu vytvoříte rozšíření pro položku projektu Model Připojení obchodních dat.Vývojáři mohou pomocí rozšíření vytvořit externí seznam v jejich projektu, který zobrazuje data v modelu služby BDC.Tento návod demonstruje následující úkoly:
Vytvoření rozšíření aplikace Visual Studio, které provádí dvě hlavní úlohy:
Generuje externí seznam, který zobrazí data v modelu služby BDC.Rozšíření používá model objektu pro projekt systému SharePoint ke generování souboru Elements.xml, který definuje seznam.Také přidá soubor do projektu tak, aby byl nasazen spolu s modelem služby BDC.
Přidá položku nabídky zástupců položek projektu Model Připojení obchodních dat v Průzkumníku řešení.Vývojáři mohou kliknutím na tuto položku nabídky generovat externí seznam pro model služby BDC.
Vytváření rozšíření aplikace Visual Studio balíčku (VSIX) pro nasazení sestavení rozšíření.
Testování rozšíření.
Požadavky
Ve vývojovém počítači potřebujete následující součásti pro dokončení tohoto návodu:
Podporované vydání systému Microsoft Windows, SharePoint a Visual Studio.Další informace naleznete v tématu Požadavky na vývoj řešení služby SharePoint.
Rozhraní Visual Studio SDK.Tento návod používá šablonu Projekt VSIX v sadě SDK pro vytvoření balíčku VSIX k nasazení položky projektu.Další informace naleznete v tématu Rozšíření nástrojů SharePoint v aplikaci Visual Studio.
Znalost následujících konceptů je užitečná, ale není požadována k dokončení návodu:
Služba BDC v Microsoft SharePoint Server 2010.Další informace naleznete v BDC Architecture.
Schéma XML pro modely služby BDC.Další informace naleznete v Infrastruktura modelu služby BDC.
Vytváření projektů
Chcete-li dokončit tento návod, je nutné vytvořit dva projekty:
Projekt VSIX k vytvoření balíčku VSIX pro nasazení rozšíření položky projektu.
Projekt knihovny tříd, který implementuje rozšíření položky projektu.
Začněte postup vytvořením projektů.
Pro vytvoření projektu VSIX
Spusťte nástroj Visual Studio.
Na panelu nabídek zvolte soubor, Nový, projektu.
V Nový projekt dialogové okno pole, rozbalte položku Visual C# nebo jazyka Visual Basic uzly a pak zvolte rozšíření uzlu.
[!POZNÁMKA]
Rozšíření uzel je k dispozici pouze v případě, že nainstalujete Visual Studio SDK.Další informace naleznete v části požadavky dříve v tomto tématu.
V seznamu v horní části Nový projekt dialogovém okně zvolte .NET Framework 4.5.
Rozšíření nástrojů SharePoint vyžaduje funkce této verze rozhraní .NET Framework.
Zvolte Projektu VSIX šablony.
V název zadejte GenerateExternalDataListsa pak zvolte OK tlačítko.
Visual Studio přidá projekt GenerateExternalDataLists do Průzkumníku řešení.
Pokud se automaticky neotevře soubor source.extension.vsixmanifest v projektu GenerateExternalDataLists otevřete místní nabídku a pak zvolte Otevřít
Ověřte, zda položka prázdný soubor source.extension.vsixmanifest (zadejte Contoso) pro pole Autor, uložte soubor a zavřete jej.
Chcete-li vytvořit projekt rozšíření
V Průzkumníku, otevřete místní nabídku pro GenerateExternalDataLists uzel řešení, zvolte Přidata pak zvolte Nový projekt.
[!POZNÁMKA]
V projektech v jazyce Visual Basic se uzel řešení zobrazí v Průzkumníku řešení pouze pokud je označeno zaškrtávací políčko Vždy zobrazit řešeníGeneral, Projects and Solutions, Options Dialog Box.
V Přidat nový projekt dialogové okno pole, rozbalte položku Visual C# nebo jazyka Visual Basic uzly a pak zvolte Windows uzlu.
V seznamu v horní části dialogového okna zvolte .NET Framework 4.5.
V seznamu šablon projektu zvolte Knihovny tříd.
V název zadejte BdcProjectItemExtensiona pak zvolte OK tlačítko.
Visual Studio přidá projekt BdcProjectItemExtension do řešení a otevře soubor výchozího kódu Class1.
Odstraňte soubor kódu Class1 z projektu.
Konfigurace projektu rozšíření
Před napsáním kódu pro vytvoření rozšíření položky projektu přidejte soubory kódu a odkazy na projekt sestavení.
Chcete-li konfigurovat projekt
V projektu BdcProjectItemExtension přidejte dva soubory kódu, které mají následující názvy:
ProjectItemExtension
GenerateExternalDataLists
Zvolte projektu BdcProjectItemExtension a pak na panelu nabídek zvolte projektu, Přidat odkaz.
Pod sestavení uzel, zvolte Framework uzel a zaškrtněte políčko pro každý následující sestavení:
System.ComponentModel.Composition
WindowsBase
Pod sestavení uzel, zvolte rozšíření uzel a potom zaškrtněte políčko pro následující sestavení:
- Microsoft.VisualStudio.SharePoint
Klikněte na tlačítko OK.
Definování rozšíření položky projektu
Vytvořte třídu, která definuje rozšíření položky projektu Model Připojení obchodních dat.Chcete-li definovat rozšíření, třída implementuje rozhraní ISharePointProjectItemTypeExtension.Toto rozhraní implementujte, kdykoli budete chtít rozšířit existující typ položky projektu.
Chcete-li definovat rozšíření položky projektu
Vložte následující kód do kódem ProjectItemExtension.
[!POZNÁMKA]
Po přidání tohoto kódu bude mít projekt několik chyb kompilace.Těmto chybám předejdete přidáním kódu v dalších krocích.
Imports Microsoft.VisualStudio.SharePoint Imports System.ComponentModel.Composition Namespace Contoso.SharePointProjectItemExtensions.GenerateExternalDataLists ' Export attribute: Enables Visual Studio to discover and load this extension. ' SharePointProjectItemType attribute: Specifies the ID of the project item to extend. ' GenerateExternalDataListsExtension class: Defines the extension for the BDC project item. ' The other part of the partial class contains the logic for generating the external data lists. <Export(GetType(ISharePointProjectItemTypeExtension))> _ <SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.BusinessDataConnectivity")> _ Partial Friend Class GenerateExternalDataListsExtension Implements ISharePointProjectItemTypeExtension ' Creates the new shortcut menu item that the user clicks to generate the external data lists. Private Sub Initialize(ByVal SharePointProjectItemType As ISharePointProjectItemType) _ Implements ISharePointProjectItemTypeExtension.Initialize AddHandler SharePointProjectItemType.ProjectItemMenuItemsRequested, AddressOf SharePointProjectItemMenuItemsRequested End Sub Private Sub SharePointProjectItemMenuItemsRequested(ByVal Sender As Object, _ ByVal e As SharePointProjectItemMenuItemsRequestedEventArgs) Dim generateListMenuItem As IMenuItem = e.ViewMenuItems.Add("Generate External Data List") AddHandler generateListMenuItem.Click, AddressOf GenerateExternalDataLists_Execute End Sub End Class End Namespace
using Microsoft.VisualStudio.SharePoint; using System.ComponentModel.Composition; namespace Contoso.SharePointProjectItemExtensions.GenerateExternalDataLists { // Enables Visual Studio to discover and load this extension. [Export(typeof(ISharePointProjectItemTypeExtension))] // Specifies the ID of the project item to extend. [SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.BusinessDataConnectivity")] // Defines the extension for the BDC project item. The other part of the partial class contains // the logic for generating the external data lists. internal partial class GenerateExternalDataListsExtension : ISharePointProjectItemTypeExtension { // Implements IProjectItemTypeExtension.Initialize. Creates the new shortcut menu item that // the user clicks to generate the external data lists. public void Initialize(ISharePointProjectItemType projectItemType) { projectItemType.ProjectItemMenuItemsRequested += ProjectItemMenuItemsRequested; } private void ProjectItemMenuItemsRequested(object sender, SharePointProjectItemMenuItemsRequestedEventArgs e) { e.ViewMenuItems.Add("Generate External Data List").Click += GenerateExternalDataLists_Execute; } } }
Vytváření seznamů externích dat
Přidejte částečnou definici třídy GenerateExternalDataListsExtension, která vytváří seznam externích dat pro každý subjekt v modelu služby BDC.Chcete-li vytvořit seznam externích dat, tento kód nejprve čte data subjektu v modelu služby BDC pomocí analýzy dat XML v souboru modelu služby BDC.Potom vytvoří instanci seznamu, která je založena na modelu služby BDC a přidá tuto instanci seznamu do projektu.
Chcete-li vytvořit seznam externích dat
Vložte následující kód do soubor s kódem GenerateExternalDataLists.
Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.IO Imports System.Linq Imports System.Text Imports System.Xml.Linq Namespace Contoso.SharePointProjectItemExtensions.GenerateExternalDataLists ' Creates the external data lists for the BDC item. The other part of the partial class ' defines the BDC project item extension. Partial Friend Class GenerateExternalDataListsExtension Private Const ModelFileNameString As String = "ModelFileName" Private Const EXTENSION_BDCM As String = ".bdcm" Private Const NamespaceString As String = "https://schemas.microsoft.com/windows/2007/BusinessDataCatalog" Private Shared ReadOnly BdcNamespace As XNamespace = XNamespace.Get(NamespaceString) ' Generates an external data list for each Entity in the BDC model. This event handler is called ' when the developer clicks the shortcut menu item that the extension adds to the BDC project item. Private Sub GenerateExternalDataLists_Execute(ByVal Sender As Object, ByVal e As MenuItemEventArgs) Dim projectItem As ISharePointProjectItem = CType(e.Owner, ISharePointProjectItem) Dim bdcmFile As ISharePointProjectItemFile = GetModelFile(projectItem) Dim doc As XDocument = XDocument.Load(bdcmFile.FullPath) Dim skippedEntities As List(Of XElement) = New List(Of XElement)() ' Try to generate an external data list for each entity defined in the BDC model file. For Each entity As XElement In doc.Root.Elements(BdcNamespace + "LobSystems").Elements( _ BdcNamespace + "LobSystem").Elements(BdcNamespace + "Entities").Elements(BdcNamespace + "Entity") If False = GenerateExternalDataList(projectItem, entity) Then skippedEntities.Add(entity) End If Next ' Report skipped entities. If skippedEntities.Count <> 0 Then Dim entityNameList As StringBuilder = Nothing skippedEntities.ForEach(Function(entity As XElement) If (entityNameList Is Nothing) Then entityNameList = New StringBuilder() Else entityNameList.AppendLine(",") End If entityNameList.Append(entity.Attribute("Name").Value) End Function) Dim message As String = String.Format("The following Entities were skipped because " & "either a LobSystemInstance, SpecificFinder, or Finder was not found for them. \r\n{0}", _ entityNameList) projectItem.Project.ProjectService.Logger.WriteLine(message, LogCategory.Warning) End If End Sub ' Gets the ISharePointProjectItemFile object for the BDC model file. Private Function GetModelFile(ByVal projectItem As ISharePointProjectItem) As ISharePointProjectItemFile Dim modelFileName As String = Nothing If projectItem.FeatureProperties.TryGetValue(ModelFileNameString, modelFileName) Then modelFileName = Path.GetFileName(modelFileName) Return (From file In projectItem.Files _ Where String.Compare(file.Name, modelFileName, StringComparison.OrdinalIgnoreCase) = 0 _ Select file).FirstOrDefault() Else ' If we can't find the ModelFileName through the FeatureProperties, ' get the first file that has a '.bdcm' extension Return (From file In projectItem.Files _ Where file.Name.EndsWith(EXTENSION_BDCM, StringComparison.OrdinalIgnoreCase) _ Select file).FirstOrDefault() End If End Function ' Boilerplate XML for the new list instance that is based on the BDC model. Private Const externalDataListContent As String = _ "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf & _ " <Elements https://schemas.microsoft.com/sharepoint/"">" & vbCrLf & _ " <ListInstance Title=""$EntityName$DataList""" & vbCrLf & _ " OnQuickLaunch=""TRUE""" & vbCrLf & _ " TemplateType=""104""" & vbCrLf & _ " FeatureId=""$SharePoint.Feature.Id$""" & vbCrLf & _ " Url=""Lists/$EntityName$DataList""" & vbCrLf & _ " Description=""Default List for $EntityName$."">" & vbCrLf & _ " <DataSource>" & vbCrLf & _ " <Property Name=""LobSystemInstance"" Value=""$LobSystemInstance$"" />" & vbCrLf & _ " <Property Name=""EntityNamespace"" Value=""$EntityNamespace$"" />" & vbCrLf & _ " <Property Name=""Entity"" Value=""$EntityName$"" />" & vbCrLf & _ " <Property Name=""SpecificFinder"" Value=""$SpecificFinder$"" />" & vbCrLf & _ " <Property Name=""Finder"" Value=""$Finder$"" />" & vbCrLf & _ " </DataSource>" & vbCrLf & _ " </ListInstance>" & vbCrLf & _ " </Elements>" ' Tries to generate an external data list for the specified BDC model project item and entity. Private Function GenerateExternalDataList(ByVal projectItem As ISharePointProjectItem, ByVal entity As XElement) As Boolean Dim lobSystemInstanceName As String = GetLobSystemInstanceName(entity) Dim specificFinderName As String = GetSpecificFinderName(entity) Dim finderName As String = GetFinderName(entity) Dim entityName As String = entity.Attribute("Name").Value If String.IsNullOrEmpty(lobSystemInstanceName) Or String.IsNullOrEmpty(specificFinderName) Or _ String.IsNullOrEmpty(finderName) Then Return False End If Dim newExternalDataListName As String = entityName & "DataList" Dim existingProjectItem As ISharePointProjectItem = (From existingItem As ISharePointProjectItem In projectItem.Project.ProjectItems Where existingItem.Name = newExternalDataListName Select existingItem).FirstOrDefault() ' Add a new list instance and populate it with data from the BDC model. If existingProjectItem Is Nothing Then Dim newExternalDataList As ISharePointProjectItem = projectItem.Project.ProjectItems.Add(newExternalDataListName, _ "Microsoft.VisualStudio.SharePoint.ListInstance") Dim newExternalDataListString As String = externalDataListContent newExternalDataListString = newExternalDataListString.Replace("$EntityName$", entityName) newExternalDataListString = newExternalDataListString.Replace("$LobSystemInstance$", lobSystemInstanceName) newExternalDataListString = newExternalDataListString.Replace("$EntityNamespace$", entity.Attribute("Namespace").Value) newExternalDataListString = newExternalDataListString.Replace("$SpecificFinder$", specificFinderName) newExternalDataListString = newExternalDataListString.Replace("$Finder$", finderName) Dim elementsXmlPath As String = Path.Combine(newExternalDataList.FullPath, "Elements.xml") File.WriteAllText(elementsXmlPath, newExternalDataListString) Dim elementsFile As ISharePointProjectItemFile = newExternalDataList.Files.AddFromFile(elementsXmlPath) elementsFile.DeploymentType = DeploymentType.ElementManifest End If Return True End Function Private Function GetLobSystemInstanceName(ByVal entity As XElement) As String Dim lobSystemInstances As XElement = entity.Parent.Parent.Element(BdcNamespace + "LobSystemInstances") If lobSystemInstances IsNot Nothing Then Dim lobSystemInstance As XElement = lobSystemInstances.Elements(BdcNamespace + "LobSystemInstance").FirstOrDefault() If lobSystemInstance IsNot Nothing Then Return lobSystemInstance.Attribute("Name").Value End If End If Return Nothing End Function Private Function GetSpecificFinderName(ByVal entity As XElement) As String Return GetMethodInstance(entity, "SpecificFinder") End Function Private Function GetFinderName(ByVal entity As XElement) As String Return GetMethodInstance(entity, "Finder") End Function Private Function GetMethodInstance(ByVal entity As XElement, ByVal methodInstanceType As String) As String Dim methods As XElement = entity.Element(BdcNamespace + "Methods") If methods IsNot Nothing Then For Each method As XElement In methods.Elements(BdcNamespace + "Method") Dim methodInstances As XElement = method.Element(BdcNamespace + "MethodInstances") If methodInstances IsNot Nothing Then For Each methodInstance As XElement In methodInstances.Elements(BdcNamespace + "MethodInstance") If methodInstance.Attribute("Type").Value = methodInstanceType Then Return methodInstance.Attribute("Name").Value End If Next End If Next End If Return Nothing End Function End Class End Namespace
using Microsoft.VisualStudio.SharePoint; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Xml.Linq; namespace Contoso.SharePointProjectItemExtensions.GenerateExternalDataLists { // Creates the external data lists for the BDC item. The other part of the partial class // defines the BDC project item extension. internal partial class GenerateExternalDataListsExtension { private const string ModelFileNameString = "ModelFileName"; private const string EXTENSION_BDCM = ".bdcm"; private const string NamespaceString = "https://schemas.microsoft.com/windows/2007/BusinessDataCatalog"; private static readonly XNamespace BdcNamespace = XNamespace.Get(NamespaceString); // Generates an external data list for each Entity in the BDC model. This event handler is called // when the developer clicks the shortcut menu item that the extension adds to the BDC project item. private void GenerateExternalDataLists_Execute(object sender, MenuItemEventArgs e) { ISharePointProjectItem projectItem = (ISharePointProjectItem)e.Owner; ISharePointProjectItemFile bdcmFile = GetModelFile(projectItem); XDocument doc = XDocument.Load(bdcmFile.FullPath); List<XElement> skippedEntities = new List<XElement>(); // Try to generate an external data list for each entity defined in the BDC model file. foreach (XElement entity in doc.Root.Elements(BdcNamespace + "LobSystems").Elements( BdcNamespace + "LobSystem").Elements(BdcNamespace + "Entities").Elements(BdcNamespace + "Entity")) { if (!GenerateExternalDataList(projectItem, entity)) { skippedEntities.Add(entity); } } // Report skipped entities. if (skippedEntities.Count != 0) { StringBuilder entityNameList = null; skippedEntities.ForEach(delegate(XElement entity) { if (entityNameList == null) { entityNameList = new StringBuilder(); } else { entityNameList.AppendLine(","); } entityNameList.Append(entity.Attribute("Name").Value); }); string message = string.Format("The following Entities were skipped because either a LobSystemInstance, " + "SpecificFinder, or Finder was not found for them. \r\n{0}", entityNameList); projectItem.Project.ProjectService.Logger.WriteLine(message, LogCategory.Warning); } } // Gets the ISharePointProjectItemFile object for the BDC model file. private ISharePointProjectItemFile GetModelFile(ISharePointProjectItem projectItem) { string modelFileName; if (projectItem.FeatureProperties.TryGetValue(ModelFileNameString, out modelFileName)) { modelFileName = Path.GetFileName(modelFileName); return (from file in projectItem.Files where string.Compare(file.Name, modelFileName, StringComparison.OrdinalIgnoreCase) == 0 select file).FirstOrDefault(); } else { // if we can't find the ModelFileName through the FeatureProperties, // get the first file that has a '.bdcm' extension return (from file in projectItem.Files where file.Name.EndsWith(EXTENSION_BDCM, StringComparison.OrdinalIgnoreCase) select file).FirstOrDefault(); } } // Boilerplate XML for the new list instance that is based on the BDC model. private const string externalDataListContent = @"<?xml version=""1.0"" encoding=""utf-8""?> <Elements https://schemas.microsoft.com/sharepoint/""> <ListInstance Title=""$EntityName$DataList"" OnQuickLaunch=""TRUE"" TemplateType=""104"" FeatureId=""$SharePoint.Feature.Id$"" Url=""Lists/$EntityName$DataList"" Description=""Default List for $EntityName$.""> <DataSource> <Property Name=""LobSystemInstance"" Value=""$LobSystemInstance$"" /> <Property Name=""EntityNamespace"" Value=""$EntityNamespace$"" /> <Property Name=""Entity"" Value=""$EntityName$"" /> <Property Name=""SpecificFinder"" Value=""$SpecificFinder$"" /> <Property Name=""Finder"" Value=""$Finder$"" /> </DataSource> </ListInstance> </Elements>"; // Tries to generate an external data list for the specified BDC model project item and entity. private bool GenerateExternalDataList(ISharePointProjectItem projectItem, XElement entity) { string lobSystemInstanceName = GetLobSystemInstanceName(entity); string specificFinderName = GetSpecificFinderName(entity); string finderName = GetFinderName(entity); string entityName = entity.Attribute("Name").Value; if (string.IsNullOrEmpty(lobSystemInstanceName) || string.IsNullOrEmpty(specificFinderName) || string.IsNullOrEmpty(finderName)) { return false; } string newExternalDataListName = entityName + "DataList"; ISharePointProjectItem existingProjectItem = (from ISharePointProjectItem existingItem in projectItem.Project.ProjectItems where existingItem.Name == newExternalDataListName select existingItem).FirstOrDefault(); // Add a new list instance and populate it with data from the BDC model. if (existingProjectItem == null) { ISharePointProjectItem newExternalDataList = projectItem.Project.ProjectItems.Add(newExternalDataListName, "Microsoft.VisualStudio.SharePoint.ListInstance"); string newExternalDataListString = externalDataListContent; newExternalDataListString = newExternalDataListString.Replace("$EntityName$", entityName); newExternalDataListString = newExternalDataListString.Replace("$LobSystemInstance$", lobSystemInstanceName); newExternalDataListString = newExternalDataListString.Replace("$EntityNamespace$", entity.Attribute("Namespace").Value); newExternalDataListString = newExternalDataListString.Replace("$SpecificFinder$", specificFinderName); newExternalDataListString = newExternalDataListString.Replace("$Finder$", finderName); string elementsXmlPath = Path.Combine(newExternalDataList.FullPath, "Elements.xml"); File.WriteAllText(elementsXmlPath, newExternalDataListString); ISharePointProjectItemFile elementsFile = newExternalDataList.Files.AddFromFile(elementsXmlPath); elementsFile.DeploymentType = DeploymentType.ElementManifest; } return true; } private string GetLobSystemInstanceName(XElement entity) { XElement lobSystemInstances = entity.Parent.Parent.Element(BdcNamespace + "LobSystemInstances"); if (lobSystemInstances != null) { XElement lobSystemInstance = lobSystemInstances.Elements(BdcNamespace + "LobSystemInstance").FirstOrDefault(); if (lobSystemInstance != null) { return lobSystemInstance.Attribute("Name").Value; } } return null; } private string GetSpecificFinderName(XElement entity) { return GetMethodInstance(entity, "SpecificFinder"); } private string GetFinderName(XElement entity) { return GetMethodInstance(entity, "Finder"); } private string GetMethodInstance(XElement entity, string methodInstanceType) { XElement methods = entity.Element(BdcNamespace + "Methods"); if (methods != null) { foreach (XElement method in methods.Elements(BdcNamespace + "Method")) { XElement methodInstances = method.Element(BdcNamespace + "MethodInstances"); if (methodInstances != null) { foreach (XElement methodInstance in methodInstances.Elements(BdcNamespace + "MethodInstance")) { if (methodInstance.Attribute("Type").Value == methodInstanceType) { return methodInstance.Attribute("Name").Value; } } } } } return null; } } }
Checkpoint
V tomto okamžiku návodu je celý kód pro rozšíření položky projektu v projektu.Sestavte řešení, abyste se ujistili, že se projekt zkompiluje bez chyb.
Sestavte řešení
- Na panelu nabídek zvolte sestavení, Sestavit řešení.
Vytvoření balíčku VSIX k nasazení rozšíření položky projektu
Chcete-li nasadit rozšíření, použijte VSIX projekt ve vašem řešení k vytvoření VSIX balíčku.Nejprve nakonfigurujte VSIX balíček úpravou souboru source.extension.vsixmanifest, který je součástí projektu VSIX.Potom vytvořte VSIX balíček vytvořením řešení.
Chcete-li konfigurovat a vytvořit balíček VSIX
V Průzkumníku, otevřete místní nabídku pro soubor source.extension.vsixmanifest v projektu GenerateExternalDataLists a pak zvolte otevřete.
Visual Studio otevře soubor v editoru manifestu.Soubor source.extension.vsixmanifest je základem pro soubor extension.vsixmanifest a je vyžadován pro všechny balíčky VSIX.Další informace o tomto souboru získáte v tématu VSIX rozšíření schématu Reference.
V Název produktu zadejte Generátor seznamu externích dat.
V Autor zadejte Contoso.
V Popis zadejte seznam rozšíření pro položky projektu Model Připojení obchodních dat, které lze generovat externí data.
Na majetku kartě Editor, zvolte Nový tlačítko.
Přidat nový majetek zobrazí se dialogové okno.
V typu seznam, zvolte Microsoft.VisualStudio.MefComponent.
[!POZNÁMKA]
Tato hodnota odpovídá prvku MefComponent v souboru extension.vsixmanifest file.Tento prvek určuje název sestavení rozšíření v balíčku VSIX.Další informace naleznete v tématu MEFComponent Element.
V zdroje seznam, zvolte projektu v aktuálním řešení.
V projektu seznam, zvolte BdcProjectItemExtensiona pak zvolte OK tlačítko.
Na panelu nabídek zvolte sestavení, Sestavit řešení.
Ujistěte se, že projekt zkompiluje a sestaví bez chyb.
Zkontrolujte složku výstupu sestavení pro projekt GenerateExternalDataLists nyní obsahuje soubor GenerateExternalDataLists.vsix.
Ve výchozím nastavení je výstupní složka sestavení\bin\Debug složka pod složkou, která obsahuje soubor projektu.
Testování rozšíření položky projektu
Nyní jste připraveni k testování rozšíření položky projektu.Nejprve spusťte ladění rozšíření projektu v experimentální instanci aplikace Visual Studio.Potom použijte rozšíření v experimentální instanci Visual Studio k vytvoření externího seznamu pro model služby BDC.Nakonec otevřete externí seznam na webu služby SharePoint pro ověření, zda funguje podle očekávání.
Chcete-li začít ladit rozšíření
V případě potřeby restartujte aplikaci Visual Studio s pověřeními pro správu a otevřete řešení GenerateExternalDataLists.
V projektu BdcProjectItemExtension otevřete kódem ProjectItemExtension a potom přidat zarážku do řádku kódu v Initialize metoda.
Otevřete soubor s kódem GenerateExternalDataLists a potom přidejte zarážku do prvního řádku kódu v GenerateExternalDataLists_Execute metoda.
Spuštění ladění pomocí klávesy F5 nebo panel nabídek, výběr ladění, Spuštění ladění.
Visual Studio nainstaluje rozšíření do %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\External Data List Generator\1.0 a spustí experimentální instanci Visual Studio.Položku projektu budete testovat v této instanci aplikace Visual Studio.
Chcete-li testovat rozšíření
V experimentální instanci Visual Studio v řádku nabídek zvolte soubor, Nový, projektu.
V Nový projekt dialogové okno pole, rozbalte položku šablony uzel, rozbalte Visual C# uzel, rozbalte SharePoint uzel a pak zvolte 2010.
V seznamu v horní části dialogového okna, ujistěte se, že rozhraní.NET Framework 3.5 je vybrán.Projekty pro Microsoft SharePoint Server 2010 vyžadují tuto verzí rozhraní .NET Framework.
V seznamu šablon projektu zvolte Projektu služby SharePoint 2010.
V název zadejte SharePointProjectTestBDCa pak zvolte OK tlačítko.
Do Průvodce nastavením služby SharePoint zadejte adresu URL webu, který chcete použít pro ladění, zvolte nasadit jako řešení farmya pak zvolte Dokončittlačítko.
Otevření místní nabídky pro projekt SharePointProjectTestBDC, zvolte Přidata pak zvolte Nová položka.
V Přidat NewItem – SharePointProjectTestBDC dialogové okno pole, rozbalte uzel nainstalovaný jazyk, rozbalte SharePoint uzlu.
Zvolte 2010 uzel a pak zvolte Model Připojení obchodních dat (pouze řešení farmy) šablony.
V název zadejte TestBDCModela pak zvolte Přidat tlačítko.
Ověřte, že kód ve druhé instanci aplikace Visual Studio zastaví na zarážce, kterou jste nastavili v Initialize metoda kódem ProjectItemExtension.
Zvolte zastavení instance aplikace Visual Studio F5 klíčů nebo v řádku nabídek zvolte ladění, pokračovat pokračovat v ladění projektu.
V experimentální instanci Visual Studio, zvolte F5 klíč nebo řádku nabídek zvolte ladění, Spuštění ladění k sestavení, nasazení a spuštění TestBDCModel projektu.
Webový prohlížeč otevře výchozí stránku webu služby SharePoint, který je určen pro ladění.
Ověřte, zda seznam oddíl v oblast Snadné spuštění ještě neobsahuje seznam, který je založen na výchozím modelu služby BDC v projektu.Je nutné nejprve vytvořit externí datový seznam, buď uživatelským rozhraním služby SharePoint nebo rozšířením položky projektu.
Zavřete webový prohlížeč.
V instanci aplikace Visual Studio, která má otevřít projekt TestBDCModel, otevřete místní nabídku pro TestBDCModel uzlu v Průzkumníkua pak zvolte Generovat seznam externích dat.
Ověřte, že kód ve druhé instanci aplikace Visual Studio zastaví na zarážce, kterou jste nastavili v GenerateExternalDataLists_Execute metoda.Zvolte F5 klíčů nebo řádku nabídek zvolte ladění, pokračovat pokračovat v ladění projektu.
Experimentální instanci Visual Studio přidá instanci seznamu s názvem Entity1DataList k TestBDCModel projekt a instance také vytváří funkci s názvem Feature2 pro instanci seznamu.
Zvolte F5 klíčů nebo řádku nabídek zvolte ladění, Spuštění ladění k sestavení, nasazení a spuštění projektu TestBDCModel.
Webový prohlížeč otevře výchozí stránku webu služby SharePoint, který se používá pro ladění.
V seznam části oblasti snadné zvolit Entity1DataList seznamu.
Ověřte, že seznam obsahuje sloupce s názvem Identifier1 a zprávy, kromě jednu položku Identifier1 hodnotou 0 a hodnotu zprávy Hello World.
Model Připojení obchodních dat výchozím modelu služby BDC, který obsahuje všechna tato data generuje šablony projektu.
Zavřete webový prohlížeč.
Čištění vývojového počítače
Po dokončení testování rozšíření položky projektu odstraňte externí seznam a model služby BDC z webu služby SharePoint a odeberte rozšíření položky projektu z Visual Studio.
Chcete-li odebrat seznam externích dat z webu služby SharePoint
Zvolte v oblast Snadné spuštění webu služby SharePoint Entity1DataList seznamu.
V pásu karet na webu služby SharePoint, zvolte seznam kartu.
Na seznam v kartě Nastavení skupinu, zvolte Nastavení seznamu.
Podle oprávnění a správa, zvolte Odstranit tento seznama pak zvolte OK potvrďte, že chcete odeslat seznam do odpadkového koše.
Zavřete webový prohlížeč.
Chcete-li odebrat model služby BDC z webu služby SharePoint
V experimentální instanci Visual Studio v řádku nabídek zvolte sestavení, odvolání.
Visual Studio odebere model služby BDC z webu služby SharePoint.
Chcete-li odebrat rozšíření položky projektu z aplikace Visual Studio
V experimentální instanci Visual Studio v řádku nabídek zvolte Nástroje, aktualizace a rozšíření.
Aktualizace a rozšíření dialogové okno.
V seznamu rozšíření zvolte Generátor seznamu externích data pak zvolte Odinstalace tlačítko.
V dialogovém okně pole vyberte Ano potvrďte, že chcete odinstalovat rozšíření.
Zvolte Restartovat nyní pro dokonční odinstalace.
Zavřete obě instance programu Visual Studio (experimentální instanci a instanci otevřené řešení GenerateExternalDataLists).
Viz také
Koncepty
Rozšíření systému projektů služby SharePoint