Condividi tramite


Procedura dettagliata: creazione di un elemento di progetto delle colonne 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 del progetto SharePoint in Visual Studio 2010 creando i propri tipi di elementi 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 delle colonne 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:

Per completare la procedura dettagliata è consigliabile conoscere il concetto seguente:

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

  1. Avviare Visual Studio.

  2. Nel menu File scegliere Nuovo, quindi fare clic su Progetto.

  3. Assicurarsi che nella casella combinata nella parte superiore della finestra di dialogo Nuovo progetto sia selezionata l'opzione .NET Framework 4.

  4. Nella finestra di dialogo Nuovo progetto espandere i nodi Visual C# o Visual Basic, quindi fare clic sul nodo Extensibility.

    Nota

    Il nodo Extensibility è disponibile solo se si installa Visual Studio 2010 SDK. Per ulteriori informazioni, vedere la sezione precedente relativa ai prerequisiti.

  5. Scegliere il modello VSIX Project.

  6. Nella casella Nome digitare SiteColumnProjectItem.

  7. Fare clic su OK.

    Visual Studio aggiunge il progetto SiteColumnProjectItem a Esplora soluzioni.

Per creare il progetto di modello di progetto

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, selezionare Aggiungi, quindi 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 Finestra di dialogo Opzioni, Progetti e soluzioni, Generale.

  2. Assicurarsi che nella casella combinata che si trova nella parte superiore della finestra di dialogo Aggiungi nuovo progetto sia selezionato .NET Framework 4.

  3. Nella finestra di dialogo Aggiungi nuovo progetto espandere i nodi Visual C# o Visual Basic, quindi fare clic sul nodo Extensibility.

  4. Selezionare Modello progetto C# oppure Modello progetto Visual Basic.

  5. Nella casella Nome digitare SiteColumnProjectTemplate.

  6. Fare clic su OK.

    Tramite Visual Studio verrà aggiunto il progetto SiteColumnProjectTemplate alla soluzione.

  7. Eliminare il file di codice Class1 dal progetto.

  8. 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

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, selezionare Aggiungi, quindi Nuovo progetto.

  2. Assicurarsi che nella casella combinata che si trova nella parte superiore della finestra di dialogo Aggiungi nuovo progetto sia selezionato .NET Framework 4.

  3. Nella finestra di dialogo Aggiungi nuovo progetto espandere i nodi Visual C# o Visual Basic, quindi scegliere Windows.

  4. Selezionare il modello di progetto Libreria di classi.

  5. Nella casella Nome digitare ProjectItemTypeDefinition.

  6. Fare clic su OK.

    Visual Studio aggiunge il progetto ProjectItemTypeDefinition alla soluzione e apre il file di codice predefinito Class1.

  7. 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

  1. Nel progetto ProjectItemTypeDefinition aggiungere un nuovo file di codice denominato SiteColumnProjectItemTypeProvider.

  2. Scegliere Aggiungi riferimento dal menu Progetto.

  3. Nella scheda .NET premere CTRL, fare clic sugli assembly seguenti e quindi su OK:

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

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

  1. Nel progetto ProjectItemTypeDefinition aprire il file di codice SiteColumnProjectItemTypeProvider.

  2. Sostituire il codice in questo file con il codice riportato di seguito, 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

Per abilitare altri sviluppatori a creare un nuovo progetto SharePoint contenente un elemento di progetto di colonna del sito, creare un modello di progetto. Un modello di progetto SharePoint include i file richiesti per tutti i progetti in Visual Studio, quali i 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, creare un progetto vuoto SharePoint per generare i file specifici dei progetti SharePoint, quindi aggiungere tali file al progetto SiteColumnProjectTemplate in modo che siano inclusi nel modello generato da questo progetto. Configurare anche il file di progetto SiteColumnProjectTemplate per specificare dove il modello del progetto viene visualizzato nella finestra di dialogo Aggiungi nuovo progetto.

Per creare i file per il modello di progetto

  1. Avviare una seconda istanza di Visual Studio con privilegi di amministratore.

  2. Creare un nuovo progetto vuoto SharePoint denominato BaseSharePointProject. Non selezionare l'opzione Distribuisci come soluzione farm nella Personalizzazione guidata SharePoint.

  3. Aggiungere un elemento vuoto al progetto. Assegnare all'elemento il nome Field1.

  4. Salvare il progetto, quindi chiudere la seconda istanza di Visual Studio.

  5. Nell'istanza di Visual Studio in cui è aperta la soluzione di SiteColumnProjectItem, fare clic con il pulsante destro del mouse sul nodo di progetto SiteColumnProjectTemplate in Esplora soluzioni.

  6. Nel menu Aggiungi fare clic su Elemento esistente.

  7. Nella finestra di dialogo Aggiungi elemento esistente fare clic sull'elenco a discesa delle estensioni di file e selezionare Tutti i file (*.*).

  8. Passare alla directory che contiene il progetto BaseSharePointProject. In questa cartella selezionare key.snk, quindi scegliere 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 imparare come espandere questo esempio per creare un nuovo file key.snk per ciascuna istanza di progetto, vedere Procedura dettagliata: creazione di un elemento di progetto delle colonne del sito con un modello di progetto, parte 2.

  9. 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 o Package 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 la modalità di individuazione del modello di progetto nella finestra di dialogo Aggiungi nuovo progetto da parte degli sviluppatori

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto SiteColumnProjectTemplate, quindi scegliere Scarica progetto. Se viene chiesto di salvare le modifiche apportate a uno o più file, scegliere .

  2. Fare di nuovo clic con il pulsante destro del mouse sul nodo SiteColumnProjectTemplate e scegliere Modifica SiteColumnProjectTemplate.csproj o Modifica SiteColumnProjectTemplate.vbproj.

  3. Individuare l'elemento VSTemplate seguente nel file di progetto.

    <VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
    
  4. Sostituire l'elemento VSTemplate 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 qui garantiscono che il modello di progetto sarà disponibile solo quando i clienti fanno clic sul nodo 2010 sotto il nodo SharePoint nella finestra di dialogo Aggiungi nuovo progetto.

  5. Salvare e chiudere il file.

  6. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto SiteColumnProjectTemplate, quindi scegliere Ricarica progetto.

Modifica dei file di modello di progetto

Modificare i seguenti file nel progetto SiteColumnProjectTemplate 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 seguente verranno aggiunti 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 nuovo, questi parametri nel nuovo progetto vengono sostituiti automaticamente da Visual Studio con valori specifici. Per ulteriori informazioni, vedere Parametri sostituibili.

Per modificare il file AssemblyInfo.cs o AssemblyInfo.vb.

  1. Nel progetto SiteColumnProjectTemplate fare doppio clic sul file AssemblyInfo.cs o AssemblyInfo.vb In Esplora soluzioni.

  2. Aggiungere la seguente istruzioni all'inizio del file.

    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 di AssemblyInfo nel modello del progetto non importa lo spazio di nomi System.Security per impostazione predefinita. È necessario aggiungere l'istruzione using o Imports per evitare errori di compilazione.

  3. Salvare e chiudere il file.

Per modificare il file Elements.xml

  1. Nel progetto SiteColumnProjectTemplate fare doppio clic sul file Elements.xml in Esplora soluzioni.

  2. Sostituire il contenuto del file con l'XML riportato di seguito.

    <?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).

  3. Salvare e chiudere il file.

Per modificare il file SharePointProjectItem.spdata

  1. Nel progetto SiteColumnProjectTemplate fare doppio clic sul file SharePointProjectItem.spdata in Esplora soluzioni.

  2. Sostituire il contenuto del file con l'XML riportato di seguito.

    <?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 dell'elemento ProjectItem nella stessa stringa passata all'oggetto SharePointProjectItemTypeAttribute nella definizione di elemento di progetto (la classe SiteColumnProjectItemTypeProvider creata precedentemente in questa procedura dettagliata).

    • Rimuove gli attributi SupportedTrustLevels e SupportedDeploymentScopes 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.

  3. Salvare e chiudere il file.

Per modificare il file Feature1.feature

  1. Nel progetto SiteColumnProjectTemplate fare doppio clic sul file Feature1.feature in Esplora soluzioni.

  2. Sostituire il contenuto del file con l'XML riportato di seguito.

    <?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 Id e featureId dell'elemento feature in $guid4$.

    • Modifica i valori dell'attributo itemId dell'elemento projectItemReference in $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.

  3. Salvare e chiudere il file.

Per modificare il file Package.package

  1. Nel progetto SiteColumnProjectTemplate fare doppio clic sul file Package.package in Esplora soluzioni.

  2. Sostituire il contenuto del file con l'XML riportato di seguito.

    <?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 Id e solutionId dell'elemento package in $guid3$.

    • Modifica i valori dell'attributo itemId dell'elemento featureReference in $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.

  3. Salvare e chiudere il file.

Per modificare il file SiteColumnProjectTemplate.vstemplate

  1. Nel progetto SiteColumnProjectTemplate fare doppio clic sul file SiteColumnProjectTemplate.vstemplate In Esplora soluzioni.

  2. Sostituire il contenuto del file con una delle sezioni di XML riportate di seguito. Se si sta creando 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 sta creando un modello di progetto 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:

    • Consente di impostare l'elemento Name sul valore Site Column (questo è il nome visualizzato nella finestra di dialogo Aggiungi nuovo progetto).

    • Consente di aggiungere gli elementi ProjectItem per ciascuno dei file inclusi in ogni istanza del progetto.

    Per ulteriori informazioni sul contenuto dei file vstemplate, vedere Riferimenti allo schema dei modelli di Visual Studio.

  3. Salvare e chiudere il file.

Per modificare il file ProjectTemplate.csproj o ProjectTemplate.vbproj

  1. Nel progetto SiteColumnProjectTemplate fare doppio clic sul file ProjectTemplate.csproj o ProjectTemplate.vbproj In Esplora soluzioni.

  2. Sostituire il contenuto del file con una delle sezioni di XML riportate di seguito. Se si sta creando 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 sta creando un modello di progetto 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:

    • Consente di modificare l'elemento TargetFrameworkVersion per specificare .NET Framework 3.5.

    • Consente di aggiungere gli elementi SignAssembly e AssemblyOriginatorKeyFile per firmare l'output del progetto.

    • Consente di aggiungere nuovi elementi Reference per i riferimenti all'assembly utilizzati dai progetti SharePoint.

    • Consente di aggiungere nuovi elementi per ciascuno dei file predefiniti nel progetto, quali Elements.xml e SharePointProjectItem.spdata.

  3. 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. Quindi, creare il pacchetto VSIX compilando la soluzione.

Per configurare e creare il pacchetto VSIX

  1. In Esplora soluzioni fare doppio clic sul file source.extension.vsixmanifest nel progetto SiteColumnProjectItem.

    In Visual Studio si apre il file nell'editor del manifesto. Il file source.extension.vsixmanifest è la base del file extension.vsixmanifest richiesto da tutti i pacchetti VSIX. Per ulteriori informazioni su questo file, vedere VSIX Extension Schema Reference.

  2. Nella casella Nome prodotto digitare Site Column.

  3. Nella casella Autore digitare Contoso.

  4. Nella casella Descrizione, digitare Progetto SharePoint per creare colonne del sito.

  5. Nella sezione Contenuto dell'editor fare clic sul pulsante Aggiungi contenuto.

  6. Nella finestra di dialogo Aggiungi contenuto fare clic sulla casella a discesa Seleziona un tipo di contenuto, quindi selezionare Modello di progetto.

    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).

  7. In Selezionare un'origine fare clic sul pulsante di opzione Progetto e selezionare SiteColumnProjectTemplate nella casella di riepilogo accanto.

  8. Fare clic su OK.

  9. Fare clic nuovamente sul pulsante Aggiungi contenuto.

  10. Nella finestra di dialogo Aggiungi contenuto selezionare Componente MEF nella casella di riepilogo Seleziona un tipo di contenuto.

    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 (VSX Schema).

  11. In Selezionare un'origine fare clic sul pulsante di opzione Progetto e selezionare ProjectItemTypeDefinition nella casella di riepilogo accanto.

  12. Fare clic su OK.

  13. Scegliere Compila soluzione dal menu Compila. Assicurarsi che il progetto venga compilato correttamente.

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

  1. Riavviare Visual Studio con privilegi di amministratore e aprire la soluzione SiteColumnProjectItem.

  2. Aprire il file di codice SiteColumnProjectItemTypeProvider e aggiungere un punto di interruzione alla prima riga di codice nel metodo InitializeType.

  3. Premere 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

  1. Nell'istanza sperimentale di Visual Studio scegliere Nuovo dal menu File, quindi fare clic su Progetto.

  2. Espandere Visual C# o Visual Basic (a seconda del linguaggio supportato dal modello di progetto), espandere SharePoint, quindi fare clic su 2010.

  3. Nell'elenco dei modelli di progetto selezionare Site Column.

  4. Nella casella Nome digitare SiteColumnTest.

  5. Fare clic su OK. In Esplora soluzioni verrà visualizzato un nuovo progetto con elemento di progetto denominato Field1.

  6. Verificare che il codice nell'altra istanza di Visual Studio venga interrotto in corrispondenza del punto di interruzione impostato precedentemente nel metodo InitializeType. Premere F5 per continuare il debug del progetto.

  7. In Esplora soluzioni fare clic sul nodo Field1 e premere F4. Viene aperta la finestra Proprietà.

  8. Verificare che la proprietà Proprietà esempio venga visualizzata nell'elenco di proprietà.

Per eseguire il test della colonna del sito in SharePoint.

  1. In Esplora soluzioni fare clic sul nodo SiteColumnTest.

  2. Nella finestra Proprietà fare clic sulla casella di testo accanto alla proprietà URL sito e digitare https://localhost. Ciò 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, poiché il modello di progetto Site Column non fornisce una procedura guidata per la raccolta di tale valore alla 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 delle colonne del sito con un modello di progetto, parte 2.

  3. Premere F5. La colonna del sito viene assemblata e distribuita al sito di SharePoint specificato dalla proprietà URL sito del progetto. Nel browser viene visualizzata la pagina predefinita di questo sito.

    Nota

    Se viene visualizzata la finestra di dialogo Debug degli script disabilitato, fare clic su per continuare il debug del progetto.

  4. Scegliere Impostazioni sito dal menu Azioni sito.

  5. In Gallerie, fare clic su Colonne sito.

  6. Nell'elenco delle colonne del sito, verificare che sia presente un gruppo Colonne personalizzate contenente una colonna denominata SiteColumnTest.

  7. Chiudere il browser Web.

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

  1. Scegliere Gestione estensioni dal menu Strumenti nell'istanza sperimentale di Visual Studio.

    Viene aperta la finestra di dialogo Gestione estensioni.

  2. Nell'elenco di estensioni, fare clic su Site Column, quindi su Disinstalla.

  3. Nella finestra di dialogo visualizzata fare clic su per confermare che si desidera disinstallare l'estensione.

  4. Fare clic su Riavvia per completare la disinstallazione.

  5. Chiudere entrambe le istanze di Visual Studio, ovvero quella sperimentale e l'istanza in cui è aperta la soluzione SiteColumnProjectItem.

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 delle colonne del sito con un modello di progetto, parte 2.

Vedere anche

Altre risorse

Procedura dettagliata: creazione di un elemento di progetto delle colonne del sito con un modello di progetto, parte 2

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