다음을 통해 공유


ProvideLanguageCodeExpansionAttribute 클래스

정의

코드 조각에 대한 언어 서비스 지원을 등록합니다.

public ref class ProvideLanguageCodeExpansionAttribute sealed : Microsoft::VisualStudio::Shell::RegistrationAttribute
public ref class ProvideLanguageCodeExpansionAttribute sealed : Microsoft::VisualStudio::Shell::RegistrationAttribute
[System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class ProvideLanguageCodeExpansionAttribute : Microsoft.VisualStudio.Shell.RegistrationAttribute
[<System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type ProvideLanguageCodeExpansionAttribute = class
    inherit RegistrationAttribute
Public NotInheritable Class ProvideLanguageCodeExpansionAttribute
Inherits RegistrationAttribute
상속
ProvideLanguageCodeExpansionAttribute
특성

예제

이 예제에서는 이 사용자 정의 특성을 사용하여 언어 서비스에 대한 코드 조각에 대한 지원을 등록하는 방법을 보여 줍니다.

참고

Visual C#을 사용하면 이름의 "특성" 부분을 삭제하여 사용자 정의 특성의 약식 형식을 사용할 수 있습니다. 이 약식 양식은 이 클래스 전체의 다른 모든 예제에서 사용됩니다.

using Microsoft.VisualStudio.Shell;  

namespace MyLanguagePackage  
{  
    internal class MyConstants  
    {  
        public const string languageName           = "MyLanguage";  
        public const int    languageNameResourceID = 106;  
        public const string languageIdentifier     = "mylanguage";  
        public const string snippetsIndexFilePath   = @"%InstallRoot%\MyLanguage\SnippetsIndex.xml";  
    }  

    [ProvideCodeExpansion(typeof(MyLanguageService),  
                            MyConstants.languageName,  
                            MyConstants.languageNameResourceID,  
                            MyConstants.languageIdentifier,  
                            MyConstants.snippetsIndexFilePath,  
        // Optional code expansion properties  
        SearchPaths = @"%InstallRoot%\MyLanguage\Snippets\%LCID%\Snippets;" +  
                      @"\%MyDocs%\Code Snippets\MyLanguage\My Code Snippets";  
                         )]  

    class MyLanguagePackage  
    {  
    }  
}  

설명

이 사용자 정의 특성(C#과 관련됨)은 Visual Studio에 코드 조각에 대한 언어 서비스의 지원을 등록하는 데 필요한 정보를 제공하는 데 사용됩니다. 이 특성에 지정된 값은 어셈블리에 메타데이터로 저장됩니다. 이 메타데이터는 나중에 regpkg.exe 프로그램(VSIP SDK의 일부)과 같은 프로그램에서 Visual Studio에 언어 서비스에 대해 알려주는 해당 레지스트리 키 및 항목을 만드는 데 사용됩니다.

의 영향을 받는 ProvideLanguageCodeExpansionAttribute 레지스트리 항목은 다음 레지스트리 키 아래에 있습니다.

HKEY_LOCAL_MACHINE\  
  SOFTWARE\  
    Microsoft\  
      VisualStudio\  
        [X.Y]\  
          Languages\  
            CodeExpansions\  
              [language name]\  
                (Default)    = reg_sz: [Language Service GUID]  
                DisplayName  = reg_sz: [language name resource ID]  
                IndexPath    = reg_sz: [path to snippet index file]  
                Package      = reg_sz: [Package GUID]  
                LangStringID = reg_sz: [language identifier]  
                Paths\  
                  (Default)       = reg_sz:  
                  [language name] = reg_sz: [paths to snippets]  

위치:

  • [X.Y] 는 Visual Studio 버전(예: 8.0Exp)입니다.

  • [언어 이름] 은 언어의 이름입니다(클래스 생성자에 대한 두 번째 매개 변수에 ProvideLanguageCodeExpansionAttribute 지정된 대로).

  • [언어 이름 리소스 ID] 는 표시 목적으로 사용되는 언어 이름의 리소스 ID이므로 지역화할 수 있습니다.

  • [코드 조각 인덱스 파일 경로] 는 코드 조각의 위치를 설명하는 인덱스 파일의 전체 경로입니다.

  • [언어 식별자] 는 모든 코드 조각과 코드 조각 인덱스 파일을 표시하는 데 사용되는 문자열입니다. 이 문자열은 코드 조각 집합을 특정 언어 서비스와 연결하는 데 사용됩니다.

  • [코드 조각에 대한 경로] 인덱스 파일을 사용할 수 없는 경우 코드 조각을 검색할 반콜론으로 구분된 경로 목록입니다.

경로에는 Visual Studio에 설치된 루트 및 사용자의 내 문서 위치와 같은 위치를 가리키는 대체 변수가 포함될 수 있습니다. 이러한 대체 변수 에 대한 자세한 내용은 레거시 언어 서비스의 코드 조각 지원을 참조하세요.

클래스 생성자는 필요한 최소 매개 변수를 지정합니다. 사용자 정의 특성 클래스는 선택적 명명된 매개 변수도 지원합니다. 이러한 명명된 매개 변수는 필요한 매개 변수 다음에 생성자의 매개 변수 목록에 지정됩니다. get 및 set 연산자를 모두 지원하는 이 클래스의 모든 속성을 명명된 매개 변수로 지정할 수 있습니다. 이 예제에서는 명명된 매개 변수를 사용하는 방법을 보여 있습니다.

언어 서비스에는 다음과 같은 사용자 정의 특성이 사용됩니다.

attribute Description
ProvideLanguageServiceAttribute Visual Studio에 언어 서비스를 등록하고 지원되는 기능을 지정합니다.
ProvideLanguageExtensionAttribute 파일 확장자를 언어 서비스와 연결합니다.
ProvideLanguageEditorOptionPageAttribute 언어 서비스와 관련된 옵션 대화 상자의 속성 노드 또는 페이지를 지정합니다.
ProvideLanguageCodeExpansionAttribute 언어 서비스에서 코드 조각을 지원할 위치 정보를 지정합니다.
ProvideServiceAttribute 언어 서비스를 Visual Studio 서비스로 등록합니다. 관리 코드에 제공된 모든 서비스는 이 특성을 사용합니다.

상속자 참고

이 특성 클래스는 에서 상속할 수 없으므로 구현할 것이 없습니다.

호출자 참고

이 특성 클래스는 모든 클래스에 나타날 수 있지만 일반적으로 기본 VSPackage 클래스에 적용됩니다. 이 특성은 한 번만 표시되어야 합니다.

생성자

ProvideLanguageCodeExpansionAttribute(Object, String, Int32, String, String)

ProvideLanguageCodeExpansionAttribute 클래스의 새 인스턴스를 초기화합니다.

속성

ForceCreateDirs

만들어야 하는 디렉터리 또는 디렉터리가 포함된 세미콜론으로 구분된 문자열을 가져오거나 설정합니다.

LanguageName

언어의 이름을 가져옵니다.

LanguageServiceSid

언어 서비스의 GUID를 가져옵니다.

SearchPaths

코드 조각을 검색할 기본 경로를 포함하는 세미콜론으로 구분된 문자열을 가져오거나 설정합니다.

ShowRoots

코드 조각의 루트를 표시할지 여부를 가져오거나 설정합니다.

TypeId

RegistrationAttribute 파생 클래스가 System.ComponentModel.TypeDescriptor.GetAttributes(...)에서 작동하도록 하려면 TypeID 속성을 재정의합니다. 이 속성에서 파생된 특성은 클래스에 적용할 수 있는 인스턴스에 대한 더 나은 제어가 필요한 경우에만 이 속성을 재정의해야 합니다.

(다음에서 상속됨 RegistrationAttribute)

메서드

GetPackageRegKeyPath(Guid)

VSPackage의 레지스트리 경로(애플리케이션의 레지스트리 루트를 기준으로)를 가져옵니다.

(다음에서 상속됨 RegistrationAttribute)
Register(RegistrationAttribute+RegistrationContext)

클래스 생성자가 지정한 대로 모든 레지스트리 키와 항목을 만듭니다.

Unregister(RegistrationAttribute+RegistrationContext)

클래스 생성자가 지정한 대로 모든 레지스트리 키와 항목을 제거합니다.

적용 대상