새 프로젝트를 생성: 내부에서 부품 하나
고유의 프로젝트 형식을 만드는 방법에 대 한 생각 적이 있습니까? 새 프로젝트를 만들 때 실제로 일어나 궁금해? 이제를 보면서 살짝 걸릴 하 정말 무슨 일 참조 하십시오.
Visual Studio 자동으로 조정 되는 몇 가지 작업이 있습니다.
모든 사용할 수 있는 프로젝트 형식 트리를 표시합니다.
각 프로젝트 형식에 대 한 응용 프로그램 서식 파일의 목록을 표시 하 고 하나를 선택할 수 있습니다.
프로젝트 이름 및 경로 같은 응용 프로그램에 대 한 프로젝트 정보를 수집합니다.
프로젝트 공장에이 정보를 전달합니다.
현재 솔루션의 프로젝트 항목 및 폴더 생성 합니다.
새 프로젝트 대화 상자
모든 프로젝트 형식에 대 한 새 프로젝트를 선택 하 여 시작 합니다. 클릭 하 여 시작 해 보겠습니다 새 프로젝트 에 있는 파일 메뉴입니다. 해당 새 프로젝트 대화 상자가 나타나면 다음과 같이 보이는:
자세히 살펴 보겠습니다. 프로젝트 형식 트리 만들 수 있는 다양 한 프로젝트 형식을 나열 합니다. 다음과 같이 프로젝트 형식을 선택 하면 C# Windows 시각적, 작업을 시작 하려면 응용 프로그램 서식 파일 목록이 표시 됩니다. Visual Studio 설치 되어 있는 템플릿 Visual Studio 의해 설치 되 고 컴퓨터의 모든 사용자가 사용할 수 있습니다. 작성 하거나 수집 하는 새 서식 파일에 추가할 수 있습니다 내 템플릿 만 사용할 수 있습니다.
같은 서식 파일을 선택 하면 Windows 응용 프로그램, 응용 프로그램 종류에 대 한 설명을 합니다; 대화 상자에 나타납니다 이 경우 A 프로젝트 만들기 Windows 사용자 인터페이스가 포함 된 응용 프로그램에 대 한.
맨 아래에 있는 새 프로젝트 대화 상자에서 자세한 정보를 수집 하는 컨트롤이 여러 개 볼 수 있습니다. 볼 컨트롤은 프로젝트 형식에 따라 달라 집니다 있지만 일반적으로 이러한 프로젝트를 포함 이름 텍스트 상자에 위치 텍스트 상자 및 관련 찾아보기 단추를 하는 솔루션 이름 텍스트 상자 및 관련 솔루션용 디렉터리 만들기 확인란을 선택 합니다.
새 프로젝트 대화 상자를 채우는 중
위치 하지는 새 프로젝트 대화 상자는 해당 정보를 가져올? 작업에서 여기에 하나를 더 이상 사용 두 가지 메커니즘이 있습니다. 해당 새 프로젝트 대화 상자를 결합 한 두 메커니즘에서 가져온 정보를 표시 합니다.
시스템 레지스트리 항목과.vsdir 파일의 이전 버전 () 메서드를 사용합니다. Visual Studio 열 때이 메커니즘을 실행 합니다. .Vstemplate 파일에 새 메서드를 사용합니다. Visual Studio, 예를 들어, 실행 하 여 초기화 될 때이 메커니즘을 실행
devenv /setup
또는
devenv /installvstemplates
프로젝트 형식
이름과 위치는 프로젝트 형식 같은 노드를 루트 C# 및 다른 언어, 시스템 레지스트리 항목에 의해 결정 됩니다. 자식 노드의 조직 등 데이터베이스 및 스마트 장치, 해당.vstemplate 파일이 포함 된 폴더의 계층 구조를 미러링. 루트 노드를 먼저 살펴보겠습니다.
프로젝트 형식의 루트 노드
때 Visual Studio 입니다 초기화, 시스템 레지스트리 키의 루트 노드를 작성 합니다 hkey_local_machine\software\microsoft\visualstudio\10.0\newprojecttemplates\templatedirs의 하위 키 순회를 프로젝트 형식 트리. 이 정보는 나중에 사용할 수 있도록 캐시 됩니다. {FAE04EC1-301F-11D3-BF4B-00C04F79EFBC} TemplateDirs\ \/1 키를 찾습니다. 각 항목 VSPackage GUID입니다. 하위 키의 이름 (/ 1) 무시 됩니다 있지만 자신의 존재를 나타내는 있는 프로젝트 형식 루트 노드. 루트 노드에서 모양을 제어 하는 몇 가지 하위 키에 있을 수 있습니다의 프로젝트 형식 트리. 그 중 일부에 대해 살펴보겠습니다.
(기본값)
이 루트 노드 이름을 지정 하는 지역화 된 문자열 리소스 ID입니다. 문자열 리소스 위성 DLL 선택한 VSPackage GUID가 있습니다.
예제에서는 VSPackage GUID입니다.
{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}
루트 노드의 리소스 ID (기본값) 하 고 (/ 1) # 2345입니다
근처에 있는 패키지 키에서 GUID를 찾는 SatelliteDll 하위 키를 확인 하는 경우 문자열 리소스를 포함 하는 어셈블리의 경로 찾을 수 있습니다.
< Visual Studio 설치 경로 > \VC#\VCSPackages\1033\csprojui.dll
이 확인 하려면 파일 탐색기를 열고 csprojui.dll Visual Studio 디렉터리에 놓습니다. 문자열 테이블 리소스 # 2345 캡션을 표시 C#.
SortPriority
이 위치에서 루트 노드를 결정에서 프로젝트 형식 트리.
SortPriority REG_DWORD 0x00000014 (20)
우선 순위 번호가 작을수록 트리에서 높을수록 위치 합니다.
DeveloperActivity
그런 다음이 하위 키가 있으면 루트 노드의 위치 개발자 설정 대화 상자에서 제어 합니다. 다음 예제를 참조하십시오.
DeveloperActivity REG_SZ VC#
Visual Studio 설정 된 경우 C# 루트 노드가 되도록 합니다 Visual C++ 개발 합니다. 그렇지 않으면 그의 자식 노드 수 다른 언어.
폴더
다음이 하위 키가 있으면 루트 노드의 자식 노드가 지정 된 폴더의 됩니다. 가능한 폴더 목록을 키에 나타납니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\NewProjectTemplates\PseudoFolders
예를 들어, 데이터베이스 프로젝트 항목 Pseudofolders에서 기타 프로젝트 형식 항목에 해당 하는 폴더 키를 있습니다. 때문에 프로젝트 형식 트리를 데이터베이스 프로젝트 의 자식 노드 수 있습니다 기타 프로젝트 형식.
프로젝트 형식의 자식 노드 및.vstdir 파일
위치에 있는 자식 노드는 프로젝트 형식 트리 ProjectTemplates 폴더에서 폴더의 계층 구조를 따릅니다. 컴퓨터 템플릿 (Visual Studio 설치 되어 있는 템플릿), \Program Files\Microsoft Visual Studio 10.0\common7\ide\projecttemplates\는 일반적인 위치입니다 및 사용자 서식 파일 (내 템플릿), \My Documents\Visual 10\Templates\ProjectTemplates\ Studio는 일반적인 위치입니다. 폴더 계층 구조에서 이러한 두 위치를 만들려면 병합 됩니다 있는 프로젝트 형식 트리.
Visual Studio 대 한 Visual C++ 개발자 설정에서 프로젝트 형식 트리의 검색 다음과 같은:
해당 ProjectTemplates 폴더는 다음과 같습니다.
때의 새 프로젝트 대화 상자가 나타나면 Visual Studio ProjectTemplates 폴더를 검색 하 고 그 구조를 다시 만듭니다는 프로젝트 형식 트리의 일부 변경:
루트 노드에 프로젝트 형식 트리 응용 프로그램 템플릿에 의해 결정 됩니다.
노드 이름을 지역화할 수 있습니다 및 특수 문자를 포함할 수 있습니다.
정렬 순서를 변경할 수 있습니다.
프로젝트 형식에 대 한 루트 노드를 찾기
때 Visual Studio ProjectTemplates 폴더 통과 모든.zip 파일을 열고 모든.vstemplate 파일을 추출 합니다. .Vstemplate 파일은 XML을 사용 하 여 응용 프로그램 템플릿에 대해 설명 합니다. 자세한 내용은 새 프로젝트를 생성 합니다: 내부에서 2 부를 참조하십시오.
<ProjectType> 태그 응용 프로그램에 대 한 프로젝트 형식을 결정합니다. 예를 들어, \CSharp\SmartDevice\WindowsCE\1033\WindowsCE-EmptyProject.zip 파일을이 태그를 EmptyProject.vstemplate 파일이 포함 되어 있습니다.
<ProjectType>CSharp</ProjectType>
<ProjectType> 태그 및 하위 폴더 ProjectTemplates 폴더에 없는 결정에서 응용 프로그램의 루트 노드는 프로젝트 형식 트리. 예제에서는 Windows CE 응용 프로그램 아래에 표시 되는 C# 루트 노드 WindowsCE 폴더는 VisualBasic 폴더로 이동 되 면 Windows CE 응용 프로그램이 여전히 표시 됩니다는 C# 루트 노드.
노드 이름을 지역화
Visual Studio ProjectTemplates 폴더를 통과할 때 발견 된.vstdir 파일을 검사 합니다. .Vstdir 파일은 프로젝트 형식에는 모양을 제어 하는 XML 파일입니다 있는 새 프로젝트 대화 상자. .Vstdir 파일의 <LocalizedName>를 사용 합니다. 태그 이름에는 프로젝트 형식 노드가 됩니다.
예를 들어, \CSharp\Database\TemplateIndex.vstdir 파일에이 태그가 포함 되어 있습니다.
<LocalizedName Package="{462b036f-7349-4835-9e21-bec60e989b9c}" ID="4598"/>
이 위성 DLL 및 리소스 ID이 경우 루트 노드 이름을 지정 하는 지역화 된 문자열의 결정 데이터베이스. 지역화 된 이름을 것과 같이 폴더 이름에 사용할 수 없는 특수 문자가 포함 될 수 있습니다 .NET.
<LocalizedName> 인 경우 태그는 존재, 프로젝트 형식 폴더 자체 라는 SmartPhone2003.
프로젝트 형식에 대 한 정렬 순서를 찾기
프로젝트 형식의 정렬 순서를 확인 하려면 <SortOrder>.vstdir 파일을 사용 합니다. 태그입니다.
예를 들어, \CSharp\Windows\Windows.vstdir 파일에이 태그가 포함 되어 있습니다.
<SortOrder>5</SortOrder>
\CSharp\Database\TemplateIndex.vstdir 파일에 태그 값이 더 큰 있습니다.
<SortOrder>5000</SortOrder>
<SortOrder> 번호가 작을수록 태그, 트리에서 높을수록 위치 때문에 Windows 나타납니다 보다는 데이터베이스 노드에서 프로젝트 형식 트리.
<SortOrder> 인 경우 프로젝트 형식에 대 한 태그 지정 된, <SortOrder> 포함 된 프로젝트 형식에 따라 알파벳 순서로 표시 사양입니다.
내 문서에는.vstdir 파일이 있습니다 (내 템플릿) 폴더입니다. 사용자가 응용 프로그램 프로젝트 형식 이름은 지역화 되지 않습니다 및 알파벳 순으로 표시 합니다.
빠른 검토
수정 하겠습니다는 새 프로젝트 대화 상자 및 새 사용자가 프로젝트 템플릿을 작성 합니다.
하위 폴더를 MyProjectNode \Program Files\Microsoft Visual Studio 10\Common7\IDE\ProjectTemplates\CSharp 폴더에 추가 합니다.
모든 텍스트 편집기를 사용 하 여 MyProjectNode 폴더에서 MyProject.vstdir 파일을 만듭니다.
.Vstdir 파일에 다음이 줄을 추가 합니다.
<TemplateDir Version="1.0.0"> <SortOrder>6</SortOrder> </TemplateDir>
저장 한.vstdir 파일을 닫습니다.
모든 텍스트 편집기를 사용 하 여 MyProjectNode 폴더에서 MyProject.vstemplate 파일을 만듭니다.
.Vstemplate 파일에 다음이 줄을 추가 합니다.
<VSTemplate Version="2.0.0" Type="Project" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <ProjectType>CSharp</ProjectType> </TemplateData> </VSTemplate>
The.vstemplate 파일을 저장 하 고 편집기를 닫습니다.
새 압축 된 MyProjectNode\MyProject.zip 폴더를.vstemplate 파일을 보냅니다.
Visual Studio 명령 창에서 입력 합니다.
devenv /installvstemplates
Visual Studio를 엽니다.
- 열기는 새 프로젝트 대화 상자 및 확장은 C# 프로젝트 노드.
MyProjectNode Visual C# Windows 노드 바로 아래 자식 노드로 표시 됩니다.