Visual Studio에서 SharePoint 도구에 대한 확장 배포

SharePoint 도구 확장을 배포하려면 확장 어셈블리 및 확장과 함께 배포할 다른 모든 파일이 포함된 VSIX(Visual Studio Extension) 패키지를 만듭니다. VSIX 패키지는 OPC(Open Packaging Conventions) 표준을 따르는 압축 파일입니다. VSIX 패키지의 확장명은 .vsix입니다.

VSIX 패키지를 만든 후에는 다른 사용자가 .vsix 파일을 실행하여 확장을 설치할 수 있습니다. 사용자가 확장을 설치하면 모든 파일이 %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0\Extensions 폴더에 설치됩니다. 확장을 배포하려면 VSIX 패키지를 Visual Studio Gallery 웹 사이트에 업로드하거나 네트워크 공유 또는 다른 웹 사이트에서 패키지를 호스팅하는 등의 다른 방법으로 패키지를 고객에게 배포할 수 있습니다.

VSIX 패키지를 만들어 Visual Studio 갤러리에 배포하는 방법에 대한 자세한 내용은 VSIX Deployment를 참조하십시오.

VSIX 패키지는 Visual Studio의 VSIX 프로젝트 템플릿을 사용하여 만들거나 수동으로 만들 수 있습니다.

VSIX 프로젝트를 사용하여 VSIX 패키지 만들기

Visual Studio 2010 SDK에서 제공하는 VSIX 프로젝트 템플릿을 사용하여 SharePoint 도구 확장용 VSIX 패키지를 만들 수 있습니다. VSIX 프로젝트를 사용하면 수동으로 VSIX 패키지를 만들 때보다 다음과 같은 여러 가지 이점이 있습니다.

  • 프로젝트를 빌드할 때 VSIX 패키지가 자동으로 생성됩니다. 패키지에 배포 파일을 추가하고 패키지에 사용할 [Content_Types].xml 파일을 만드는 등의 작업이 자동으로 수행됩니다.

  • 확장 프로젝트와 프로젝트 템플릿 및 항목 템플릿과 같은 기타 파일의 빌드 출력을 VSIX 패키지에 포함하도록 VSIX 프로젝트를 구성할 수 있습니다.

VSIX 프로젝트를 사용하는 방법에 대한 자세한 내용은 VSIX Project Template를 참조하십시오.

프로젝트 구성

기본적으로 VSIX 프로젝트는 VSIX 패키지만 생성하고 어셈블리는 생성하지 않습니다. 따라서 VSIX 프로젝트에서는 대개 SharePoint 도구 확장을 구현하지 않습니다. 일반적으로 적어도 다음 두 프로젝트로 작업합니다.

  • VSIX 프로젝트

  • 확장을 구현하는 클래스 라이브러리 프로젝트

특정 유형의 확장에 대해 추가 프로젝트로 작업할 수도 있습니다.

모든 프로젝트를 같은 Visual Studio 솔루션에 포함하는 경우 VSIX 프로젝트에서 source.extension.vsixmanifest 파일을 수정하여 클래스 라이브러리 프로젝트의 빌드 출력을 포함할 수 있습니다.

VSIX 매니페스트 편집

VSIX 프로젝트에서 source.extension.vsixmanifest 파일을 편집하여 확장에 포함할 모든 항목에 대한 항목을 포함해야 합니다. source.extension.vsixmanifest 파일을 편집하는 경우 파일에서 XML을 편집하기 위한 UI를 제공하는 디자이너에서 파일이 열립니다. 자세한 내용은 VSIX Manifest Designer를 참조하십시오.

source.extension.vsixmanifest 파일에 다음 항목에 대한 항목을 추가해야 합니다.

  • 확장 어셈블리

  • 확장에서 사용하는 모든 SharePoint 명령을 구현하는 어셈블리

  • 확장과 연결된 모든 프로젝트 템플릿 또는 항목 템플릿

  • 확장과 연결된 템플릿에 대한 사용자 지정 마법사

다음 절차에서는 이러한 각 항목에 대한 .vsixmanifest 파일에 항목을 추가하는 방법에 대해 설명합니다.

확장 어셈블리를 포함하려면

  1. VSIX 프로젝트에서 source.extension.vsixmanifest 파일을 두 번 클릭하여 디자이너에서 파일을 엽니다.

  2. 편집기의 콘텐츠 섹션에서 콘텐츠 추가 단추를 클릭합니다.

  3. 콘텐츠 추가 대화 상자의 콘텐츠 형식을 선택하십시오. 목록 상자에서 MEF 구성 요소를 선택합니다.

  4. 소스 선택에서 다음 단계 중 하나를 수행합니다.

    • 확장 어셈블리가 VSIX 프로젝트와 동일한 솔루션에 있는 프로젝트에서 빌드된 경우 프로젝트 라디오 단추를 클릭하고 옆의 목록 상자에서 프로젝트 이름을 선택합니다.

    • 확장 어셈블리가 프로젝트에 파일로 포함되어 있는 경우 프로젝트 내의 파일 라디오 단추를 클릭하고 옆의 목록 상자에서 어셈블리를 선택합니다.

    • 확장 어셈블리가 다른 위치에 있는 경우에는 파일 라디오 단추를 클릭한 다음 파일 선택 대화 상자를 사용하여 어셈블리를 찾아 선택합니다.

  5. 확인을 클릭합니다.

SharePoint 명령 어셈블리를 포함하려면

  1. VSIX 프로젝트에서 source.extension.vsixmanifest 파일을 두 번 클릭하여 디자이너에서 파일을 엽니다.

  2. 편집기의 콘텐츠 섹션에서 콘텐츠 추가 단추를 클릭합니다.

  3. 콘텐츠 추가 대화 상자의 콘텐츠 형식 선택 목록 상자에서 사용자 지정 확장 형식을 선택합니다.

  4. 형식 텍스트 상자에 SharePoint.Commands.v4를 입력합니다. 이 값은 SharePoint 명령이 포함되어 있는 모든 어셈블리에 필요합니다.

  5. 소스 선택에서 다음 단계 중 하나를 수행합니다.

    • 명령 어셈블리가 VSIX 프로젝트와 동일한 솔루션에 있는 프로젝트에서 빌드된 경우 프로젝트 라디오 단추를 클릭하고 옆의 목록 상자에서 명령 프로젝트 이름을 선택합니다.

    • 명령 어셈블리가 프로젝트에 파일로 포함되어 있는 경우 프로젝트 내의 파일 라디오 단추를 클릭하고 옆의 목록 상자에서 어셈블리를 선택합니다.

    • 명령 어셈블리가 다른 위치에 있는 경우에는 파일 라디오 단추를 클릭한 다음 파일 선택 대화 상자를 사용하여 어셈블리를 찾아 선택합니다.

  6. 확인을 클릭합니다.

Visual Studio SDK의 프로젝트 템플릿 또는 항목 템플릿 프로젝트를 사용하여 만든 템플릿을 포함하려면

  1. VSIX 프로젝트에서 source.extension.vsixmanifest 파일을 두 번 클릭하여 디자이너에서 파일을 엽니다.

  2. 편집기의 콘텐츠 섹션에서 콘텐츠 추가 단추를 클릭합니다.

  3. 콘텐츠 추가 대화 상자의 콘텐츠 형식을 선택하십시오. 목록 상자에서 프로젝트 템플릿 또는 항목 템플릿을 선택합니다.

  4. 소스 선택에서 프로젝트 라디오 단추를 클릭하고 그 옆의 목록 상자에서 프로젝트의 이름을 선택합니다.

  5. 확인을 클릭합니다.

  6. 솔루션 탐색기에서 프로젝트 템플릿 또는 항목 템플릿 프로젝트의 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 언로드를 클릭합니다.

  7. 프로젝트 노드를 다시 마우스 오른쪽 단추로 클릭하고 YourTemplateProjectName**.csproj** 편집 또는 YourTemplateProjectName**.vbproj** 편집을 클릭합니다.

  8. 프로젝트 파일에서 다음 VSTemplate 요소를 찾습니다.

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

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

    OutputSubPath 요소는 프로젝트를 빌드할 때 프로젝트 템플릿이 만들어지는 경로의 추가 폴더를 지정합니다. 여기에서 지정한 폴더는 고객이 새 프로젝트 추가 대화 상자에서 SharePoint 노드 아래의 2010 노드를 클릭하는 경우에만 항목 템플릿을 사용할 수 있게 합니다.

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

  11. 솔루션 탐색기에서 프로젝트 템플릿 또는 항목 템플릿 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 다시 로드를 클릭합니다.

수동으로 만든 템플릿을 포함하려면

  1. VSIX 프로젝트에서 템플릿이 포함될 프로젝트에 새 폴더를 추가합니다.

  2. 이 새 폴더 아래에 다음 하위 폴더를 만든 다음 Locale ID 폴더에 템플릿 파일(.zip)을 추가합니다.

         YourTemplateFolder

              SharePoint

                   SharePoint14

                        Locale ID

                             YourTemplateName.zip

    예를 들어 영어(미국) 로캘을 지원하는 ContosoCustomAction.zip이라는 항목 템플릿이 있는 경우 전체 경로는 ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip일 수 있습니다.

  3. 솔루션 탐색기에서 템플릿 파일(YourTemplateName.zip)을 클릭합니다.

  4. 속성 창에서 빌드 작업 속성을 콘텐츠로 설정합니다.

  5. source.extension.vsixmanifest 파일을 두 번 클릭하여 디자이너에서 파일을 엽니다.

  6. 편집기의 콘텐츠 섹션에서 콘텐츠 추가 단추를 클릭합니다.

  7. 콘텐츠 추가 대화 상자의 콘텐츠 형식 선택 목록 상자에서 항목 템플릿 또는 프로젝트 템플릿을 선택합니다.

  8. 소스 선택에서 프로젝트 내의 파일 라디오 단추를 클릭하고 그 옆의 목록 상자에서 템플릿의 전체 경로를 선택합니다. 예를 들어 ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip을 선택합니다.

  9. 확인을 클릭합니다.

프로젝트 템플릿 또는 항목 템플릿에 대한 마법사를 포함하려면

  1. VSIX 프로젝트에서 source.extension.vsixmanifest 파일을 두 번 클릭하여 디자이너에서 파일을 엽니다.

  2. 편집기의 콘텐츠 섹션에서 콘텐츠 추가 단추를 클릭합니다.

  3. 콘텐츠 추가 대화 상자의 콘텐츠 형식을 선택하십시오. 목록 상자에서 템플릿 마법사를 선택합니다.

  4. 소스 선택에서 다음 단계 중 하나를 수행합니다.

    • 마법사 어셈블리가 VSIX 프로젝트와 동일한 솔루션에 있는 프로젝트에서 빌드되는 경우 프로젝트 라디오 단추를 클릭하고 그 옆의 목록 상자에서 프로젝트의 이름을 선택합니다.

    • 마법사 어셈블리가 프로젝트에 파일로 포함되는 경우 프로젝트 내의 파일 라디오 단추를 클릭하고 그 옆의 목록 상자에서 어셈블리를 선택합니다.

    • 마법사 어셈블리가 다른 위치에 있는 경우에는 파일 라디오 단추를 클릭한 다음 파일 선택 대화 상자를 사용하여 어셈블리를 찾아 선택합니다.

  5. 확인을 클릭합니다.

관련 연습

다음 표에는 VSIX 프로젝트를 사용하여 다양한 형식의 SharePoint 도구 확장을 배포하는 방법을 보여 주는 연습이 나와 있습니다.

확장 형식

관련 연습

확장 어셈블리만 포함된 확장

연습: SharePoint 프로젝트 항목 형식 확장

연습: SharePoint 프로젝트 확장 만들기

연습: 서버 탐색기 확장의 SharePoint 클라이언트 개체 모델 호출

SharePoint 명령이 포함된 확장

연습: SharePoint 프로젝트용 사용자 지정 배포 단계 만들기

연습: 서버 탐색기를 확장하여 웹 파트 표시

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

Visual Studio 템플릿이 포함된 확장

연습: 항목 템플릿을 사용하여 사용자 지정 작업 프로젝트 항목 만들기, 1부

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

템플릿 마법사가 포함된 확장

연습: 항목 템플릿을 사용하여 사용자 지정 작업 프로젝트 항목 만들기, 2부

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

수동으로 VSIX 패키지 만들기

SharePoint 도구 확장용 VSIX 패키지를 수동으로 만들려는 경우 다음 단계를 수행합니다.

  1. extension.vsixmanifest 파일, [Content_Types].xml 및 VSIX 패키지 파일(.vsix 파일)을 만듭니다. 자세한 내용은 Anatomy of a VSIX PackageHow to: Manually Package an Extension (VSIX Deployment)를 참조하십시오.

  2. VSIX 패키지에 확장 어셈블리를 추가합니다. 확장에 SharePoint 명령이 포함되어 있으면 SharePoint 명령을 구현하는 어셈블리도 VSIX 패키지에 추가합니다.

  3. extension.vsixmanifest 파일을 수정합니다.

    • Content 요소 아래에 MefComponent 요소를 추가합니다. 요소 값을 VSIX 패키지에서 확장을 구현하는 어셈블리의 상대 경로로 설정합니다. 자세한 내용은 MEFComponent Element (VSX Schema)를 참조하십시오.

    • 확장에 SharePoint 서버 개체 모델을 호출하는 SharePoint 명령이 포함되어 있는 경우 Content 요소 아래에 새 CustomExtension 요소를 추가합니다. 요소 값을 VSIX 패키지에서 SharePoint 명령을 구현하는 어셈블리의 상대 경로로 설정하고 Type 특성을 SharePoint.Commands.v4 값으로 설정합니다. 자세한 내용은 CustomExtension Element (VSX Schema)를 참조하십시오.

    • 확장에 프로젝트 템플릿 또는 항목 템플릿이 포함된 경우 새 ProjectTemplate 또는 ItemTemplate 요소를 Content 요소 아래에 추가합니다. 요소 값을 VSIX 패키지에서 템플릿이 포함된 폴더의 상대 경로로 설정합니다. 자세한 내용은 ProjectTemplate Element (VSX Schema)ItemTemplate Element (VSX Schema)를 참조하십시오.

    • 확장에 프로젝트 템플릿 또는 항목 템플릿에 대한 사용자 지정 마법사가 포함된 경우 새 Assembly 요소를 Content 요소 아래에 추가합니다. 요소 값을 VSIX 패키지에 있는 어셈블리의 상대 경로로 설정하고 AssemblyName 특성을 버전, 문화권 및 공개 키 토큰이 포함된 전체 어셈블리 이름으로 설정합니다. 자세한 내용은 Assembly Element (VSX Schema)를 참조하십시오.

예제

다음 예제에서는 SharePoint 도구 확장에 대한 extension.vsixmanifest 파일의 내용을 보여 줍니다. 이 확장은 Contoso.ProjectExtension.dll이라는 어셈블리에서 구현됩니다. 이 확장은 Contoso.ExtensionCommands.dll이라는 SharePoint 명령 어셈블리와 항목 템플릿을 VSIX 패키지의 ItemTemplates 폴더 아래에 포함합니다. 이 예제에서는 두 어셈블리 모두 VSIX 패키지의 extension.vsixmanifest 파일과 동일한 폴더에 있다고 가정합니다.

<?xml version="1.0" encoding="utf-8"?>
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      Version="1.0.0" xmlns="https://schemas.microsoft.com/developer/vsx-schema/2010">
  <Identifier Id="CustomActionProjectItem.Contoso.b1d75407-01bd-459d-9d04-d12e9113af49">
    <Name>Custom Action Project Item</Name>
    <Author>Contoso</Author>
    <Version>1.0</Version>
    <Description xml:space="preserve">A SharePoint project item that represents a custom action.</Description>
    <Locale>1033</Locale>
    <SupportedProducts>
      <VisualStudio Version="10.0">
        <Edition>Pro</Edition>
      </VisualStudio>
    </SupportedProducts>
    <SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.0" />
  </Identifier>
  <References />
  <Content>
    <MefComponent>Contoso.ProjectExtension.dll</MefComponent>
    <CustomExtension Type="SharePoint.Commands.v4">Contoso.ExtensionCommands.dll</CustomExtension>
    <ItemTemplate>ItemTemplates</ItemTemplate>
  </Content>
</Vsix>

참고 항목

개념

SharePoint 프로젝트 시스템 확장

SharePoint 개체 모델 호출

기타 리소스

서버 탐색기에서 SharePoint 연결 노드 확장

Visual Studio에서 SharePoint 도구에 대한 확장 디버깅