Procedura dettagliata: creazione di un elemento di progetto Colonna del sito con un modello di progetto, parte 1
I progetti SharePoint sono contenitori per uno o più elementi di progetto SharePoint.È possibile estendere il sistema di progetto SharePoint in Visual Studio creando i tipi di elemento di progetto SharePoint per poi associarli a un modello di progetto.In questa procedura dettagliata verrà illustrato come definire un tipo di elemento di progetto per creare una colonna del sito, quindi creare un modello di progetto che può essere utilizzato per creare un nuovo progetto contenente un elemento di progetto di colonna del sito.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Creazione di un'estensione di Visual Studio che definisca un nuovo tipo di elemento di progetto SharePoint per una colonna del sito.Il tipo di elemento di progetto include una semplice proprietà personalizzata visualizzata nella finestra Proprietà.
Creazione di un modello di progetto Visual Studio per l'elemento di progetto.
Compilazione di un pacchetto Visual Studio Extension (VSIX) per distribuire il modello di progetto e l'assembly dell'estensione.
Debug e test dell'elemento di progetto.
Si tratta di una procedura dettagliata autonoma.Dopo avere completato questa procedura dettagliata, è possibile migliorare l'elemento di progetto aggiungendo una procedura guidata al modello di progetto.Per ulteriori informazioni, vedere Procedura dettagliata: creazione di un elemento di progetto Colonna del sito con un modello di progetto, parte 2.
[!NOTA]
È possibile scaricare un esempio che contiene i progetti completati, il codice e altri file di questa procedura dettagliata all'indirizzo seguente: https://go.microsoft.com/fwlink/?LinkId=191369.
Prerequisiti
Per completare la procedura dettagliata, nel computer di sviluppo devono essere presenti i componenti elencati di seguito:
Edizioni supportate di Microsoft Windows, SharePoint e Visual Studio.Per ulteriori informazioni, vedere Requisiti per lo sviluppo di soluzioni SharePoint.
Campo Visual Studio SDK.In questa procedura dettagliata viene utilizzato il modello VSIX Project di SDK per creare un pacchetto VSIX e distribuire l'elemento di progetto.Per ulteriori informazioni, vedere Estensione degli strumenti di SharePoint in Visual Studio.
Per completare la procedura dettagliata è consigliabile conoscere il concetto seguente:
Colonne del sito in SharePoint.Per ulteriori informazioni, vedere Colonne.
Modelli di progetto predefiniti di Visual Studio.Per ulteriori informazioni, vedere Introduzione ai modelli di Visual Studio.
Creazione dei progetti
Per completare questa procedura dettagliata è necessario creare tre progetti:
Un progetto VSIX.Questo progetto consente di creare il pacchetto VSIX per distribuire l'elemento di progetto di colonna del sito e il modello di progetto.
Progetto del modello di progetto.Questo progetto consente di creare un modello di progetto che può essere utilizzato per creare un nuovo progetto SharePoint contenente l'elemento di progetto di colonna del sito.
Un progetto di libreria di classi.Questo progetto implementa un'estensione di Visual Studio che definisce il comportamento dell'elemento di progetto di colonna del sito.
Iniziare la procedura dettagliata creando i progetti.
Per creare il progetto VSIX
Avviare Visual Studio.
Sulla barra dei menu, scegliere Il file, Nuova, Project.
Nella parte superiore della finestra di dialogo Nuovo progetto, assicurarsi che .NET Framework 4.5 sia selezionato nell'elenco delle versioni di.NET Framework.
Espandere i nodi Visual C# o Visual Basic quindi selezionare il nodo Extensibility.
[!NOTA]
Il nodo Extensibility è disponibile solo se si installa Visual Studio 2012 SDK.Per ulteriori informazioni, vedere la sezione precedente relativa ai prerequisiti.
Nell'elenco di modelli di progetto, scegliere Progetto VSIX.
Nella casella Nome, immettere SiteColumnProjectItemquindi scegliere il pulsante OK.
Visual Studio aggiunge il progetto SiteColumnProjectItem a Esplora soluzioni.
Per creare il progetto di modello di progetto
In Esplora soluzioni, aprire il menu di scelta rapida del nodo della soluzione, scegliere Aggiungiquindi scegliere Nuovo progetto.
[!NOTA]
Nei progetti di Visual Basic, il nodo della soluzione viene visualizzato in Esplora soluzioni solo quando la casella di controllo Mostra sempre soluzione viene selezionata in General, Projects and Solutions, Options Dialog Box.
Nella parte superiore della finestra di dialogo Nuovo progetto, assicurarsi che .NET Framework 4.5 sia selezionato nell'elenco delle versioni di.NET Framework.
Espandere il nodo Visual Basic o Visual C# quindi selezionare il nodo Extensibility.
Nell'elenco di modelli di progetto, scegliere il modello Modello di progetto di Visual Basic o Modello di progetto C#.
Nella casella Nome, immettere SiteColumnProjectTemplatequindi scegliere il pulsante OK.
Tramite Visual Studio verrà aggiunto il progetto SiteColumnProjectTemplate alla soluzione.
Eliminare il file di codice Class1 dal progetto.
Se si è creato un progetto Visual Basic, eliminare anche i file seguenti dal progetto:
MyApplication.Designer.vb
MyApplication.myapp
Resources.Designer.vb
Resources.resx
Settings.Designer.vb
Settings.settings
Per creare il progetto di estensione
In Esplora soluzioni, aprire il menu di scelta rapida del nodo della soluzione, scegliere Aggiungiquindi scegliere Nuovo progetto.
Nella parte superiore della finestra di dialogo Nuovo progetto, assicurarsi che .NET Framework 4.5 sia selezionato nell'elenco delle versioni di.NET Framework.
Espandere i nodi Visual Basic o Visual C#, selezionare il nodo Finestre quindi scegliere il modello Libreria di classi.
Nella casella Nome, immettere ProjectItemTypeDefinition quindi scegliere il pulsante OK.
Visual Studio aggiunge il progetto ProjectItemTypeDefinition alla soluzione e apre il file di codice predefinito Class1.
Eliminare il file di codice Class1 dal progetto.
Configurazione del progetto di estensione
Aggiungere file di codice e riferimenti all'assembly per configurare il progetto di estensione.
Per configurare il progetto
Nel progetto ProjectItemTypeDefinition, aggiungere un file di codice denominato SiteColumnProjectItemTypeProvider.
Sulla barra dei menu, scegliere Project, Aggiungi riferimento.
Nella finestra di dialogo Gestione riferimenti - ProjectItemTypeDefinition, espandere il nodo Assembly, selezionare il nodo Framework quindi selezionare la casella di controllo System.ComponentModel.Composition.
Scegliere il nodo Estensioni, selezionare la casella di controllo accanto all'assembly Microsoft.VisualStudio.SharePoint quindi scegliere il pulsante OK.
Definizione del nuovo tipo di elemento di progetto SharePoint
Creare una classe che implementi l'interfaccia ISharePointProjectItemTypeProvider per definire il comportamento del nuovo tipo di elemento di progetto.Implementare questa interfaccia tutte le volte che si desidera definire un nuovo tipo di elemento di progetto.
Per definire il nuovo elemento di progetto SharePoint
Nel file di codice SiteColumnProjectItemTypeProvider, sostituire il codice predefinito con il codice seguente quindi salvare il file.
Imports System Imports System.Diagnostics Imports System.ComponentModel Imports System.ComponentModel.Composition Imports Microsoft.VisualStudio.SharePoint Namespace Contoso.SharePointProjectItems.SiteColumn ' Export attribute: Enables Visual Studio to discover and load this extension. ' SharePointProjectItemType attribute: Specifies the ID for the new project item type. This string must match the value of the ' Type attribute of the ProjectItem element in the .spdata file for the project item. ' SiteColumnProjectItemTypeProvider class: Defines a new type of project item. <Export(GetType(ISharePointProjectItemTypeProvider))> _ <SharePointProjectItemType("Contoso.SiteColumn")> _ Partial Friend Class SiteColumnProjectItemTypeProvider Implements ISharePointProjectItemTypeProvider Private WithEvents projectItemTypeDefinition As ISharePointProjectItemTypeDefinition ' Configures the behavior of the project item type. Private Sub InitializeType(ByVal projectItemTypeDefinition As ISharePointProjectItemTypeDefinition) _ Implements ISharePointProjectItemTypeProvider.InitializeType projectItemTypeDefinition.SupportedDeploymentScopes = _ SupportedDeploymentScopes.Site Or SupportedDeploymentScopes.Web projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All Me.projectItemTypeDefinition = projectItemTypeDefinition End Sub ' Creates a custom property for this project item. Private Sub ProjectItemPropertiesRequested(ByVal Sender As Object, ByVal e As SharePointProjectItemPropertiesRequestedEventArgs) _ Handles projectItemTypeDefinition.ProjectItemPropertiesRequested Dim properties As SiteColumnProperties = Nothing ' If the properties object already exists, get it from the project item's annotations. If False = e.ProjectItem.Annotations.TryGetValue(properties) Then ' Otherwise, create a new properties object and add it to the annotations. properties = New SiteColumnProperties(e.ProjectItem) e.ProjectItem.Annotations.Add(properties) End If e.PropertySources.Add(properties) End Sub End Class Friend Class SiteColumnProperties Private projectItem As ISharePointProjectItem Private Const TestPropertyId As String = "Contoso.SiteColumnProperty" Private Const PropertyDefaultValue As String = "Default custom property value." Friend Sub New(ByVal projectItem As ISharePointProjectItem) Me.projectItem = projectItem End Sub 'The property gets or sets a simple string value. <DisplayName("Example Property")> _ <DescriptionAttribute("This is an example property for site column project items.")> _ <DefaultValue(PropertyDefaultValue)> _ Public Property ExampleProperty As String Get Dim propertyValue As String = Nothing ' Get the current property value if it already exists; otherwise, return a default value. If False = projectItem.ExtensionData.TryGetValue(TestPropertyId, propertyValue) Then propertyValue = PropertyDefaultValue End If Return propertyValue End Get Set(ByVal value As String) If value <> PropertyDefaultValue Then ' Store the property value in the ExtensionData property of the project item. ' Data in the ExtensionData property persists when the project is closed. projectItem.ExtensionData(TestPropertyId) = value Else ' Do not save the default value. projectItem.ExtensionData.Remove(TestPropertyId) End If End Set End Property End Class End Namespace
using System; using System.Diagnostics; using System.ComponentModel; using System.ComponentModel.Composition; using Microsoft.VisualStudio.SharePoint; namespace Contoso.SharePointProjectItems.SiteColumn { // Enables Visual Studio to discover and load this extension. [Export(typeof(ISharePointProjectItemTypeProvider))] // Specifies the ID for the new project item type. This string must match the value of the // Type attribute of the ProjectItem element in the .spdata file for the project item. [SharePointProjectItemType("Contoso.SiteColumn")] // Defines a new type of project item. internal class SiteColumnProjectItemTypeProvider : ISharePointProjectItemTypeProvider { // Implements IProjectItemTypeProvider.InitializeType. Configures the behavior of the project item type. public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition) { projectItemTypeDefinition.SupportedDeploymentScopes = SupportedDeploymentScopes.Site | SupportedDeploymentScopes.Web; projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All; // Handle event to create a custom property for this project item. projectItemTypeDefinition.ProjectItemPropertiesRequested += projectItemTypeDefinition_ProjectItemPropertiesRequested; } // Creates a custom property for this project item. void projectItemTypeDefinition_ProjectItemPropertiesRequested(object sender, SharePointProjectItemPropertiesRequestedEventArgs e) { SiteColumnProperties properties = null; // If the Properties object already exists, get it from the project item's annotations. if (!e.ProjectItem.Annotations.TryGetValue(out properties)) { // Otherwise, create a new Properties object and add it to the annotations. properties = new SiteColumnProperties(e.ProjectItem); e.ProjectItem.Annotations.Add(properties); } e.PropertySources.Add(properties); } } internal class SiteColumnProperties { // This class defines the property behavior. private ISharePointProjectItem projectItem; private const string propertyId = "Contoso.SiteColumnProperty"; private const string propertyDefaultValue = "Default custom property value."; internal SiteColumnProperties(ISharePointProjectItem projectItem) { this.projectItem = projectItem; } // The property gets or sets a simple string value. [DisplayName("Example Property")] [DescriptionAttribute("This is an example property for site column project items.")] [DefaultValue(propertyDefaultValue)] public string ExampleProperty { get { string propertyValue; // Get the current property value if it already exists; otherwise, return a default value. if (!projectItem.ExtensionData.TryGetValue(propertyId, out propertyValue)) { propertyValue = propertyDefaultValue; } return propertyValue; } set { if (value != propertyDefaultValue) { // Store the property value in the ExtensionData property of the project item. // Data in the ExtensionData property persists when the project is closed. projectItem.ExtensionData[propertyId] = value; } else { // Do not save the default value. projectItem.ExtensionData.Remove(propertyId); } } } } }
Creazione di un modello di progetto Visual Studio
Creazione di un modello di progetto, si consente agli altri sviluppatori per creare progetti SharePoint che contengono gli elementi di progetto site column.Un modello di progetto SharePoint include i file necessari per tutti i progetti in Visual Studio, ad esempio file con estensione csproj o vbproj e vstemplate e i file specifici dei progetti SharePoint.Per ulteriori informazioni, vedere Creazione di modelli di elemento e di modelli di progetto per gli elementi di progetto SharePoint.
In questa procedura, viene creato un progetto SharePoint vuoto generare i file specifici dei progetti SharePoint.Quindi aggiungere tali file al progetto SiteColumnProjectTemplate in modo che li che nel modello generato dal progetto.Inoltre configurato il file di progetto SiteColumnProjectTemplate per specificare dove il modello di progetto verrà visualizzato nella finestra di dialogo Nuovo progetto.
Per creare i file per il modello di progetto
Avviare una seconda istanza Visual Studio con credenziali amministrative.
Creare un progetto di SharePoint 2010 denominato BaseSharePointProject.
Importante In Personalizzazione guidata SharePoint, non selezionare il pulsante di opzione Distribuisci come soluzione farm.
Aggiungere un elemento vuoto al progetto e denominarlo l'elemento Field1.
Salvare il progetto e quindi chiudere la seconda istanza Visual Studio.
Nell'istanza Visual Studio con la soluzione SiteColumnProjectItem aperta, in Esplora soluzioni, aprire il menu di scelta rapida del nodo del progetto SiteColumnProjectTemplate, scegliere Aggiungiquindi scegliere Elemento esistente.
Nella finestra di dialogo Aggiungi elemento esistente, aprire l'elenco di estensioni di file e quindi scegliere Tutti i file (*.*).
Nella directory che contiene il progetto BaseSharePointProject, selezionare il file key.snk quindi scegliere il pulsante Aggiungi.
[!NOTA]
In questa procedura dettagliata, il modello di progetto creato utilizza lo stesso file key.snk per firmare ciascun progetto creato utilizzando il modello.Per informazioni su come espandere questo esempio per creare un altro file key.snk per ogni istanza di progetto, vedere Procedura dettagliata: creazione di un elemento di progetto Colonna del sito con un modello di progetto, parte 2.
Ripetere i passaggi da 5 a 8 per aggiungere i seguenti file dalle sottocartelle specificate nella directory BaseSharePointProject:
\Field1\Elements.xml
\Field1\SharePointProjectItem.spdata
\Features\Feature1\Feature1.feature
\Features\Feature1\Feature1.Template.xml
\Package\Package.package
\Package\Package.Template.xml
Aggiungere questi file direttamente al progetto SiteColumnProjectTemplate; non ricreare le sottocartelle Field1 features, funzionalità, o del pacchetto nel progetto.Per ulteriori informazioni su questi file, vedere Creazione di modelli di elemento e di modelli di progetto per gli elementi di progetto SharePoint.
Per configurare come gli sviluppatori individuazione del modello di progetto nella finestra di dialogo Nuovo progetto
In Esplora soluzioni, aprire il menu di scelta rapida del nodo del progetto SiteColumnProjectTemplate quindi scegliere Scarica progetto.Se viene chiesto di salvare le modifiche apportate a qualsiasi file, scegliere il pulsante Sì.
Aprire nuovamente il menu di scelta rapida del nodo SiteColumnProjectTemplate quindi scegliere Modifica SiteColumnProjectTemplate.csproj o Modifica SiteColumnProjectTemplate.vbproj.
Nel file di progetto, inserire il seguente elemento VSTemplate.
<VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
Sostituire l'elemento con il codice XML seguente.
<VSTemplate Include="SiteColumnProjectTemplate.vstemplate"> <OutputSubPath>SharePoint\SharePoint14</OutputSubPath> </VSTemplate>
L'elemento OutputSubPath specifica cartelle aggiuntive nel percorso in cui viene creato il modello di progetto quando si compila il progetto.Le cartelle specificate garantiscono che il modello di progetto sarà disponibile solo quando i clienti aprire la finestra di dialogo Nuovo progetto, espandere il nodo SharePoint quindi selezionare il nodo 2010.
Salvare e chiudere il file.
In Esplora soluzioni, aprire il menu di scelta rapida del progetto SiteColumnProjectTemplate quindi scegliere Ricarica progetto.
Modifica dei file di modello di progetto
Nel progetto SiteColumnProjectTemplate, modificare i seguenti file per definire il comportamento del modello di progetto:
AssemblyInfo.cs o AssemblyInfo.vb
Elements.xml
SharePointProjectItem.spdata
Feature1.feature
Package.package
SiteColumnProjectTemplate.vstemplate
ProjectTemplate.csproj o ProjectTemplate.vbproj
Nelle procedure riportate di seguito, aggiungere i parametri sostituibili ad alcuni dei file.Un parametro sostituibile è un token che inizia e termina con il segno di dollaro ($).Quando un utente utilizza questo modello di progetto per creare un progetto, vengono sostituiti automaticamente da Visual Studio questi parametri nel nuovo progetto con valori specifici.Per ulteriori informazioni, vedere Parametri sostituibili.
Per modificare il file AssemblyInfo.cs o AssemblyInfo.vb.
Nel progetto SiteColumnProjectTemplate, aprire il file AssemblyInfo.cs o AssemblyInfo.vb quindi aggiungere l'istruzione seguente all'inizio di:
Imports System.Security
using System.Security;
Se la proprietà Soluzione in modalità sandbox di un progetto SharePoint è impostata su True, Visual Studio aggiunge System.Security.AllowPartiallyTrustedCallersAttribute al file di codice AssemblyInfo.Tuttavia, il file di codice AssemblyInfo nel modello di progetto non importa lo spazio dei nomi System.Security per impostazione predefinita.È necessario aggiungere l'istruzione using o Imports per evitare errori di compilazione.
Salvare e chiudere il file.
Per modificare il file Elements.xml
Nel progetto SiteColumnProjectTemplate, sostituire il contenuto del file Elements.xml con il codice XML seguente.
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <Field ID="{$guid5$}" Name="$safeprojectname$" DisplayName="$projectname$" Type="Text" Group="Custom Columns"> </Field> </Elements>
Il nuovo XML aggiunge un elemento Field che definisce il nome e il tipo di base della colonna del sito, nonché il gruppo in cui elencare la colonna del sito nella raccolta.Per ulteriori informazioni sul contenuto di questo file, vedere Schema della definizione di campo (la pagina potrebbe essere in inglese).
Salvare e chiudere il file.
Per modificare il file SharePointProjectItem.spdata
Nel progetto SiteColumnProjectTemplate, sostituire il contenuto del file SharePointProjectItem.spdata con il codice XML seguente.
<?xml version="1.0" encoding="utf-8"?> <ProjectItem Type="Contoso.SiteColumn" DefaultFile="Elements.xml" xmlns="https://schemas.microsoft.com/VisualStudio/2010/SharePointTools/SharePointProjectItemModel"> <Files> <ProjectItemFile Source="Elements.xml" Target="$safeprojectname$\" Type="ElementManifest" /> </Files> </ProjectItem>
Il nuovo XML apporta al file le modifiche seguenti:
Modifica l'attributo Type di elemento ProjectItem la stessa stringa passata a SharePointProjectItemTypeAttribute sulla definizione dell'elemento di progetto (la classe SiteColumnProjectItemTypeProvider creata precedentemente in questa procedura dettagliata).
Rimuove gli attributi SupportedDeploymentScopes e SupportedTrustLevels dall'elemento ProjectItem.Questi valori di attributo non sono necessari perché i livelli di attendibilità e gli ambiti di distribuzione vengono specificati nella classe SiteColumnProjectItemTypeProvider nel progetto ProjectItemTypeDefinition.
Per ulteriori informazioni sul contenuto dei file spdata, vedere Riferimento allo schema degli elementi di progetto SharePoint.
Salvare e chiudere il file.
Per modificare il file Feature1.feature
Nel progetto SiteColumnProjectTemplate, sostituire il contenuto del file Feature1.feature con il codice XML seguente.
<?xml version="1.0" encoding="utf-8"?> <feature xmlns:dm0="https://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.0.0.0" Id="$guid4$" featureId="$guid4$" imageUrl="" solutionId="00000000-0000-0000-0000-000000000000" title="Site Column Feature1" version="" deploymentPath="$SharePoint.Project.FileNameWithoutExtension$_$SharePoint.Feature.FileNameWithoutExtension$" xmlns="https://schemas.microsoft.com/VisualStudio/2008/SharePointTools/FeatureModel"> <projectItems> <projectItemReference itemId="$guid2$" /> </projectItems> </feature>
Il nuovo XML apporta al file le modifiche seguenti:
Modifica i valori degli attributi featureId e Id di elemento feature a $guid4$.
Modifica i valori dell'attributo itemId di elemento projectItemReference a $guid2$.
Per ulteriori informazioni sui file con estensione feature, vedere Creazione di modelli di elemento e di modelli di progetto per gli elementi di progetto SharePoint.
Salvare e chiudere il file.
Per modificare il file Package.package
Nel progetto SiteColumnProjectTemplate, sostituire il contenuto del file Package.package con il codice XML seguente.
<?xml version="1.0" encoding="utf-8"?> <package xmlns:dm0="https://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.0.0.0" Id="$guid3$" solutionId="$guid3$" resetWebServer="false" name="$safeprojectname$" xmlns="https://schemas.microsoft.com/VisualStudio/2008/SharePointTools/PackageModel"> <features> <featureReference itemId="$guid4$" /> </features> </package>
Il nuovo XML apporta al file le modifiche seguenti:
Modifica i valori degli attributi solutionId e Id di elemento package a $guid3$.
Modifica i valori dell'attributo itemId di elemento featureReference a $guid4$.
Per ulteriori informazioni sui file con estensione package, vedere Creazione di modelli di elemento e di modelli di progetto per gli elementi di progetto SharePoint.
Salvare e chiudere il file.
Per modificare il file SiteColumnProjectTemplate.vstemplate
Nel progetto SiteColumnProjectTemplate, sostituire il contenuto del file SiteColumnProjectTemplate.vstemplate con una delle sezioni XML.
- Se si crea un modello di progetto visual C#, utilizzare il seguente XML.
<?xml version="1.0" encoding="utf-8"?> <VSTemplate Version="3.0.0" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>Site Column</Name> <Description>Creates a new site column in SharePoint</Description> <FrameworkVersion>3.5</FrameworkVersion> <ProjectType>CSharp</ProjectType> <CreateNewFolder>true</CreateNewFolder> <CreateInPlace>true</CreateInPlace> <ProvideDefaultName>true</ProvideDefaultName> <DefaultName>SiteColumn</DefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <PromptForSaveOnCreation>true</PromptForSaveOnCreation> <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp> <Icon>SiteColumnProjectTemplate.ico</Icon> <SortOrder>1000</SortOrder> </TemplateData> <TemplateContent> <Project TargetFileName="SharePointProject1.csproj" File="ProjectTemplate.csproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" TargetFileName="Properties\AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.feature">Feature1.feature</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.Template.xml">Feature1.template.xml</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.package">Package.package</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.Template.xml">Package.Template.xml</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Field1\SharePointProjectItem.spdata">SharePointProjectItem.spdata</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Field1\Elements.xml" OpenInEditor="true">Elements.xml</ProjectItem> <ProjectItem ReplaceParameters="false" TargetFileName="key.snk">key.snk</ProjectItem> </Project> </TemplateContent> </VSTemplate>
- Se si crea un modello di progetto di Visual Basic., utilizzare il seguente XML.
<?xml version="1.0" encoding="utf-8"?> <VSTemplate Version="3.0.0" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>Site Column</Name> <Description>Creates a new site column in SharePoint</Description> <FrameworkVersion>3.5</FrameworkVersion> <ProjectType>VisualBasic</ProjectType> <CreateNewFolder>true</CreateNewFolder> <CreateInPlace>true</CreateInPlace> <ProvideDefaultName>true</ProvideDefaultName> <DefaultName>SiteColumn</DefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <PromptForSaveOnCreation>true</PromptForSaveOnCreation> <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp> <Icon>SiteColumnProjectTemplate.ico</Icon> <SortOrder>1000</SortOrder> </TemplateData> <TemplateContent> <Project TargetFileName="SharePointProject1.vbproj" File="ProjectTemplate.vbproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" TargetFileName="My Project\AssemblyInfo.vb">AssemblyInfo.vb</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.feature">Feature1.feature</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Features\Feature1\Feature1.Template.xml">Feature1.template.xml</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.package">Package.package</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Package\Package.Template.xml">Package.Template.xml</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Field1\SharePointProjectItem.spdata">SharePointProjectItem.spdata</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Field1\Elements.xml" OpenInEditor="true">Elements.xml</ProjectItem> <ProjectItem ReplaceParameters="false" TargetFileName="key.snk">key.snk</ProjectItem> </Project> </TemplateContent> </VSTemplate>
Il nuovo XML apporta al file le modifiche seguenti:
Imposta l'elemento Name al valore Colonna del sito.Questo nome viene visualizzato nella finestra di dialogo Nuovo progetto ).
Aggiunge elementi ProjectItem per ogni filethat inclusi in ogni istanza del progetto.
Utilizza lo spazio dei nomi “https://schemas.microsoft.com/developer/vstemplate/2005„.Altri file di progetto in questa soluzione si utilizza lo spazio dei nomi “di https://schemas.microsoft.com/developer/msbuild/2003„.Pertanto, i messaggi di avviso XML Schema verranno generati, ma è possibile ignorarli in questa procedura dettagliata.
Per ulteriori informazioni sul contenuto dei file vstemplate, vedere Riferimenti allo schema dei modelli di Visual Studio.
Salvare e chiudere il file.
Per modificare il file ProjectTemplate.csproj o ProjectTemplate.vbproj
Nel progetto SiteColumnProjectTemplate, sostituire il contenuto del file ProjectTemplate.csproj o del file di ProjectTemplate.vbproj con una delle sezioni XML.
- Se si crea un modello di progetto visual C#, utilizzare il seguente XML.
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{$guid1$}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>$safeprojectname$</RootNamespace> <AssemblyName>$safeprojectname$</AssemblyName> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <ProjectTypeGuids>{BB1F664B-9266-4fd6-B973-E1E44974B511};{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <UseVSHostingProcess>false</UseVSHostingProcess> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup> <SignAssembly>true</SignAssembly> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Data" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Web" /> <Reference Include="System.Xml" /> <Reference Include="System.Xml.Linq" /> <Reference Include="Microsoft.SharePoint" /> <Reference Include="Microsoft.SharePoint.Security" /> </ItemGroup> <ItemGroup> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> <None Include="Field1\SharePointProjectItem.spdata"> <SharePointProjectItemId>{$guid2$}</SharePointProjectItemId> </None> <None Include="Field1\Elements.xml" /> </ItemGroup> <ItemGroup> <None Include="key.snk" /> <None Include="Package\Package.package"> <PackageId>{$guid3$}</PackageId> </None> <None Include="Package\Package.Template.xml"> <DependentUpon>Package.package</DependentUpon> </None> <None Include="Features\Feature1\Feature1.feature"> <FeatureId>{$guid4$}</FeatureId> </None> <None Include="Features\Feature1\Feature1.Template.xml"> <DependentUpon>Feature1.feature</DependentUpon> </None> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets" /> </Project>
- Se si crea un modello di progetto di Visual Basic., utilizzare il seguente XML.
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProductVersion> </ProductVersion> <SchemaVersion> </SchemaVersion> <ProjectGuid>{$guid1$}</ProjectGuid> <OutputType>Library</OutputType> <RootNamespace>$safeprojectname$</RootNamespace> <AssemblyName>$safeprojectname$</AssemblyName> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <ProjectTypeGuids>{BB1F664B-9266-4fd6-B973-E1E44974B511};{D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids> <OptionExplicit>On</OptionExplicit> <OptionCompare>Binary</OptionCompare> <OptionStrict>Off</OptionStrict> <OptionInfer>On</OptionInfer> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <DefineDebug>true</DefineDebug> <DefineTrace>true</DefineTrace> <OutputPath>bin\Debug\</OutputPath> <WarningLevel>4</WarningLevel> <UseVSHostingProcess>false</UseVSHostingProcess> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <DefineDebug>false</DefineDebug> <DefineTrace>true</DefineTrace> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <UseVSHostingProcess>false</UseVSHostingProcess> </PropertyGroup> <PropertyGroup> <SignAssembly>true</SignAssembly> <AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Data" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Xml" /> <Reference Include="System.Xml.Linq" /> <Reference Include="Microsoft.SharePoint" /> <Reference Include="Microsoft.SharePoint.Security" /> </ItemGroup> <ItemGroup> <Import Include="Microsoft.VisualBasic" /> <Import Include="System" /> <Import Include="System.Collections" /> <Import Include="System.Collections.Generic" /> <Import Include="System.Data" /> <Import Include="System.Diagnostics" /> <Import Include="System.Linq" /> <Import Include="System.Xml.Linq" /> <Import Include="Microsoft.SharePoint" /> <Import Include="Microsoft.SharePoint.Security" /> </ItemGroup> <ItemGroup> <Compile Include="My Project\AssemblyInfo.vb" /> </ItemGroup> <ItemGroup> <AppDesigner Include="My Project\" /> </ItemGroup> <ItemGroup> <None Include="Features\Feature1\Feature1.feature"> <FeatureId>{$guid4$}</FeatureId> </None> <None Include="Field1\SharePointProjectItem.spdata"> <SharePointProjectItemId>{$guid2$}</SharePointProjectItemId> </None> <None Include="key.snk" /> <None Include="Package\Package.package"> <PackageId>{$guid3$}</PackageId> </None> <None Include="Package\Package.Template.xml"> <DependentUpon>Package.package</DependentUpon> </None> </ItemGroup> <ItemGroup> <None Include="Features\Feature1\Feature1.Template.xml"> <DependentUpon>Feature1.feature</DependentUpon> </None> <None Include="Field1\Elements.xml" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets" /> </Project>
Il nuovo XML apporta al file le modifiche seguenti:
Utilizza l'elemento TargetFrameworkVersion per specificare .NET Framework 3.5, non 4,5.
Aggiunge SignAssembly e gli elementi AssemblyOriginatorKeyFile per firmare l'output del progetto.
Aggiunge elementi Reference per i riferimenti ai progetti SharePoint utilizzano.
Aggiunge gli elementi per ogni file predefinito del progetto, quali Elements.xml e SharePointProjectItem.spdata.
Salvare e chiudere il file.
Creazione di un pacchetto VSIX per distribuire il modello di progetto
Per distribuire l'estensione, utilizzare il progetto VSIX nella soluzione SiteColumnProjectItem per creare un pacchetto VSIX.Anzitutto, configurare il pacchetto VSIX modificando il file source.extension.vsixmanifest incluso nel progetto VSIX.Successivamente, creare il pacchetto VSIX compilando la soluzione.
Per configurare e creare il pacchetto VSIX
In Esplora soluzioni, nel progetto SiteColumnProjectItem, aprire il file source.extension.vsixmanifest nell'editor del manifesto.
Il file source.extension.vsixmanifest è la base del file extension.vsixmanifest che tutti i pacchetti VSIX richiedono.Per ulteriori informazioni su questo file, vedere Informazioni di riferimento sullo schema dell'estensione VSIX.
Nella casella Nome prodotto, immettere Colonna del sito.
Nella casella Autore, immettere Contoso.
Nella casella Descrizione, immettere Un progetto SharePoint per creare le colonne del sito.
Scegliere la scheda Asset quindi scegliere il pulsante Nuova.
La finestra di dialogo Aggiungi nuovo asset viene aperto.
Nell'elenco Tipo, scegliere Microsoft.VisualStudio.ProjectTemplate.
[!NOTA]
Questo valore corrisponde all'elemento ProjectTemplate del file extension.vsixmanifest.Questo elemento identifica la sottocartella nel pacchetto VSIX che contiene il modello di progetto.Per ulteriori informazioni, vedere ProjectTemplate Element (VSX Schema).
Nell'elenco Alimentazione, scegliere Progetto nella soluzione corrente.
Nell'elenco Project e scegliere SiteColumnProjectTemplatequindi scegliere il pulsante OK.
Scegliere nuovamente il pulsante Nuova.
La finestra di dialogo Aggiungi nuovo asset viene aperto.
Nell'elenco Tipo, scegliere Microsoft.VisualStudio.MefComponent.
[!NOTA]
Questo valore corrisponde all'elemento MefComponent del file extension.vsixmanifest.Questo elemento specifica il nome di un assembly dell'estensione nel pacchetto VSIX.Per ulteriori informazioni, vedere MEFComponent Element.
Nell'elenco Alimentazione, scegliere Progetto nella soluzione corrente.
Nell'elenco Project, scegliere ProjectItemTypeDefinitionquindi scegliere il pulsante OK.
Sulla barra dei menu, scegliere Compilazione, Compila soluzionequindi assicurarsi che il progetto venga compilato senza errori.
Esecuzione del test del modello di progetto
È ora possibile eseguire il test del modello di progetto.Avviare innanzitutto il debug della soluzione SiteColumnProjectItem nell'istanza sperimentale di Visual Studio.Eseguire quindi il test del progetto Site Column nell'istanza sperimentale di Visual Studio.Infine, compilare ed eseguire il progetto SharePoint per verificare che la colonna del sito funzioni come previsto.
Per avviare il debug della soluzione
Riavviare Visual Studio con credenziali amministrative e aprire la soluzione SiteColumnProjectItem.
Nel file di codice SiteColumnProjectItemTypeProvider, aggiungere un punto di interruzione alla prima riga di codice nel metodo InitializeType quindi scegliere la chiave F5 per avviare il debug.
In Visual Studio i file di estensione vengono installati in %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Site Column\1.0 e viene avviata un'istanza sperimentale di Visual Studio.L'elemento del progetto verrà testato in questa istanza di Visual Studio.
Per eseguire il test del progetto in Visual Studio
Nell'istanza sperimentale di Visual Studio, sulla barra dei menu, scegliere Il file, Nuova, Project.
Espandere il nodo Visual Basic o Visual C# (a seconda del linguaggio che il modello di progetto supporta), espandere il nodo SharePoint quindi selezionare il nodo 2010.
Nell'elenco di modelli di progetto, scegliere il modello Colonna del sito.
Nella casella Nome, immettere SiteColumnTest quindi scegliere il pulsante OK.
In Esplora soluzioni, un nuovo progetto contenente un elemento di progetto denominato Field1.
Verificare che il codice nell'altra istanza di Visual Studio si interrompe al punto di interruzione impostato precedentemente nel metodo InitializeType quindi si sceglie la chiave F5 per continuare a eseguire il debug del progetto.
In Esplora soluzioni, selezionare il nodo Field1 quindi scegliere la chiave F4.
Viene aperta la finestra Proprietà.
Nell'elenco di proprietà, verificare che la proprietà venga visualizzata Proprietà di esempio.
Per eseguire il test della colonna del sito in SharePoint.
In Esplora soluzioni, selezionare il nodo SiteColumnTest.
Nella finestra Proprietà, nella casella di testo che si trova accanto alla proprietà URL sito, immettere https://localhost.
Questo passaggio consente di specificare il sito di SharePoint locale sul computer di sviluppo da utilizzare per il debug.
[!NOTA]
La proprietà URL sito è vuota per impostazione predefinita perché il modello di progetto site column non include una procedura guidata per la raccolta di creazione del progetto.Per imparare come aggiungere una procedura guidata che richieda allo sviluppatore tale valore e configuri la proprietà nel nuovo progetto, vedere Procedura dettagliata: creazione di un elemento di progetto Colonna del sito con un modello di progetto, parte 2.
Scegliere la chiave F5.
La colonna del sito viene assemblata e distribuita al sito di SharePoint specificato nella proprietà URL sito del progetto.Il browser viene visualizzata la pagina predefinita di questo sito.
[!NOTA]
Se la finestra di dialogo Debug degli script disabilitato viene visualizzato, scegliere il pulsante Sì per continuare il debug del progetto.
Scegliere dal menu Azioni sito, scegliere Impostazioni sito.
Nella pagina Impostazioni sito, nell'elenco Raccolte, scegliere il collegamento Colonne sito.
Nell'elenco delle colonne del sito, verificare che un gruppo Colonne personalizzate contenga una colonna denominata SiteColumnTest.
Chiudere il browser.
Pulizia del computer di sviluppo
Una volta terminato di eseguire il test del progetto, rimuovere il modello di progetto dall'istanza sperimentale di Visual Studio.
Per pulire il computer di sviluppo
Nell'istanza sperimentale di Visual Studio, sulla barra dei menu, scegliere Strumenti, Estensioni e aggiornamenti.
La finestra di dialogo Estensioni e aggiornamenti viene aperto.
Nell'elenco di estensioni selezionare, l'estensione Colonna del sito quindi scegliere il pulsante Disinstalla.
Nella finestra di dialogo, scegliere il pulsante Sì per confermare che si desidera disinstallare l'estensione.
Scegliere il pulsante Chiudi per completare la disinstallazione.
Chiudere entrambe le istanze di Visual Studio (l'istanza sperimentale e l'istanza di Visual Studio in cui la soluzione SiteColumnProjectItem è aperta).
Passaggi successivi
Dopo avere completato questa procedura dettagliata, è possibile aggiungere una procedura guidata al modello di progetto.Quando un utente crea un progetto Site Column, tramite la procedura guidata viene richiesto all'utente l'URL del sito da utilizzare per il debug e di indicare se la nuova soluzione è in modalità sandbox, quindi la procedura guidata configurerà il nuovo progetto con le informazioni specificate.Tramite la procedura guidata vengono inoltre raccolte informazioni sulla colonna del sito (ad esempio il tipo di base e il gruppo in cui elencare la colonna nella raccolta di colonne del sito) e queste informazioni vengono aggiunte al file Elements.xml nel nuovo progetto.Per ulteriori informazioni, vedere Procedura dettagliata: creazione di un elemento di progetto Colonna del sito con un modello di progetto, parte 2.
Vedere anche
Attività
Concetti
Definizione di tipi di elementi di progetto SharePoint
Creazione di modelli di elemento e di modelli di progetto per gli elementi di progetto SharePoint
Salvataggio dei dati nelle estensioni del sistema di progetto SharePoint
Associazione di dati personalizzati alle estensioni degli strumenti di SharePoint