Demonstra Passo a passo: A criação de um Item de projeto da coluna de Site com um modelo de projeto, parte 1

Projetos do SharePoint são recipientes para um ou mais itens de projeto do SharePoint. Você pode estender o sistema de projeto do SharePoint em Visual Studio 2010 criar seus próprios tipos de item de projeto do SharePoint e associando-os com um modelo de projeto. Esta explicação passo a passo, você irá definir um tipo de item de projeto para a criação de uma coluna de site e, em seguida, você criará um modelo de projeto pode ser usado para criar um novo projeto que contém um item de projeto de coluna do site.

Essa explicação passo a passo demonstra as seguintes tarefas:

  • Criação de uma extensão de Visual Studio que define um novo tipo de item de projeto do SharePoint para uma coluna de site. O tipo de item de projeto inclui uma propriedade personalizada simple que consta do Propriedades janela.

  • Criando um Visual Studio o modelo de projeto para o item de projeto.

  • Criando um Visual Studio pacote de extensão (VSIX) para implantar o modelo de projeto e o assembly de extensão.

  • O item de projeto de teste e depuração.

Este é um passo a passo autônoma. Depois de concluir este passo a passo, você pode aprimorar o item de projeto, adicionando um Assistente para o modelo de projeto. Para obter mais informações, consulte Demonstra Passo a passo: A criação de um Item de projeto da coluna de Site com um modelo de projeto, parte 2.

ObservaçãoObservação

Você pode baixar um exemplo que contém os projetos concluídos, código e outros arquivos para esta explicação passo a passo do seguinte local: https://go.microsoft.com/fwlink/?LinkId=191369.

Pré-requisitos

É necessário que os seguintes componentes no computador de desenvolvimento para concluir este passo a passo:

O conhecimento do conceito seguinte é útil, mas não necessário para concluir o passo a passo:

A criação de projetos

Para concluir este passo a passo, você precisa criar três projetos:

  • Um projeto VSIX. Este projeto cria o pacote VSIX para implantar o item de projeto de coluna do site e o modelo de projeto.

  • Um projeto de modelo de projeto. Este projeto cria um modelo de projeto pode ser usado para criar um novo projeto do SharePoint que contém o item de projeto de coluna do site.

  • Um projeto de biblioteca de classe. Este projeto que implementa uma extensão de Visual Studio que define o comportamento do item de projeto de coluna do site.

Inicie o passo a passo através da criação de projetos.

Para criar o projeto VSIX

  1. Inicie o Visual Studio

  2. No menu File, aponte para New, e em seguida, clique em Project.

  3. Na caixa de combinação na parte superior do Novo projeto caixa de diálogo caixa, certifique-se de que .NET Framework 4 está selecionada.

  4. No Novo projeto caixa de diálogo caixa, expanda o Visual C# ou Visual Basic nós e em seguida, clique o extensibilidade nó.

    ObservaçãoObservação

    O extensibilidade nó só estará disponível se você instalar o SDK de 2010 Visual Studio. Para obter mais informações, consulte a seção pré-requisitos anteriormente neste tópico.

  5. Clique o O projeto de VSIX modelo.

  6. No nome , digite SiteColumnProjectItem.

  7. Clique em OK.

    Visual StudioAdiciona o SiteColumnProjectItem de projeto para Solution Explorer.

Para criar o projeto do modelo de projeto

  1. Em Solution Explorer, o botão direito do mouse no nó da solução, aponte para Adde em seguida, clique em Novo projeto.

    ObservaçãoObservação

    Em projetos de Visual Basic, o nó de solução aparece na Solution Explorer somente quando o Always show solution caixa de seleção estiver marcada na Geral, projetos e soluções, caixa de diálogo Options.

  2. Na caixa de combinação na parte superior do Add New Project caixa de diálogo caixa, certifique-se de que .NET Framework 4 está selecionada.

  3. No Add New Project caixa de diálogo caixa, expanda o Visual C# ou Visual Basic nós e em seguida, clique o extensibilidade nó.

  4. Na lista de modelos de projeto, selecione O modelo de projeto C# ou Modelo de projeto de Visual Basic.

  5. No nome , digite SiteColumnProjectTemplate.

  6. Clique em OK.

    Visual StudioAdiciona o SiteColumnProjectTemplate o projeto à solução.

  7. Exclua o arquivo de código Class1 do projeto.

  8. Se você criou um projeto de Visual Basic, também exclua os seguintes arquivos do projeto:

    • MyApplication.Designer.vb

    • MyApplication.myapp

    • Resources.Designer.vb

    • Resources. resx

    • Settings.Designer.vb

    • Settings

Para criar o projeto de extensão

  1. Em Solution Explorer, o botão direito do mouse no nó da solução, aponte para Adde em seguida, clique em Novo projeto.

  2. Na caixa de combinação na parte superior do Add New Project caixa de diálogo caixa, certifique-se de que .NET Framework 4 está selecionada.

  3. No Add New Project caixa de diálogo caixa, expanda o Visual C# ou Visual Basic nós e clique Windows.

  4. Selecione o Biblioteca de classe o modelo de projeto.

  5. No nome , digite ProjectItemTypeDefinition.

  6. Clique em OK.

    Visual StudioAdiciona o ProjectItemTypeDefinition o projeto à solução e abre o arquivo de código padrão Class1.

  7. Exclua o arquivo de código Class1 do projeto.

Configurando o projeto de extensão

Adicione arquivos de código e referências assembly para configurar o projeto de extensão.

Para configurar o projeto.

  1. No projeto ProjectItemTypeDefinition, adicione um novo arquivo de código chamado SiteColumnProjectItemTypeProvider.

  2. No menu Project, escolha Add Reference.

  3. Sobre o .NET guia, pressione CTRL e clique em assemblies seguintes e, em seguida, clique em OK:

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

Definindo o novo tipo de Item de projeto do SharePoint

Criar uma classe que implementa o ISharePointProjectItemTypeProvider interface para definir o comportamento do novo projeto item tipo. Implemente essa interface, sempre que você deseja definir um novo tipo de item de projeto.

Para definir o novo tipo de item de projeto do SharePoint

  1. No projeto ProjectItemTypeDefinition, abra o SiteColumnProjectItemTypeProvider o arquivo de código.

  2. Substitua o código neste arquivo com o código a seguir e, em seguida, salve o arquivo.

    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);
                    }
                }
            }
        }
    }
    

Criando um modelo de projeto de Visual Studio

Para permitir que outros desenvolvedores criar um novo projeto do SharePoint que contém um item de projeto de coluna do site, crie um modelo de projeto. Um modelo de projeto do SharePoint inclui os arquivos necessários para todos os projetos em Visual Studio, como, por exemplo,. csproj ou. vbproj e arquivos. vstemplate e arquivos que são específicos para projetos do SharePoint. Para obter mais informações, consulte Criando modelos de Item e projeto para os itens de projeto do SharePoint.

Neste procedimento, criar um projeto do SharePoint vazia para gerar os arquivos que são específicos para projetos do SharePoint e, em seguida, adicionar esses arquivos ao projeto SiteColumnProjectTemplate, para que eles serão incluídos no modelo que é gerado a partir deste projeto. Também configurar o arquivo de projeto de SiteColumnProjectTemplate para especificar onde o modelo de projeto aparece na Add New Project caixa de diálogo.

Para criar os arquivos para o modelo de projeto

  1. Iniciar uma segunda instância de Visual Studio com privilégios de administrador.

  2. Criar um novo projeto de SharePoint vazio chamado BaseSharePointProject. Não selecione a Deploy como uma solução do farm opção no O Assistente para personalização do SharePoint.

  3. Adicione um item de elemento vazio para o projeto. Nomeie o item campo1.

  4. Salve o projeto e feche a segunda Visual Studio instância.

  5. Na instância do Visual Studio que tem o direito de abrir, de solução de SiteColumnProjectItem a SiteColumnProjectTemplate o nó do projeto em Solution Explorer.

  6. Sobre o Add menu, clique em Item existente.

  7. No Add Existing Item caixa de diálogo, clique na lista suspensa de extensões de arquivo e selecione todos os arquivos (*. *).

  8. Navegue até o diretório que contém o projeto BaseSharePointProject. Nesta pasta, selecione key.snk e clique em Add.

    ObservaçãoObservação

    Esta explicação passo a passo, o modelo de projeto que você criar usa o mesmo arquivo de key.snk para assinar cada projeto que é criado usando o modelo. Para saber como expandir esse exemplo para criar um novo arquivo de key.snk para cada instância do projeto, consulte Demonstra Passo a passo: A criação de um Item de projeto da coluna de Site com um modelo de projeto, parte 2.

  9. Repita as etapas 5 a 8 para adicionar os seguintes arquivos a partir de subpastas especificadas no diretório BaseSharePointProject:

    • \Field1\Elements.XML

    • \Field1\SharePointProjectItem.spdata

    • \Features\Feature1\Feature1.Feature

    • \Features\Feature1\Feature1.Template.XML

    • \Package\Package.Package

    • \Package\Package.Template.XML

    Adicionar esses arquivos diretamente para o projeto de SiteColumnProjectTemplate; não recrie as subpastas campo1, recursos ou pacote no projeto. Para obter mais informações sobre esses arquivos, consulte Criando modelos de Item e projeto para os itens de projeto do SharePoint.

Para configurar como os desenvolvedores descubram o modelo de projeto na caixa de diálogo Add New Project

  1. Em Solution Explorer, com o botão direito do SiteColumnProjectTemplate no nó do projeto e clique em Unload Project. Se for solicitado a salvar alterações em todos os arquivos, clique em Sim.

  2. Com o botão direito do SiteColumnProjectTemplate nó novamente e clique em SiteColumnProjectTemplate.csproj Editar ou Editar SiteColumnProjectTemplate.vbproj.

  3. Localize o seguinte VSTemplate o elemento no arquivo de projeto.

    <VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
    
  4. Substituir VSTemplate elemento com o XML a seguir.

    <VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
      <OutputSubPath>SharePoint\SharePoint14</OutputSubPath>
    </VSTemplate>
    

    O OutputSubPath elemento Especifica as pastas adicionais no caminho em que o modelo de projeto é criado quando você constrói o projeto. As pastas especificadas aqui garantem que o modelo de projeto estará disponível somente quando os clientes cliquem o 2010 nó sob o SharePoint nó a Add New Project caixa de diálogo.

  5. Salve e feche o arquivo.

  6. Em Solution Explorer, com o botão direito do SiteColumnProjectTemplate de projeto e, em seguida, clique em Reload Project.

Editando os arquivos de modelo de projeto

Edite os seguintes arquivos no projeto SiteColumnProjectTemplate para definir o comportamento do modelo do projeto:

  • AssemblyInfo. cs ou AssemblyInfo. vb

  • Elements

  • SharePointProjectItem.spdata

  • Feature1.Feature

  • Package.Package

  • SiteColumnProjectTemplate.vstemplate

  • ProjectTemplate.csproj ou ProjectTemplate.vbproj

Os procedimentos a seguir você irá adicionar parâmetros substituíveis para alguns desses arquivos. Um parâmetro de substituição é um token que começa e termina com o caractere de cifrão ($). Quando um usuário usa o modelo de projeto para criar um novo projeto, o Visual Studio substitui automaticamente esses parâmetros no novo projeto com valores específicos. Para obter mais informações, consulte Parâmetros substituíveis.

Para editar o arquivo AssemblyInfo. cs ou AssemblyInfo. vb

  1. No projeto SiteColumnProjectTemplate, clique duas vezes no arquivo AssemblyInfo. cs ou AssemblyInfo. vb Solution Explorer.

  2. Adicione a instrução a seguir na parte superior deste arquivo.

    Imports System.Security
    
    using System.Security;
    

    Quando o No modo seguro de solução propriedade de um projeto do SharePoint é definida como True, Visual Studio adiciona a System.Security.AllowPartiallyTrustedCallersAttribute no arquivo de código de AssemblyInfo. No entanto, o arquivo de código AssemblyInfo no modelo de projeto não importa o System.Security namespace por padrão. Você deve adicioná-lo using ou Imports compilar a instrução para evitar erros.

  3. Salve e feche o arquivo.

Para editar o arquivo elements.

  1. No projeto SiteColumnProjectTemplate, clique duas vezes no arquivo elements XML no Solution Explorer.

  2. Substitua o conteúdo do arquivo com o seguinte XML.

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

    O XML novo adiciona uma Field elemento que define o nome da coluna do site, seu tipo base e o grupo no qual a lista da coluna de site na galeria. Para obter mais informações sobre o conteúdo deste arquivo, consulte Esquema de definição do campo.

  3. Salve e feche o arquivo.

Para editar o arquivo SharePointProjectItem.spdata

  1. No projeto SiteColumnProjectTemplate, clique duas vezes no arquivo SharePointProjectItem.spdata na Solution Explorer.

  2. Substitua o conteúdo do arquivo com o seguinte XML.

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

    Novo XML faz as seguintes alterações no arquivo:

    • Ele altera o Type atributo da ProjectItem elemento para a mesma seqüência que é passado para o SharePointProjectItemTypeAttribute na definição de item de projeto (o SiteColumnProjectItemTypeProvider classe que você criou anteriormente nesta explicação passo a passo).

    • Ele remove o SupportedTrustLevels e SupportedDeploymentScopes atributos a partir de ProjectItem elemento. Esses valores de atributo são desnecessários porque os níveis de confiança e escopos de implantação são especificados no SiteColumnProjectItemTypeProvider classe no projeto ProjectItemTypeDefinition.

    Para obter mais informações sobre o conteúdo dos arquivos de .spdata, consulte Referência de esquema de Item de projeto do SharePoint.

  3. Salve e feche o arquivo.

Para editar o arquivo Feature1.feature

  1. No projeto SiteColumnProjectTemplate, clique duas vezes no arquivo Feature1.feature na Solution Explorer.

  2. Substitua o conteúdo do arquivo com o seguinte XML.

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

    Novo XML faz as seguintes alterações no arquivo:

    • Ele altera os valores da Id e featureId atributos da feature elemento para $guid4$.

    • Ele altera os valores da itemId atributo o projectItemReference elemento para $guid2$.

    Para obter mais informações sobre arquivos de .feature, consulte Criando modelos de Item e projeto para os itens de projeto do SharePoint.

  3. Salve e feche o arquivo.

Para editar o arquivo Package.package

  1. No projeto SiteColumnProjectTemplate, clique duas vezes no arquivo Package.package na Solution Explorer.

  2. Substitua o conteúdo do arquivo com o seguinte XML.

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

    Novo XML faz as seguintes alterações no arquivo:

    • Ele altera os valores da Id e solutionId atributos da package elemento para $guid3$.

    • Ele altera os valores da itemId atributo o featureReference elemento para $guid4$.

    Para obter mais informações sobre arquivos de .package, consulte Criando modelos de Item e projeto para os itens de projeto do SharePoint.

  3. Salve e feche o arquivo.

Para editar o arquivo SiteColumnProjectTemplate.vstemplate

  1. No projeto SiteColumnProjectTemplate, clique duas vezes no arquivo SiteColumnProjectTemplate.vstemplate na Solution Explorer.

  2. Substitua o conteúdo do arquivo com uma das seguintes seções do XML. Se você estiver criando um modelo de projeto do Visual C#, use o seguinte 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 você estiver criando um modelo de projeto Visual Basic, use o seguinte 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>
    

    Novo XML faz as seguintes alterações no arquivo:

    • Ele define o Name elemento para o valor Coluna do Site (Este é o nome que aparece no Add New Project caixa de diálogo).

    • Ele adiciona ProjectItem elementos para cada um dos arquivos que estão incluídos em cada instância do projeto.

    Para obter mais informações sobre o conteúdo dos arquivos. vstemplate, consulte Referência de esquema de modelo do Studio Visual.

  3. Salve e feche o arquivo.

Para editar o arquivo ProjectTemplate.csproj ou ProjectTemplate.vbproj

  1. No projeto SiteColumnProjectTemplate, clique duas vezes o arquivo de ProjectTemplate.csproj ou ProjectTemplate.vbproj em Solution Explorer.

  2. Substitua o conteúdo do arquivo com uma das seguintes seções do XML. Se você estiver criando um modelo de projeto do Visual C#, use o seguinte 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 você estiver criando um modelo de projeto Visual Basic, use o seguinte 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>
    

    Novo XML faz as seguintes alterações no arquivo:

    • Ele altera o TargetFrameworkVersion o elemento para especificar o.NET Framework 3.5.

    • Ele adiciona SignAssembly e AssemblyOriginatorKeyFile elementos para assinar a saída do projeto.

    • Ele adiciona o novo Reference elementos para referências de assembly usados por projetos do SharePoint.

    • Ele adiciona novos elementos para cada um dos arquivos padrão no projeto, como, por exemplo, elements e SharePointProjectItem.spdata.

  3. Salve e feche o arquivo.

Criando um pacote VSIX para implantar o modelo de projeto

Para implantar a extensão, use o projeto VSIX a SiteColumnProjectItem a solução para criar um pacote VSIX. Primeiro, configure o pacote VSIX modificando o arquivo source.extension.vsixmanifest que está incluído no projeto VSIX. Em seguida, crie o pacote VSIX pela criação da solução.

Para configurar e criar o pacote VSIX

  1. Em Solution Explorer, clique duas vezes o source.extension.vsixmanifest arquivo no projeto SiteColumnProjectItem.

    Visual StudioAbre o arquivo no editor de manifesto. O arquivo source.extension.vsixmanifest é a base para o arquivo de extension.vsixmanifest é necessária para todos os pacotes VSIX. Para obter mais informações sobre este arquivo, consulte VSX Schema for Extensions.

  2. No Nome do produto , digite Coluna do Site.

  3. No Autor , digite Contoso.

  4. No Descrição , digite projeto de um SharePoint para criar colunas de site.

  5. No conteúdo seção do editor, clique na Adicionar conteúdo botão.

  6. No Adicionar conteúdo caixa de diálogo, clique no Selecione um tipo de conteúdo caixa suspensa e selecione O modelo de projeto.

    ObservaçãoObservação

    Este valor corresponde do ProjectTemplate elemento no arquivo extension.vsixmanifest. Esse elemento identifica a subpasta no pacote de VSIX que contém o modelo de projeto. Para obter mais informações, consulte ProjectTemplate Element (VSX Schema).

  7. Em Selecionar uma fonte de, clique o projeto botão de opção e, em seguida, selecione SiteColumnProjectTemplate em que a caixa de listagem.

  8. Clique em OK.

  9. Clique o Adicionar conteúdo novamente.

  10. No Adicionar conteúdo na caixa de Selecione um tipo de conteúdo caixa de listagem, selecione MEF componente.

    ObservaçãoObservação

    Este valor corresponde do MefComponent elemento no arquivo extension.vsixmanifest. Este elemento Especifica o nome de um assembly de extensão no pacote VSIX. Para obter mais informações, consulte MEFComponent Element (VSX Schema).

  11. Em Selecionar uma fonte de, selecione o projeto botão de opção e, em seguida, selecione ProjectItemTypeDefinition em que a caixa de listagem.

  12. Clique em OK.

  13. Sobre o Build menu, clique em Build Solution. Certifique-se de que o projeto é compilado sem erros.

O modelo de projeto de teste.

Agora você está pronto para testar o modelo de projeto. Primeiro, inicie a solução de SiteColumnProjectItem na instância experimental do Visual Studio de depuração. Em seguida, testar o Coluna do Site o projeto na instância experimental do Visual Studio. Finalmente, construir e executar o projeto do SharePoint para verificar se a coluna de site funciona como esperado.

Para iniciar a depuração da solução

  1. Reinicie o Visual Studio com privilégios de administrador e abra a solução de SiteColumnProjectItem.

  2. Abra o arquivo de código de SiteColumnProjectItemTypeProvider e adicionar um ponto de interrupção para a primeira linha do código de InitializeType método.

  3. Pressione F5 para iniciar a depuração.

    Visual Studio instala a extensão %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Site Column\1.0 e inicia uma instância experimental do Visual Studio. Você testará o item de projeto nesta instância do Visual Studio.

Para testar o projeto em Visual Studio

  1. Na instância experimental do Visual Studio, sobre o arquivo , aponte para novae, em seguida, clique em projeto.

  2. Expanda Visual C# ou Visual Basic (dependendo do idioma que oferece suporte a seu modelo de projeto), expanda SharePointe em seguida, clique em 2010.

  3. Na lista de modelos de projeto, selecione Coluna do Site.

  4. No nome , digite SiteColumnTest.

  5. Clique em OK. Um novo projeto aparece na Solution Explorer com um item de projeto chamado campo1.

  6. Verificar que o código na instância de Visual Studio pára no ponto de interrupção que você definiu anteriormente na InitializeType método. Pressione F5 para continuar a depurar o projeto.

  7. Em Solution Explorer, clique na campo1 nó e pressione F4. O Propriedades janela é aberta.

  8. Verifique a propriedade A propriedade de exemplo aparece na lista de propriedades.

Para testar a coluna de site do SharePoint

  1. Em Solution Explorer, clique na SiteColumnTest nó.

  2. No Propriedades janela, clique em Avançar para caixa de texto do URL do Site propriedade e o tipo de https://localhost. Especifica o site do SharePoint local no computador de desenvolvimento que você deseja usar para depuração.

    ObservaçãoObservação

    O URL do Site propriedade está vazia por padrão porque o modelo de projeto de coluna do Site não fornece um Assistente para coletar esse valor quando o projeto é criado. Para saber como adicionar um assistente que faz o desenvolvedor para esse valor e define essa propriedade no novo projeto, consulte Demonstra Passo a passo: A criação de um Item de projeto da coluna de Site com um modelo de projeto, parte 2.

  3. Pressione F5. A coluna de site é empacotada e implantada no site do SharePoint especificado pelo URL do Site a propriedade do projeto. O navegador da Web abre para a página padrão deste site.

    ObservaçãoObservação

    Se o Desativado de depuração de Script caixa de diálogo é exibida, clique em Sim para continuar a depurar o projeto.

  4. Sobre o Ações do Site menu, clique em Configurações do Site.

  5. Em galerias, clique em colunas de Site.

  6. Na lista de colunas de site, verifique se há um Colunas personalizadas o grupo que contém uma coluna chamada SiteColumnTest.

  7. Feche o navegador da Web.

Limpando o computador de desenvolvimento

Após terminar o teste do projeto, remova o modelo de projeto da instância experimental do Visual Studio.

Para limpar o computador de desenvolvimento

  1. Na instância experimental do Visual Studio, sobre o Ferramentas menu, clique em Extension Manager.

    O Extension Manager abre a caixa de diálogo.

  2. Na lista de extensões, clique em Coluna do Sitee em seguida, clique em desinstalar.

  3. Na caixa de diálogo que aparece, clique em Sim para confirmar que você deseja desinstalar a extensão.

  4. Clique em Reiniciar agora para concluir a desinstalação.

  5. Feche as duas instâncias de Visual Studio (a instância experimental e a instância do Visual Studio que abriu a solução de SiteColumnProjectItem).

Próximas etapas

Depois de concluir este passo a passo, você pode adicionar um Assistente para o modelo de projeto. Quando um usuário cria um projeto de coluna do Site, o assistente solicita ao usuário a URL do site a ser usado para depuração e se a nova solução está em modo seguro e o assistente configura o novo projeto com essas informações. O assistente também coleta informações sobre a coluna (como, por exemplo, o tipo base e o grupo no qual a lista de coluna na Galeria de coluna de site) e adiciona essas informações ao arquivo elements no novo projeto. Para obter mais informações, consulte Demonstra Passo a passo: A criação de um Item de projeto da coluna de Site com um modelo de projeto, parte 2.

Consulte também

Outros recursos

Demonstra Passo a passo: A criação de um Item de projeto da coluna de Site com um modelo de projeto, parte 2

Definindo tipos de Item de projeto do SharePoint personalizados

Criando modelos de Item e projeto para os itens de projeto do SharePoint

Salvar dados em extensões do sistema de projeto do SharePoint

A associação de dados personalizados com extensões de ferramentas do SharePoint