프로젝트 형식 등록
새 프로젝트 형식을 만들 때 Visual Studio에서 프로젝트 형식을 인식하고 사용할 수 있도록 하는 레지스트리 항목을 만들어야 합니다. 일반적으로 레지스트리 스크립트(.rgs) 파일을 사용하여 이러한 레지스트리 항목을 만듭니다.
아래 예에서 레지스트리의 문은 해당하는 경우 기본 경로와 데이터를 제공하고, 각 문에 대한 레지스트리 스크립트의 항목이 포함된 테이블을 제공합니다. 테이블은 스크립트 항목과 문에 대한 추가 정보를 제공합니다.
참고 항목
다음 레지스트리 정보는 프로젝트 형식을 등록하기 위해 작성할 레지스트리 스크립트 항목의 유형 및 목적에 대한 예제입니다. 실제 항목과 해당 용도는 프로젝트 형식의 특정 요구 사항에 따라 다를 수 있습니다. 사용 가능한 샘플을 검토하여 개발 중인 프로젝트 형식과 매우 유사한 항목을 찾은 다음, 해당 샘플에 대한 레지스트리 스크립트를 검토해야 합니다.
다음 예제는 HKEY_CLASSES_ROOT에서 가져온 것입니다.
예 1
\.figp
@="FigPrjFile"
"Content Type"="text/plain"
\.figp\ShellNew
"NullFile"=""
\FigPrjFile
@="Figure Project File"
\DefaultIcon
@="<Visual Studio SDK installation path>\\9.0VSIntegration\\SomeFolder\\FigPkgs\\FigPrj\\Debug\\FigPrj.dll,-206"
\shell\open
@="&Open in Visual Studio"
\shell\open\command
@="devenv.exe \"%1\""
이름 | Type | 데이터 | 설명 |
---|---|---|---|
@ |
REG_SZ | FigPrjFile |
확장명이 .figp인 프로젝트 형식 파일의 이름 및 설명입니다. |
Content Type |
REG_SZ | Text/plain |
프로젝트 파일의 콘텐츠 형식입니다. |
NullFile |
REG_SZ | Null |
|
@ |
REG_SZ | %MODULE%,-206 |
이 형식의 프로젝트에 사용되는 기본 아이콘입니다. %MODULE% 문은 프로젝트 형식 DLL의 기본 위치로 레지스트리에서 완료됩니다. |
@ |
REG_SZ | &Open in Visual Studio |
이 프로젝트 형식이 열리는 기본 애플리케이션입니다. |
@ |
REG_SZ | devenv.exe "%1" |
이 형식의 프로젝트를 열 때 실행되는 기본 명령입니다. |
다음 예제는 HKEY_LOCAL_MACHINE에서 가져온 것이며 레지스트리의 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\99.0Exp\Packages] 키 아래에 있습니다.
예제 2
\{ACEF4EB2-57CF-11D2-96F4-000000000000} (The CLSID for the VSPackage)
@="FigPrj Project Package"
"InprocServer32"="9.0<Visual Studio SDK installation path>\\VSIntegration\\Archive\\FigPkgs\\FigPrj\\ Debug\\FigPrj.dll"
"CompanyName"="Microsoft"
"ProductName"="Figure Project Sample"
"ProductVersion"="9.0"
"MinEdition"="professional"
"ID"=dword:00000001
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\SatelliteDLL
"DllName"="FigPrjUI.dll"
"Path"="9.0<Visual Studio SDK installation path>\\VSIntegration\\Archive\\FigPkgs\\FigPrj\\Debug\\"
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\Automation
"FigProjects"=""
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\AutomationEvents
"FigProjectsEvents"="Returns the FigProjectsEvents Object"
"FigProjectItemsEvents"="Returns the FigProjectItemsEvents Object"
이름 | Type | 데이터 | 설명 |
---|---|---|---|
@ (기본값) |
REG_SZ | FigPrj Project VSPackage |
등록된 이 VSPackage(프로젝트 형식)의 지역화 가능한 이름입니다. |
InprocServer32 |
REG_SZ | %MODULE% |
프로젝트 형식 DLL의 경로입니다. IDE는 이 DLL을 로드하고 VSPackage CLSID를 DllGetClassObject 에 전달하여 IClassFactory가 IVsPackage 개체를 구성하도록 합니다. |
CompanyName |
REG_SZ | Microsoft |
프로젝트 형식을 개발한 회사의 이름입니다. |
ProductName |
REG_SZ | Figure Project Sample |
프로젝트 형식의 이름입니다. |
ProductVersion |
REG_SZ | 9.0 |
프로젝트 형식 릴리스의 버전 번호입니다. |
MinEdition |
REG_SZ | professional |
등록 중인 VSPackage 버전입니다. |
ID |
REG_DWORD | %IDS_PACKAGE_LOAD_KEY% |
프로젝트 VSPackage의 패키지 로드 키입니다. 키는 환경이 시작된 후 프로젝트가 로드될 때 유효성이 검사됩니다. |
DllName |
REG_SZ | %RESOURCE_DLL% |
프로젝트 형식에 대한 지역화된 리소스를 포함하는 위성 DLL의 파일 이름입니다. |
Path |
REG_SZ | %RESOURCE_PATH% |
위성 DLL의 경로입니다. |
FigProjectsEvents |
REG_SZ | 값은 문을 참조하세요. | 이 자동화 이벤트에 대해 반환된 텍스트 문자열을 결정합니다. |
FigProjectItemsEvents |
REG_SZ | 값은 문을 참조하세요. | 이 자동화 이벤트에 대해 반환된 텍스트 문자열을 결정합니다. |
다음 예제는 모두 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects] 키 아래의 레지스트리에 있습니다.
예 3
\{C061DB26-5833-11D2-96F5-000000000000} (The CLSID for projects of this type)
@="FigPrj Project"
"DisplayName"="#2"
"Package"="{ACEF4EB2-57CF-11D2-96F4-000000000000}"
"ProjectTemplatesDir"="C:\\Program Files\\VSIP 9.0\\EnvSDK\\FigPkgs\\ FigPrj\\FigPrjProjects"
"ItemTemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\ FigPrjProjectItems"
"DisplayProjectFileExtensions"="#3"
"PossibleProjectExtensions"="figp"
"DefaultProjectExtension"=".figp"
\{C061DB26-5833-11D2-96F5-000000000000}\Filters\1 (Folder 1 contains settings for Open Files filters.)
@="#4"
"CommonOpenFilesFilter"=dword:00000000
"CommonFindFilesFilter"=dword:00000000
"NotAddExistingItemFilter"=dword:00000000
"FindInFilesFilter"=dword:00000000
"NotOpenFileFilter"=dword:00000000
"SortPriority"=dword:000003e8
\{C061DB26-5833-11D2-96F5-000000000000}\Filters\2
(Folder 2 contains settings for Find in Files filters.)
@="#5"
"CommonOpenFilesFilter"=dword:00000000
"CommonFindFilesFilter"=dword:00000000
"NotAddExistingItemFilter"=dword:00000001
"FindInFilesFilter"=dword:00000001
"NotOpenFileFilter"=dword:00000000
"SortPriority"=dword:000003e8
\{C061DB26-5833-11D2-96F5-000000000000}\AddItemTemplates\TemplateDirs\ {ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (Second GUID indicates the registered project type for the Add Items templates.)
@="#6"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\ FigPrjProjectItems"
"SortPriority"=dword:00000064
이름 | Type | 데이터 | 설명 |
---|---|---|---|
@ |
REG_SZ | FigPrj Project |
이 형식의 프로젝트의 기본 이름입니다. |
DisplayName |
REG_SZ | #%IDS_PROJECT_TYPE% |
패키지 아래에 등록된 위성 DLL에서 검색할 이름의 리소스 ID입니다. |
Package |
REG_SZ | %CLSID_Package% |
패키지 아래에 등록된 VSPackage의 클래스 ID입니다. |
ProjectTemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
프로젝트 템플릿 파일의 기본 경로입니다. 새 프로젝트 템플릿에 표시되는 파일입니다. |
ItemTemplatesDir |
REG_SZ | %TEMPLATE_PATH% \FigPrjProjectItems |
프로젝트 항목 템플릿 파일의 기본 경로입니다. 새 항목 추가 템플릿에 표시되는 파일입니다. |
DisplayProjectFileExtensions |
REG_SZ | #%IDS_DISPLAY_PROJ_FILE_EXT% |
IDE에서 열기 대화 상자를 구현할 수 있습니다. |
PossibleProjectExtensions |
REG_SZ | figp |
IDE에서 열려 있는 프로젝트가 이 프로젝트 형식(프로젝트 팩터리)에 의해 처리되는지 여부를 확인하기 위해 결정하기 위해 사용합니다. 둘 이상의 항목에 대한 형식은 세미콜론으로 구분된 목록입니다. 예를 들어 "vdproj;vdp"입니다. |
DefaultProjectExtension |
REG_SZ | .figp |
IDE에서 다른 이름으로 저장 작업의 기본 파일 이름 확장명으로 사용됩니다. |
Filter Settings |
REG_DWORD | 다양한 필터는 다음 표에 있는 문과 주석을 참조하세요. | 이러한 설정은 UI 대화 상자에 파일을 표시하기 위한 다양한 필터를 설정하는 데 사용됩니다. |
@ |
REG_SZ | #%IDS_ADDITEM_TEMPLATES_ENTRY% |
항목 추가 템플릿의 리소스 ID입니다. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjectItems |
새 항목 추가 템플릿의 대화 상자에 표시되는 프로젝트 항목의 경로입니다. |
SortPriority |
REG_DWORD | 100 (vcprx64) |
새 항목 추가 대화 상자에 표시되는 파일의 트리 노드에서 정렬 순서를 결정합니다. |
다음 표에서는 이전 코드 세그먼트에서 사용할 수 있는 필터 옵션을 보여 줍니다.
필터 옵션 | 설명 |
---|---|
CommonFindFilesFilter |
필터가 파일에서 찾기 대화 상자의 일반 필터 중 하나임을 나타냅니다. 공통 필터는 공통으로 표시되지 않은 필터보다 먼저 필터 목록에 나열됩니다. |
CommonOpenFilesFilter |
필터가 파일 열기 대화 상자의 일반 필터 중 하나임을 나타냅니다. 공통 필터는 공통으로 표시되지 않은 필터보다 먼저 필터 목록에 나열됩니다. |
FindInFilesFilter |
필터가 파일에서 찾기 대화 상자의 필터 중 하나이며 공통 필터 뒤에 나열됨을 나타냅니다. |
NotOpenFileFilter |
파일 열기 대화 상자에서 필터가 사용되지 않음을 나타냅니다. |
NotAddExistingItemFilter |
기존 항목 추가 대화 상자에서 필터가 사용되지 않음을 나타냅니다. |
기본적으로 필터에 이러한 플래그가 하나 이상 설정되어 있지 않으면 필터는 공통 필터가 나열된 후 기존 항목 추가 대화 상자 및 파일 열기 대화 상자에서 사용됩니다. 이 필터는 파일에서 찾기 대화 상자에서 사용되지 않습니다.
다음 예제는 모두 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects] 키 아래의 레지스트리에 있습니다.
예시 4
{FE3BBBB6-72D5-11d2-9ACE-00C04F79A2A4} (The CLSID for Enterprise Projects)
\{FE3BBBB6-72D5-11d2-9ACE-00C04F79A2A4}\AddItemTemplates\TemplateDirs\ {ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (CLSID for projects of this type)
@="#7"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPrj\\FigPrjProjects"
"SortPriority"=dword:00000029
"NewProjectDialogOnly"=dword:00000000
이름 | Type | 데이터 | 설명 |
---|---|---|---|
@ |
REG_SZ | #%IDS_NEWPROJ_ TEMPLATES_ENTRY% |
새 프로젝트 템플릿의 리소스 ID입니다. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
등록된 프로젝트 형식의 프로젝트에 대한 기본 경로입니다. |
SortPriority |
REG_DWORD | 41 (x29) |
새 프로젝트 마법사 대화 상자에 표시되는 프로젝트의 정렬 순서를 설정합니다. |
NewProjectDialogOnly |
REG_DWORD | 0 |
0은 이 형식의 프로젝트가 새 프로젝트 대화 상자에만 표시됨을 나타냅니다. |
다음 예제는 모두 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects] 키 아래의 레지스트리에 있습니다.
예제 5
\{A2FE74E1-B743-11d0-AE1A-00A0C90FFFC3} (CLSID for Miscellaneous Files projects)
@="Miscellaneous Files Project"
\AddItemTemplates\TemplateDirs\{ACEF4EB2-57CF-11D2-96F4-000000000000}\1
(CLSID for Figures Project projects)
@="#6"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\ FigPrjProjectItems"
"SortPriority"=dword:00000064
이름 | Type | 데이터 | 설명 |
---|---|---|---|
@ |
REG_SZ | 없음 | 다음 항목이 기타 파일 프로젝트 항목에 대한 항목임을 나타내는 기본값입니다. |
@ |
REG_SZ | #%IDS_ADDITEM_TEMPLATES_ENTRY% |
새 항목 추가 템플릿 파일의 리소스 ID 값입니다. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjectItems |
새 항목 추가 대화 상자에 표시될 항목의 기본 경로입니다. |
SortPriority |
REG_DWORD | 100 (vcprx64) |
새 항목 추가 대화 상자의 트리 노드에 표시할 정렬 순서를 설정합니다. |
다음 예제는 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects] 키 아래의 레지스트리에 있습니다.
예제 6
"{ACEF4EB2-57CF-11D2-96F4-000000000000}"=",1000,1"
메뉴 항목은 메뉴 정보를 검색하는 데 사용되는 리소스에 대한 IDE를 가리킵니다. 이 데이터가 메뉴 데이터베이스에 병합되면 레지스트리의 MenusMerged 섹션에 동일한 키가 추가됩니다. VSPackage는 MenusMerged 섹션에서 직접 수정하면 안 됩니다. 다음 표의 데이터 필드에는 쉼표로 구분된 세 개의 필드가 있습니다. 첫 번째 필드는 메뉴 리소스 파일의 전체 경로를 식별합니다.
첫 번째 필드를 생략하면 VSPackage GUID로 식별되는 위성 DLL에서 메뉴 리소스가 로드됩니다.
두 번째 필드는 CTMENU 형식의 메뉴 리소스 ID를 식별합니다.
리소스 ID가 지정되고 파일 경로가 첫 번째 매개 변수에 의해 제공되면 메뉴 리소스가 전체 파일 경로에서 로드됩니다.
리소스 ID가 제공되었지만 파일 경로가 제공되지 않은 경우 메뉴 리소스는 위성 DLL에서 로드됩니다.
전체 파일 경로가 제공되고 리소스 ID가 생략된 경우 로드될 파일은 CTO 파일이어야 합니다.
마지막 필드는 CTMENU 리소스의 버전 번호를 식별합니다. 버전 번호를 변경하여 메뉴를 다시 병합할 수 있습니다.
이름 | Type | 데이터 | 설명 |
---|---|---|---|
%CLSID_Package% | REG_SZ | ,1000,1 |
메뉴 정보를 검색할 리소스입니다. |
다음 예제는 모두 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\NewProjectTemplates] 키 아래의 레지스트리에 있습니다.
\TemplateDirs\{ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (CLSID for Figures Project projects)
@="#7"
"TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\FigPrjProjects"
"SortPriority"=dword:00000029
"NewProjectDialogOnly"=dword:00000000
이름 | Type | 데이터 | 설명 |
---|---|---|---|
@ |
REG_SZ | #%IDS_NEWPROJ_TEMPLATES_ENTRY% |
그림 프로젝트 새 프로젝트 템플릿의 리소스 ID 값입니다. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
새 프로젝트 디렉터리의 기본 경로입니다. 이 디렉터리의 항목은 새 프로젝트 마법사 대화 상자에 표시됩니다. |
SortPriority |
REG_DWORD | 41 (x29) |
새 프로젝트 대화 상자의 트리 노드에 프로젝트가 표시되는 순서를 설정합니다. |
NewProjectDialogOnly |
REG_DWORD | 0 |
0은 이 형식의 프로젝트가 새 프로젝트 대화 상자에만 표시됨을 나타냅니다. |
다음 예제는 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\InstalledProducts] 키 아래의 레지스트리에 있습니다.
\FiguresProductSample
"Package"="{ACEF4EB2-57CF-11D2-96F4-000000000000}"
"UseInterface"=dword:00000001
이름 | Type | 데이터 | 설명 |
---|---|---|---|
Package |
REG_SZ | %CLSID_Package% |
등록된 VSPackage의 클래스 ID입니다. |
UseInterface |
REG_DWORD | 1 |
1은 UI가 이 프로젝트와 상호 작용하는 데 사용됨을 나타냅니다. 0은 UI 인터페이스가 없음을 나타냅니다. |
새 프로젝트 형식을 제어하는.vsz 파일에는 RELATIVE_PATH 항목이 자주 포함됩니다. 이 경로는 다음 설치 키에서 프로젝트 형식의 \ProductDir 항목 아래에 지정된 경로를 기준으로 합니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup
예를 들어 Enterprise Frameworks 프로젝트 템플릿은 다음 레지스트리 항목을 추가합니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup\EF\ProductDir = C:\Program Files\Microsoft Visual Studio\EnterpriseFrameworks\
즉 .vsz 파일에 PROJECT_TYPE=EF 항목을 포함하면 환경의 이전에 지정된 ProductDir 디렉터리에서 .vsz 파일을 찾습니다.