Condividi tramite


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:

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. Sulla barra dei menu, scegliere Il file, Nuova, Project.

  3. Nella parte superiore della finestra di dialogo Nuovo progetto, assicurarsi che .NET Framework 4.5 sia selezionato nell'elenco delle versioni di.NET Framework.

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

  5. Nell'elenco di modelli di progetto, scegliere Progetto VSIX.

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

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

  2. Nella parte superiore della finestra di dialogo Nuovo progetto, assicurarsi che .NET Framework 4.5 sia selezionato nell'elenco delle versioni di.NET Framework.

  3. Espandere il nodo Visual Basic o Visual C# quindi selezionare il nodo Extensibility.

  4. Nell'elenco di modelli di progetto, scegliere il modello Modello di progetto di Visual Basic o Modello di progetto C#.

  5. Nella casella Nome, immettere SiteColumnProjectTemplatequindi scegliere il pulsante OK.

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

  6. Eliminare il file di codice Class1 dal progetto.

  7. 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, aprire il menu di scelta rapida del nodo della soluzione, scegliere Aggiungiquindi scegliere Nuovo progetto.

  2. Nella parte superiore della finestra di dialogo Nuovo progetto, assicurarsi che .NET Framework 4.5 sia selezionato nell'elenco delle versioni di.NET Framework.

  3. Espandere i nodi Visual Basic o Visual C#, selezionare il nodo Finestre quindi scegliere il modello Libreria di classi.

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

  5. 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 file di codice denominato SiteColumnProjectItemTypeProvider.

  2. Sulla barra dei menu, scegliere Project, Aggiungi riferimento.

  3. Nella finestra di dialogo Gestione riferimenti - ProjectItemTypeDefinition, espandere il nodo Assembly, selezionare il nodo Framework quindi selezionare la casella di controllo System.ComponentModel.Composition.

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

  1. Avviare una seconda istanza Visual Studio con credenziali amministrative.

  2. Creare un progetto di SharePoint 2010 denominato BaseSharePointProject.

    Nota importanteImportante

    In Personalizzazione guidata SharePoint, non selezionare il pulsante di opzione Distribuisci come soluzione farm.

  3. Aggiungere un elemento vuoto al progetto e denominarlo l'elemento Field1.

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

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

  6. Nella finestra di dialogo Aggiungi elemento esistente, aprire l'elenco di estensioni di file e quindi scegliere Tutti i file (*.*).

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

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

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

  2. Aprire nuovamente il menu di scelta rapida del nodo SiteColumnProjectTemplate quindi scegliere Modifica SiteColumnProjectTemplate.csproj o Modifica SiteColumnProjectTemplate.vbproj.

  3. Nel file di progetto, inserire il seguente elemento VSTemplate.

    <VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
    
  4. 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.

  5. Salvare e chiudere il file.

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

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

  2. Salvare e chiudere il file.

Per modificare il file Elements.xml

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

  2. Salvare e chiudere il file.

Per modificare il file SharePointProjectItem.spdata

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

  2. Salvare e chiudere il file.

Per modificare il file Feature1.feature

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

  2. Salvare e chiudere il file.

Per modificare il file Package.package

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

  2. Salvare e chiudere il file.

Per modificare il file SiteColumnProjectTemplate.vstemplate

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

  2. Salvare e chiudere il file.

Per modificare il file ProjectTemplate.csproj o ProjectTemplate.vbproj

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

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

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

  2. Nella casella Nome prodotto, immettere Colonna del sito.

  3. Nella casella Autore, immettere Contoso.

  4. Nella casella Descrizione, immettere Un progetto SharePoint per creare le colonne del sito.

  5. Scegliere la scheda Asset quindi scegliere il pulsante Nuova.

    La finestra di dialogo Aggiungi nuovo asset viene aperto.

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

  7. Nell'elenco Alimentazione, scegliere Progetto nella soluzione corrente.

  8. Nell'elenco Project e scegliere SiteColumnProjectTemplatequindi scegliere il pulsante OK.

  9. Scegliere nuovamente il pulsante Nuova.

    La finestra di dialogo Aggiungi nuovo asset viene aperto.

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

  11. Nell'elenco Alimentazione, scegliere Progetto nella soluzione corrente.

  12. Nell'elenco Project, scegliere ProjectItemTypeDefinitionquindi scegliere il pulsante OK.

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

  1. Riavviare Visual Studio con credenziali amministrative e aprire la soluzione SiteColumnProjectItem.

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

  1. Nell'istanza sperimentale di Visual Studio, sulla barra dei menu, scegliere Il file, Nuova, Project.

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

  3. Nell'elenco di modelli di progetto, scegliere il modello Colonna del sito.

  4. Nella casella Nome, immettere SiteColumnTest quindi scegliere il pulsante OK.

    In Esplora soluzioni, un nuovo progetto contenente un elemento di progetto denominato Field1.

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

  6. In Esplora soluzioni, selezionare il nodo Field1 quindi scegliere la chiave F4.

    Viene aperta la finestra Proprietà.

  7. Nell'elenco di proprietà, verificare che la proprietà venga visualizzata Proprietà di esempio.

Per eseguire il test della colonna del sito in SharePoint.

  1. In Esplora soluzioni, selezionare il nodo SiteColumnTest.

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

  3. 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 per continuare il debug del progetto.

  4. Scegliere dal menu Azioni sito, scegliere Impostazioni sito.

  5. Nella pagina Impostazioni sito, nell'elenco Raccolte, scegliere il collegamento Colonne sito.

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

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

  1. Nell'istanza sperimentale di Visual Studio, sulla barra dei menu, scegliere Strumenti, Estensioni e aggiornamenti.

    La finestra di dialogo Estensioni e aggiornamenti viene aperto.

  2. Nell'elenco di estensioni selezionare, l'estensione Colonna del sito quindi scegliere il pulsante Disinstalla.

  3. Nella finestra di dialogo, scegliere il pulsante per confermare che si desidera disinstallare l'estensione.

  4. Scegliere il pulsante Chiudi per completare la disinstallazione.

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

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

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