다음을 통해 공유


연습: 프로젝트 템플릿을 사용하여 사이트 열 프로젝트 항목 만들기, 1부

SharePoint 프로젝트는 하나 이상의 SharePoint 프로젝트 항목을 위한 컨테이너입니다.사용자 고유의 SharePoint 프로젝트 항목 형식을 만든 다음 프로젝트 템플릿과 연결하여 Visual Studio에서 SharePoint 프로젝트 시스템을 확장할 수 있습니다.이 연습에서는 사이트 열을 만들기 위한 프로젝트 항목 형식을 정의한 다음 사이트 열 프로젝트 항목이 포함된 새 프로젝트를 만드는 데 사용할 수 있는 프로젝트 템플릿을 만듭니다.

이 연습에서는 다음 작업을 수행합니다.

  • 사이트 열에 대한 새로운 형식의 SharePoint 프로젝트 항목을 정의하는 Visual Studio 확장 만들기.프로젝트 항목 형식에는 속성 창에 표시되는 간단한 사용자 지정 속성이 포함됩니다.

  • 프로젝트 항목에 대한 Visual Studio 프로젝트 템플릿 만들기

  • 프로젝트 템플릿과 확장 어셈블리를 배포하기 위한 VSIX(Visual Studio Extension) 패키지 빌드

  • 프로젝트 항목 디버깅 및 테스트

이 연습은 독립적으로 실행할 수 있습니다.이 연습을 완료한 후에는 프로젝트 템플릿에 마법사를 추가하여 프로젝트 항목을 개선할 수 있습니다.자세한 내용은 연습: 프로젝트 템플릿을 사용하여 사이트 열 프로젝트 항목 만들기, 2부을 참조하십시오.

[!참고]

https://go.microsoft.com/fwlink/?LinkId=191369에서 이 연습에 대한 완료된 프로젝트, 코드 및 기타 파일이 포함된 샘플을 다운로드할 수 있습니다.

사전 요구 사항

이 연습을 완료하려면 개발 컴퓨터에 다음 구성 요소가 필요합니다.

다음 개념을 알고 있으면 연습을 완료하는 데 도움이 되지만 반드시 필요하지는 않습니다.

  • SharePoint의 사이트 열.자세한 내용은 Columns를 참조하십시오.

  • Visual Studio의 프로젝트 템플릿.자세한 내용은 Visual Studio 템플릿 소개을 참조하십시오.

프로젝트 만들기

이 연습을 완료하려면 세 프로젝트를 만들어야 합니다.

  • VSIX 프로젝트이 프로젝트는 사이트 열 프로젝트 항목과 프로젝트 템플릿을 배포하기 위한 VSIX 패키지를 만듭니다.

  • 프로젝트 템플릿 프로젝트.이 프로젝트는 사이트 열 프로젝트 항목이 포함된 새 SharePoint 프로젝트를 만드는 데 사용할 수 있는 프로젝트 템플릿을 만듭니다.

  • 클래스 라이브러리 프로젝트.이 프로젝트는 사이트 열 프로젝트 항목의 동작을 정의하는 Visual Studio 확장을 구현합니다.

먼저 프로젝트를 만들어 연습을 시작합니다.

VSIX 프로젝트를 만들려면

  1. Visual Studio를 시작합니다.

  2. 메뉴 모음에서 파일, 새로 만들기, 프로젝트를 선택합니다.

  3. 상단에 있는 새 프로젝트 대화 상자에서 있는지 확인 하십시오 .NET Framework 4.5 .NET Framework 버전의 목록에서 선택 됩니다.

  4. 확장은 Visual Basic 또는 C# 노드를 다음 선택은 확장성 노드.

    [!참고]

    확장성 노드인 Visual Studio 2012 SDK 설치만 하면 사용할 수 있습니다.자세한 내용은 이 항목의 앞부분에 나오는 사전 요구 사항 단원을 참조하십시오.

  5. 프로젝트 템플릿 목록에서 선택 VSIX 프로젝트.

  6. 이름 상자에 입력 SiteColumnProjectItem, 다음 선택은 확인 단추입니다.

    Visual Studio에서 솔루션 탐색기에 SiteColumnProjectItem 프로젝트를 추가합니다.

프로젝트 템플릿 프로젝트를 만들려면

  1. 솔루션 탐색기, 솔루션 노드 바로 가기 메뉴를 열고 추가, 다음 선택 새 프로젝트.

    [!참고]

    Visual Basic 프로젝트에서는 General, Projects and Solutions, Options Dialog Box에서 솔루션 항상 표시 확인란을 선택한 경우에만 솔루션 탐색기에 솔루션 노드가 표시됩니다.

  2. 상단에 있는 새 프로젝트 대화 상자에서 있는지 확인 하십시오 .NET Framework 4.5 .NET Framework 버전의 목록에서 선택 됩니다.

  3. 확장 된 C# 또는 Visual Basic 노드를 다음 선택은 확장성 노드.

  4. 프로젝트 템플릿 목록에서 선택의 C# 프로젝트 템플릿 또는 Visual Basic 프로젝트 템플릿 템플릿.

  5. 이름 상자에 입력 SiteColumnProjectTemplate, 다음 선택은 확인 단추입니다.

    Visual Studio에서 솔루션에 SiteColumnProjectTemplate 프로젝트를 추가합니다.

  6. 프로젝트에서 Class1 코드 파일을 삭제합니다.

  7. Visual Basic 프로젝트를 만든 경우 프로젝트에서 다음 파일도 삭제합니다.

    • MyApplication.Designer.vb

    • MyApplication.myapp

    • Resources.Designer.vb

    • Resources.resx

    • Settings.Designer.vb

    • Settings.settings

확장 프로젝트를 만들려면

  1. 솔루션 탐색기, 솔루션 노드 바로 가기 메뉴를 열고 추가, 다음 선택 새 프로젝트.

  2. 상단에 있는 새 프로젝트 대화 상자에서 있는지 확인 하십시오 .NET Framework 4.5 .NET Framework 버전의 목록에서 선택 됩니다.

  3. 확장은 C# 또는 Visual Basic 노드를 선택의 Windows 노드를 다음 선택은 클래스 라이브러리 템플릿.

  4. 이름 상자에 입력 ProjectItemTypeDefinition 다음 선택은 확인 단추입니다.

    Visual Studio에서 솔루션에 ProjectItemTypeDefinition 프로젝트를 추가하고 기본 Class1 코드 파일을 엽니다.

  5. 프로젝트에서 Class1 코드 파일을 삭제합니다.

확장 프로젝트 구성

코드 파일 및 어셈블리 참조를 추가하여 확장 프로젝트를 구성합니다.

프로젝트를 구성하려면

  1. ProjectItemTypeDefinition 프로젝트에 이름이 지정 된 코드 파일 추가 SiteColumnProjectItemTypeProvider.

  2. 메뉴 표시줄에서 선택 프로젝트, 참조 추가.

  3. 참조 관리자-ProjectItemTypeDefinition 대화 상자에서 확장의 어셈블리 노드를 선택의 Framework 노드를 선택한 다음 선택에서 System.ComponentModel.Composition 확인란.

  4. 선택의 확장 Microsoft.VisualStudio.SharePoint 어셈블리 옆에 있는 확인란을 선택 하 고 선택 하는 노드에 확인 단추.

새 SharePoint 프로젝트 항목 형식 정의

새 프로젝트 항목 형식의 동작을 정의하기 위해 ISharePointProjectItemTypeProvider 인터페이스를 구현하는 클래스를 만듭니다.새 프로젝트 항목 형식을 정의하려는 경우 항상 이 인터페이스를 구현합니다.

새 SharePoint 프로젝트 항목 형식을 정의하려면

  • 에 있는 SiteColumnProjectItemTypeProvider 코드 파일, 기본 코드를 다음 코드로 바꿉니다 및 다음 파일을 저장 합니다.

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

Visual Studio 프로젝트 템플릿 만들기

프로젝트 서식 파일을 만들어 사용 하면 다른 개발자가 사이트 열 프로젝트 항목이 포함 된 SharePoint 프로젝트를 만들 수 있습니다.SharePoint 프로젝트 템플릿을.csproj 또는.vbproj 및.vstemplate 파일을 SharePoint 프로젝트에 특정 파일이 같은 Visual Studio 모든 프로젝트에 필요한 파일이 포함 되어 있습니다.자세한 내용은 SharePoint 프로젝트 항목에 대한 항목 템플릿 및 프로젝트 템플릿 만들기을 참조하십시오.

이 절차에서는 SharePoint 프로젝트에 관련 된 파일을 생성 하 여 빈 SharePoint 프로젝트를 만듭니다.이 프로젝트에서 생성 되는 템플릿을 포함 하는 SiteColumnProjectTemplate 프로젝트에 이러한 파일이 다음 추가 합니다.SiteColumnProjectTemplate 프로젝트 파일에서 프로젝트 템플릿이 표시 되는 위치를 지정 하려면 구성할 수도 있는 새 프로젝트 대화 상자.

프로젝트 템플릿의 파일을 만들려면

  1. 두 번째 인스턴스를 시작 Visual Studio 관리 자격 증명을 사용 합니다.

  2. 라는 SharePoint 2010 프로젝트를 만들고 BaseSharePointProject.

    중요중요

    SharePoint 사용자 지정 마법사를 선택 하지는 팜 솔루션으로 배포 옵션 단추.

  3. 프로젝트에 빈 요소 항목을 추가 하 고 항목 이름을 field1<field2.

  4. 프로젝트를 저장 한 다음 두 번째 인스턴스를 닫습니다 Visual Studio.

  5. 인스턴스의 Visual Studio SiteColumnProjectItem 솔루션 열기에이 솔루션 탐색기, 바로 가기 메뉴를 열고를 SiteColumnProjectTemplate 프로젝트 노드를 선택 추가, 다음 선택 기존 항목.

  6. 에 있는 기존 항목 추가 대화 상자에서 파일 확장명 목록을 열고 선택 모든 파일 (*. *).

  7. BaseSharePointProject 프로젝트에 포함 된 디렉터리에서 key.snk 파일을 선택 하 고 선택 된 추가 단추입니다.

    [!참고]

    이 연습에서는 프로젝트 템플릿을 만드는 동일한 key.snk 파일을 사용 하 여 서식 파일을 사용 하 여 만든 각 프로젝트에 서명 하.프로젝트 인스턴스마다 다른 key.snk 파일을 만들려면이 샘플을 확장 하는 방법을 보려면 연습: 프로젝트 템플릿을 사용하여 사이트 열 프로젝트 항목 만들기, 2부.

  8. 5-8단계를 반복하여 BaseSharePointProject 디렉터리의 지정된 하위 폴더에 있는 다음 파일을 추가합니다.

    • \Field1\Elements.xml

    • \Field1\SharePointProjectItem.spdata

    • \Features\Feature1\Feature1.feature

    • \Features\Feature1\Feature1.Template.xml

    • \Package\Package.package

    • \Package\Package.Template.xml

    이러한 파일은 SiteColumnProjectTemplate 프로젝트에 직접 추가; Field1, 기능 또는 패키지 하위 프로젝트에 다시 하지 마십시오.이러한 파일에 대한 자세한 내용은 SharePoint 프로젝트 항목에 대한 항목 템플릿 및 프로젝트 템플릿 만들기를 참조하십시오.

어떻게 개발자 프로젝트 템플릿을 새 프로젝트 대화 상자에서 검색을 구성 하려면

  1. 솔루션 탐색기, 바로 가기 메뉴를 열고를 SiteColumnProjectTemplate 프로젝트 노드 및 다음 선택 프로젝트 언로드.임의의 파일에 변경 내용을 저장할지 묻는 메시지가 표시 되 면 선택 된 단추입니다.

  2. 바로 가기 메뉴를 열고를 SiteColumnProjectTemplate 노드를 다시 다음 선택 편집 SiteColumnProjectTemplate.csproj 또는 편집 SiteColumnProjectTemplate.vbproj.

  3. 프로젝트 파일에서 다음 찾기 VSTemplate 요소입니다.

    <VSTemplate Include="SiteColumnProjectTemplate.vstemplate">
    
  4. 이 요소를 다음 XML로 바꿉니다.

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

    OutputSubPath 요소는 프로젝트를 빌드할 때 프로젝트 템플릿이 만들어지는 경로의 추가 폴더를 지정합니다.여기에 지정 된 폴더 고객 열면 프로젝트 템플릿을 사용할 수 있게는 새 프로젝트 대화 상자에서 확장은 SharePoint 노드를 다음 선택은 2010 노드.

  5. 파일을 저장한 후 닫습니다.

  6. 솔루션 탐색기, 바로 가기 메뉴를 열고를 SiteColumnProjectTemplate 프로젝트를 하 고 선택 프로젝트 다시 로드.

프로젝트 템플릿 파일 편집

SiteColumnProjectTemplate 프로젝트에서 프로젝트 서식 파일의 동작을 정의 하는 다음과 같은 파일이 편집:

  • AssemblyInfo.cs 또는 AssemblyInfo.vb

  • Elements.xml

  • SharePointProjectItem.spdata

  • Feature1.feature

  • Package.package

  • SiteColumnProjectTemplate.vstemplate

  • ProjectTemplate.csproj 또는 ProjectTemplate.vbproj

다음 절차에서 이러한 파일 중 일부 대체 가능 매개 변수를 추가 하는 합니다.대체 가능한 매개 변수는 달러 기호 ($) 문자로 시작 하는 토큰입니다.사용자가이 프로젝트 템플릿을 사용 하 여 프로젝트를 만들 때 Visual Studio 이러한 매개 변수를 새 프로젝트에서를 자동으로 특정 값으로 바꿉니다.자세한 내용은 대체 가능 매개 변수을 참조하십시오.

AssemblyInfo.cs 또는 AssemblyInfo.vb 파일을 편집하려면

  1. SiteColumnProjectTemplate 프로젝트 AssemblyInfo.cs 또는 AssemblyInfo.vb 파일 열고 그 위쪽에 다음 문을 추가 합니다.

    Imports System.Security
    
    using System.Security;
    

    SharePoint 프로젝트의 샌드박스 솔루션 속성이 True로 설정된 경우 Visual Studio에서는 System.Security.AllowPartiallyTrustedCallersAttribute를 AssemblyInfo 코드 파일에 추가합니다.그러나 AssemblyInfo 코드 파일에서 프로젝트 템플릿 가져올 수 없습니다의 System.Security 기본적으로 네임 스페이스입니다.컴파일 오류를 방지하기 위해 이 using 또는 Imports 문을 추가해야 합니다.

  2. 파일을 저장한 후 닫습니다.

Elements.xml 파일을 편집하려면

  1. SiteColumnProjectTemplate 프로젝트의 Elements.xml 파일의 내용을 다음 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>
    

    새 XML에서는 사이트 열의 이름, 기본 형식 및 갤러리에서 사이트 열을 나열할 그룹을 정의하는 Field 요소를 추가합니다.이 파일의 내용에 대한 자세한 내용은 Field Definition Schema를 참조하십시오.

  2. 파일을 저장한 후 닫습니다.

SharePointProjectItem.spdata 파일을 편집하려면

  1. SiteColumnProjectTemplate 프로젝트의 SharePointProjectItem.spdata 파일의 내용을 다음 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>
    

    새 XML에서는 파일을 다음과 같이 변경합니다.

    • 변경의 Type 특성의 ProjectItem 요소에 전달 된 동일한 문자열에는 SharePointProjectItemTypeAttribute 프로젝트 항목 정의에 (의 SiteColumnProjectItemTypeProvider 이 연습의 앞부분에서 만든 클래스).

    • 제거는 SupportedTrustLevels 및 SupportedDeploymentScopes 에서 특성은 ProjectItem 요소입니다.신뢰 수준과 배포 범위가 ProjectItemTypeDefinition 프로젝트의 SiteColumnProjectItemTypeProvider 클래스에 지정되기 때문에 이러한 특성 값은 필요하지 않습니다.

    .spdata 파일의 내용에 대한 자세한 내용은 SharePoint 프로젝트 항목 스키마 참조를 참조하십시오.

  2. 파일을 저장한 후 닫습니다.

Feature1.feature 파일을 편집하려면

  1. SiteColumnProjectTemplate 프로젝트의 Feature1.feature 파일의 내용을 다음 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>
    

    새 XML에서는 파일을 다음과 같이 변경합니다.

    • 값을 변경의 Id 및 featureId 의 특성은 feature 요소에 $guid4$.

    • 값을 변경에 itemId 특성은 projectItemReference 요소에 $guid2$.

    .feature 파일에 대한 자세한 내용은 SharePoint 프로젝트 항목에 대한 항목 템플릿 및 프로젝트 템플릿 만들기를 참조하십시오.

  2. 파일을 저장한 후 닫습니다.

Package.package 파일을 편집하려면

  1. SiteColumnProjectTemplate 프로젝트의 Package.package 파일의 내용을 다음 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>
    

    새 XML에서는 파일을 다음과 같이 변경합니다.

    • 값을 변경의 Id 및 solutionId 의 특성은 package 요소에 $guid3$.

    • 값을 변경에 itemId 특성은 featureReference 요소에 $guid4$.

    .package 파일에 대한 자세한 내용은 SharePoint 프로젝트 항목에 대한 항목 템플릿 및 프로젝트 템플릿 만들기를 참조하십시오.

  2. 파일을 저장한 후 닫습니다.

SiteColumnProjectTemplate.vstemplate 파일을 편집하려면

  1. SiteColumnProjectTemplate 프로젝트의 SiteColumnProjectTemplate.vstemplate 파일의 내용을 다음 단원에서는 XML의 대체 합니다.

    • C# 프로젝트 템플릿을 만드는 경우 다음 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>
    
    • Visual Basic 프로젝트 템플릿을 만드는 경우 다음 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>
    

    새 XML에서는 파일을 다음과 같이 변경합니다.

    • 세트는 Name 요소 값 사이트 열.(이 이름이 표시 된 새 프로젝트 대화 상자).

    • 추가 ProjectItem 요소를 각 filethat의 각 프로젝트 인스턴스를 포함 합니다.

    • "Http://schemas.microsoft.com/developer/vstemplate/2005" 네임 스페이스를 사용합니다.이 솔루션의 다른 프로젝트 파일은 "https://schemas.microsoft.com/developer/msbuild/2003" 네임 스페이스를 사용합니다.따라서 XML 스키마 경고 메시지를 생성 합니다 있지만이 연습에서는 무시 됩니다.

    .vstemplate 파일의 내용에 대한 자세한 내용은 Visual Studio 템플릿 스키마 참조를 참조하십시오.

  2. 파일을 저장한 후 닫습니다.

ProjectTemplate.csproj 또는 ProjectTemplate.vbproj 파일을 편집하려면

  1. SiteColumnProjectTemplate 프로젝트에서 ProjectTemplate.csproj 파일이 나 ProjectTemplate.vbproj 파일의 내용을 다음 단원에서는 XML의 대체 합니다.

    • C# 프로젝트 템플릿을 만드는 경우 다음 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. Visual Basic 프로젝트 템플릿을 만드는 경우 다음 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>
    

    새 XML에서는 파일을 다음과 같이 변경합니다.

    • 사용 하는 TargetFrameworkVersion .NET Framework 3.5 4.5 않는 지정 하는 요소입니다.

    • 추가 SignAssembly 및 AssemblyOriginatorKeyFile 프로젝트 출력에 서명 하는 요소입니다.

    • 추가 Reference 어셈블리에 대 한 요소 참조 프로젝트에서 사용 하는 SharePoint.

    • Elements.xml 및 Sharepointprojectitem.spdata와 같은 프로젝트의 각 기본 파일의 요소를 추가합니다.

  2. 파일을 저장한 후 닫습니다.

프로젝트 템플릿을 배포하기 위한 VSIX 패키지 만들기

확장을 배포하려면 SiteColumnProjectItem 솔루션에서 VSIX 프로젝트를 사용하여 VSIX 패키지를 만듭니다.먼저 VSIX 프로젝트에 포함된 source.extension.vsixmanifest 파일을 수정하여 VSIX 패키지를 구성합니다.그런 다음 솔루션을 빌드하여 VSIX 패키지를 만듭니다.

VSIX 패키지를 구성하고 만들려면

  1. 솔루션 탐색기에 있는 SiteColumnProjectItem 프로젝트에 매니페스트 편집기에서 source.extension.vsixmanifest 파일을 엽니다.

    Source.extension.vsixmanifest 파일이 모든 VSIX 패키지를 요구 하는 extension.vsixmanifest 파일에 대 한 기반이 됩니다.이 파일에 대한 자세한 내용은 VSIX 확장 스키마 참조를 참조하십시오.

  2. 에 있는 제품명 상자에 입력 사이트 열.

  3. 에 있는 작성자 상자에 입력 Contoso.

  4. 에 있는 설명 상자에 입력 사이트 열 만들기에 대 한 SharePoint 프로젝트.

  5. 선택은 자산 탭을 클릭 한 다음 선택은 New 단추.

    를 추가 하는 새로운 자산 대화 상자가 열립니다.

  6. 에 있는 유형 목록에서 선택 Microsoft.VisualStudio.ProjectTemplate.

    [!참고]

    이 값은 extension.vsixmanifest 파일의 ProjectTemplate 요소에 해당합니다.이 요소는 프로젝트 템플릿이 포함된 VSIX 패키지의 하위 폴더를 식별합니다.자세한 내용은 ProjectTemplate Element (VSX Schema)을 참조하십시오.

  7. 에 있는 원본 목록에서 선택 현재 솔루션의 프로젝트에.

  8. 프로젝트 목록 및 선택 SiteColumnProjectTemplate, 다음 선택은 확인 단추.

  9. 선택 된 New 단추를 다시 클릭 합니다.

    를 추가 하는 새로운 자산 대화 상자가 열립니다.

  10. 에 있는 유형 목록에서 선택 Microsoft.VisualStudio.MefComponent.

    [!참고]

    이 값은 extension.vsixmanifest 파일의 MefComponent 요소에 해당합니다.이 요소는 VSIX 패키지의 확장 어셈블리 이름을 지정합니다.자세한 내용은 MEFComponent Element을 참조하십시오.

  11. 에 있는 원본 목록에서 선택 현재 솔루션의 프로젝트에.

  12. 프로젝트 목록에서 선택 ProjectItemTypeDefinition, 다음 선택은 확인 단추입니다.

  13. 메뉴 표시줄에서 선택 빌드, 솔루션 빌드, 및 다음 프로젝트가 오류 없이 컴파일되는지 확인 합니다.

프로젝트 템플릿 테스트

이제 프로젝트 템플릿을 테스트할 준비가 되었습니다.우선 실험 모드의 Visual Studio 인스턴스에서 SiteColumnProjectItem 솔루션 디버깅을 시작합니다.그런 다음 실험 모드의 Visual Studio 인스턴스에서 사이트 열 프로젝트를 테스트합니다.마지막으로, SharePoint 프로젝트를 빌드 및 실행하여 사이트 열이 예상대로 작동하는지 확인합니다.

솔루션 디버깅을 시작하려면

  1. Visual Studio 관리자 자격 증명으로 다시 시작 하 고 SiteColumnProjectItem 솔루션을 엽니다.

  2. SiteColumnProjectItemTypeProvider 코드 파일에서 코드의 첫째 줄에 중단점을 추가 InitializeType 메서드를 다음 선택은 F5 디버깅을 시작 하는 키입니다.

    Visual Studio에서는 확장을 %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Site Column\1.0에 설치하고 실험 모드의 Visual Studio 인스턴스를 시작합니다.이 Visual Studio 인스턴스에서 프로젝트 항목을 테스트합니다.

Visual Studio에서 프로젝트를 테스트하려면

  1. Visual Studio 실험적 인스턴스에서 메뉴 표시줄에서 선택 파일, New, 프로젝트.

  2. 확장은 C# 또는 Visual Basic (프로젝트 템플릿을 지 원하는 언어에 따라), 노드를 확장은 SharePoint 노드를 다음 선택은 2010 노드.

  3. 프로젝트 템플릿 목록에서 선택 된 사이트 열 템플릿.

  4. 이름 상자에 입력 SiteColumnTest 다음 선택은 확인 단추입니다.

    솔루션 탐색기, 새 프로젝트 라는 프로젝트 항목과 나타납니다 Field1.

  5. 코드 Visual Studio 인스턴스를 이전에 설정한 중단점에서 중지 하는지 확인은 InitializeType 메서드를 다음 선택은 F5 프로젝트에 디버깅을 계속 하려면 키.

  6. 솔루션 탐색기, 선택은 Field1 노드를 다음 선택은 F4 키.

    속성 창이 열립니다.

  7. 속성 목록에서 확인 속성 속성은 나타납니다.

SharePoint에서 사이트 열을 테스트하려면

  1. 솔루션 탐색기, 선택은 SiteColumnTest 노드.

  2. 속성 창 옆에 있는 텍스트 상자는 사이트 URL 속성, 입력 https://localhost.

    이 단계 디버깅에 사용 하려는 개발 컴퓨터의 로컬 SharePoint 사이트를 지정 합니다.

    [!참고]

    사이트 URL 사이트 열 프로젝트 템플릿의 프로젝트를 만들 때이 값을 수집 하기 위한 마법사를 제공 하지 않으므로 속성은 기본적으로 비어 있습니다.개발자에게 이 값을 물은 다음 새 프로젝트에서 이 속성을 구성하는 마법사를 추가하는 방법에 대한 자세한 내용은 연습: 프로젝트 템플릿을 사용하여 사이트 열 프로젝트 항목 만들기, 2부를 참조하십시오.

  3. 선택 된 F5 키.

    사이트 열 포장 하에 지정 된 SharePoint 사이트에 배포 된 사이트 URL 프로젝트의 속성입니다.웹 브라우저가이 사이트의 기본 페이지를 엽니다.

    [!참고]

    경우는 스크립트 디버깅 사용 안 함 대화 상자가 나타나면 선택은 프로젝트에 디버깅을 계속 하려면 단추.

  4. 에 있는 사이트 작업 메뉴를 선택 사이트 설정.

  5. 사이트 설정 아래 페이지의 갤러리 목록에서 선택의 사이트 열 링크.

  6. 사이트 열의 목록에 있는지 확인은 사용자 지정 열 라는 열을 포함 하는 그룹 SiteColumnTest.

  7. 웹 브라우저를 닫습니다.

개발 컴퓨터 정리

프로젝트의 테스트를 마쳤으면 실험 모드의 Visual Studio 인스턴스에서 프로젝트 템플릿을 제거합니다.

개발 컴퓨터를 정리하려면

  1. Visual Studio 실험적 인스턴스에서 메뉴 표시줄에서 선택 도구, 확장 및 업데이트.

    확장 및 업데이트 대화 상자가 열립니다.

  2. 확장명 목록에서 선택의 사이트 열 확장명을 다음 선택은 제거 단추.

  3. 나타나는 대화 상자에서 선택 된 확장명을 제거할 것인지 확인 하는 버튼.

  4. 선택 된 닫기 단추 제거를 완료 합니다.

  5. Visual Studio (Visual Studio SiteColumnProjectItem 솔루션에 열려 있는 인스턴스 및 실험적 인스턴스)을 모두 닫습니다.

다음 단계

이 연습을 완료한 후에는 프로젝트 템플릿에 마법사를 추가할 수 있습니다.사용자가 사이트 열 프로젝트를 만들 때 마법사에서는 사용자에게 디버깅에 사용할 사이트 URL과 새 솔루션에 샌드박스가 적용되는지 여부를 묻고 이 정보를 사용하여 새 프로젝트를 구성합니다.또한 마법사에서는 열에 대한 정보(예: 기본 형식 및 사이트 열 갤러리에서 열을 나열할 그룹)를 수집하고 이 정보를 새 프로젝트의 Elements.xml 파일에 추가합니다.자세한 내용은 연습: 프로젝트 템플릿을 사용하여 사이트 열 프로젝트 항목 만들기, 2부을 참조하십시오.

참고 항목

작업

연습: 프로젝트 템플릿을 사용하여 사이트 열 프로젝트 항목 만들기, 2부

개념

사용자 지정 SharePoint 프로젝트 항목 형식 정의

SharePoint 프로젝트 항목에 대한 항목 템플릿 및 프로젝트 템플릿 만들기

SharePoint 프로젝트 시스템의 확장에 데이터 저장

SharePoint 도구 확장과 사용자 지정 데이터 연결