VS 2019 사용자 정의 프로젝트 템 플 릿 구현 방법
11681 단어 VS2019사용자 정의 템 플 릿
'우주 최 강 IDE'개발 프로젝트 를 사용 할 때 상황 에 따라 프로젝트 템 플 릿 을 선택 하여 개발 수 요 를 만족 시 켜 야 한다.다음 과 같다.
VS 는 기본 적 인 프로젝트 템 플 릿 을 제공 합 니 다.그러나 기 존 프로젝트 템 플 릿 에는 로그 출력,감사 로그,SwaggerUI,인증 등 기본 기능 이 포함 되 어 있 지 않 습 니 다.그러면 프로젝트 템 플 릿 을 사용자 정의 하여 우리 의 수 요 를 만족 시 킬 수 있 습 니까?답 은 당연히 긍정 적 이다.
다음은 사용자 정의 프로젝트 템 플 릿 생 성 을 시작 합 니 다.
1.사용자 정의 프로젝트 템 플 릿 생 성
이번 에는 기본 기능 을 실현 한 webapi 템 플 릿 을 만 듭 니 다.
사용자 정의 프로젝트 템 플 릿 을 만 들 려 면 다음 과 같은 몇 가지 절차 가 있 습 니 다.
1.원본 항목 만 들 기(템 플 릿 항목)
WebApi 프로젝트 만 들 기:
WebApi 관련 기초 기능 실현:SwaggerUI,인증,성능 모니터링(MiniProfiler)등 기초 기능;이전 블 로그 내용 에서 구체 적 인 실현 방식 을 볼 수 있다.
2.템 플 릿 항목 의 인자 교체
이 때 템 플 릿 의 기본 기능 은 이미 실현 되 었 으 나 프로젝트 를 만 들 때 입력 한 프로젝트 이름 에 따라 이 루어 집 니 다.코드 의 네 임 스페이스,출력 프로그램 이름 등 정 보 를 설정 합 니 다.
그렇다면 어떻게 이 루어 졌 을 까?템 플 릿 매개 변수
현재 지원 하 는 내 장 된 항목 매개 변 수 는 다음 표 와 같 습 니 다.(템 플 릿 매개 변 수 는 대소 문 자 를 구분 합 니 다.)
매개 변수
설명 하 다.
clrversion
공용 언어 가 실 행 될 때(CLR)의 현재 버 전 입 니 다.
ext_*
장차
ext_
부모 템 플 릿 의 변 수 를 참조 하기 위해 접 두 사 를 모든 인자 에 추가 합 니 다. 예 를 들 어 ext_safeprojectname
.guid[1-10]
프로젝트 파일 의 프로젝트 GUID 를 바 꾸 는 데 사용 할 GUID 최대 10 개의 유일한 GUID(예:
guid1
)를 지정 할 수 있 습 니 다.itemname
매개 변 수 를 사용 하 는 파일 의 이름 입 니 다.
machinename
현재 컴퓨터 이름(예:Computer 01).
projectname
프로젝트 를 만 들 때 사용자 가 제공 하 는 이름 입 니 다.
registeredorganization
HKLM\\Software\Microsoft\Windows NT\Current Version\Registered Organization 의 레 지 스 트 항목 값 입 니 다.
rootnamespace
현재 항목 의 루트 네 임 스페이스 입 니 다. 이 매개 변 수 는 템 플 릿 에 만 적 용 됩 니 다.
safeitemname
...과
itemname
같 지만 모든 안전 하지 않 은 문자 와 빈 칸 은 밑줄 로 바 뀌 었 습 니 다.safeitemrootname
...과
safeitemname
같다safeprojectname
사용자 가 항목 을 만 들 때 제공 하 는 이름 이지 만 이름 에서 모든 안전 하지 않 은 문자 와 빈 칸 을 삭 제 했 습 니 다.
time
DD/MM/YYYY 00:00:00 형식 으로 표 시 된 현재 시간.
specifiedsolutionname
해결 방안 의 이름. '솔 루 션 디 렉 터 리 만 들 기'를 선 택 했 을 때
specifiedsolutionname
솔 루 션 이름 이 있 습 니 다. '솔 루 션 디 렉 터 리 만 들 기'가 선택 되 지 않 았 을 때 specifiedsolutionname
비다userdomain
현재 사용자 필드 입 니 다.
username
현재 사용자 이름 입 니 다.
webnamespace
현재 사이트 의 이름. 이 매개 변 수 는 웹 창 템 플 릿 에서 클래스 이름 을 보증 하 는 데 사 용 됩 니 다. 웹 서버 의 루트 디 렉 터 리 에 사이트 가 있다 면 이 템 플 릿 매개 변 수 는 웹 서버 의 루트 디 렉 터 리 로 분 석 됩 니 다.
year
YYYY 형식 으로 표 시 된 현재 연도.
예 를 들 어 코드 파일 의 네 임 스페이스 정 의 를 설정 합 니 다.
namespace $safeprojectname$
{
/// <summary>
/// :$username$
/// :$time$
/// :$machinename$
/// :$projectname$
/// </summary>
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
코드 에 항목 이름 을 사용 해 야 할 경우$safeprocject name$를 사용 합 니 다.예:
public void ConfigureServices(IServiceCollection services)
{
// Swagger , Swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "$safeprojectname$ API", Version = "v1" });
// other
});
}
VS 자체 템 플 릿 파 라 메 터 를 제외 하고 사용 자 는 템 플 릿 파 라 메 터 를 사용자 정의 할 수 있 지만 현실 적 으로 많이 사용 되 지 않 습 니 다.3.템 플 릿 소스 항목 내 보 내기,템 플 릿 항목 설정 이름,설명,아이콘 등 내용 지정
템 플 릿 의 기본 내용 이 완성 되면 템 플 릿 내 보 내기 작업 을 할 수 있 습 니 다.절 차 는 다음 과 같 습 니 다.
A.진입 메뉴:항목->템 플 릿 내 보 내기
B.팝 업:템 플 릿 마법사 페이지 내 보 내기
C.템 플 릿 관련 정 보 를 설정 하고 완 료 를 클릭 합 니 다.템 플 릿 생 성 성공
출력 위 치 는 사용자 정의 템 플 릿 으로 저장 위 치 를 내 보 냅 니 다.
[템 플 릿 을 Visual Studio 로 자동 가 져 오기]옵션 을 선택 하면 항목 템 플 릿 을 복사 하여 특정한 폴 더 에 넣 고 다음 에 새 항목 을 만 들 면 검색 하여 사용 할 수 있 습 니 다.
4.템 플 릿 항목 에 언어,플랫폼 과 프로젝트 유형 등 태그 추가
앞의 절 차 는 템 플 릿 생 성 을 완 료 했 지만 프로젝트 를 만 들 때 프로젝트 플랫폼,언어,프로젝트 유형 라벨 에 따라 걸 러 낼 수 있 습 니 다.그러면 프로젝트 템 플 릿 라벨 을 어떻게 실현 합 니까?
다음은 3 단계 에서 생 성 된 프로젝트 템 플 릿 에 대해 연 구 를 진행 합 니 다.
템 플 릿 파일 을 여 는 압축 파일 에서 템 플 릿 파일 을 발 견 했 습 니 다.
압축 해제 후 이 파일 을 편집 하고 언어 태그(LanguageTag),플랫폼 태그(PlatformTag),프로젝트 형식 태그(ProjectTypeTag)를 추가 합 니 다.
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
<TemplateData>
<!-- -->
<Name>ApiTemplate</Name>
<!-- -->
<Description> API : SwaggerUI、 、 </Description>
<!-- -->
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<!-- 。-->
<CreateNewFolder>true</CreateNewFolder>
<!-- -->
<DefaultName>ApiTemplate</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<CreateInPlace>true</CreateInPlace>
<!-- -->
<LanguageTag>CSharp</LanguageTag>
<LanguageTag>Javascript</LanguageTag>
<!-- -->
<PlatformTag>Windows</PlatformTag>
<PlatformTag>Linux</PlatformTag>
<!-- -->
<ProjectTypeTag>Web</ProjectTypeTag>
<!-- -->
<Icon>__TemplateIcon.png</Icon>
<PreviewImage>__PreviewImage.png</PreviewImage>
</TemplateData>
<TemplateContent>
<Project TargetFileName="ApiProjectTemplates.csproj" File="ApiProjectTemplates.csproj" ReplaceParameters="true">
<Folder Name="Properties" TargetFolderName="Properties">
<ProjectItem ReplaceParameters="true" TargetFileName="launchSettings.json">launchSettings.json</ProjectItem>
</Folder>
<Folder Name="Controllers" TargetFolderName="Controllers">
<ProjectItem ReplaceParameters="true" TargetFileName="WeatherForecastController.cs">WeatherForecastController.cs</ProjectItem>
</Folder>
<ProjectItem ReplaceParameters="true" TargetFileName="appsettings.json">appsettings.json</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="appsettings.Development.json">appsettings.Development.json</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="JwtSetting.cs">JwtSetting.cs</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="Startup.cs">Startup.cs</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="WeatherForecast.cs">WeatherForecast.cs</ProjectItem>
</Project>
</TemplateContent>
</VSTemplate>
다음 표 는 Visual Studio 에서 사용 할 수 있 는 태그 의 값 추출 내용 입 니 다.언어 태그(LanguageTag)
플랫폼 태그(PlatformTag)
프로젝트 형식 태그(ProjectTypeTag)
C (cpp)
Android (android)
구름(구름)
C# (csharp)
Azure (azure)
콘 솔(console)
F# (fsharp)
iOS (ios)
데스크 톱(데스크 톱)
Java (java)
Linux (linux)
확장(확장)
JavaScript (javascript)
macOS (macos)
게임(게임)
Python (python)
tvOS (tvos)
IoT (iot)
검색 언어(querylanguage)
Windows (windows)
라 이브 러 리
TypeScript (typescript)
Xbox (xbox)
기계 학습(machinelearning)
Visual Basic (visualbasic)
이동(mobile)
Office (office)
기타(기타)
서비스(서비스)
테스트(test)
UWP (uwp)
Web (web)
마지막 으로 수 정 된 파일 을 zip 압축(zip 파일 이 어야 함)파일 로 압축 한 후 프로젝트 템 플 릿 이 있 는 위치 로 복사 합 니 다(%USERPROFILE%\Documents\Visual Studio 2019\Templates\\ProjectTemplates)
2.사용자 정의 프로젝트 템 플 릿 사용
이전 단계 에서 템 플 릿 생 성 이 완료 되 었 습 니 다.다음 에 템 플 릿 이 유효 하 는 지 확인 하 십시오.
프로젝트 생 성 인터페이스 에 vs 를 열 고 API 를 검색 합 니 다.다음 과 같 습 니 다.
이 항목 에 설 정 된 태그 와 코드 의 네 임 스페이스,설명 이 모두 유효 합 니 다.프로젝트 템 플 릿 효과 구현
3.요약:
모든 프로젝트 템 플 릿 과 템 플 릿(Visual Studio 와 함께 설치 되 었 든 만 들 었 든)은 같은 원칙 으로 작업 하고 유사 한 내용 을 가지 고 있 습 니 다.모든 템 플 릿 은 다음 항목 을 포함 합 니 다:
템 플 릿 을 사용 할 때 만 들 파일 입 니 다.이 파일 들 은 소스 코드 파일,삽입 자원,프로젝트 파일 등 을 포함한다.템 플 릿 에 따라 항목 이나 항목 을 만 들 거나'새 항목 만 들 기'페이지 나'새 항목 추가'대화 상자 에 템 플 릿 을 표시 하 는 데 필요 한 메타 데 이 터 를 포함 하 는.vstemplate 파일이 파일 들 이.zip 파일 로 압축 되 어 올 바른 폴 더 에 놓 여 있 을 때 Visual Studio 는 자동 으로 다음 위치 에 이 파일 들 을 표시 합 니 다."새 항목 만 들 기"페이지 에 항목 템 플 릿 을 표시 합 니 다."새 항목 추가"창 에 템 플 릿 을 표시 합 니 다.
프로젝트 템 플 릿 의 역할 이 매우 커서 일상 적 으로 쌓 인 기능 을 템 플 릿 에 통합 시 킬 수 있 고 프로젝트 개발 에서 바퀴 를 중복 만 드 는 것 을 피 할 수 있 으 며 개발 효율 을 높 일 수 있다.
참고 내용
https://docs.microsoft.com/zh-cn/visualstudio/ide/creating-project-and-item-templates?view=vs-2019
https://docs.microsoft.com/zh-cn/visualstudio/extensibility/vsix-project-template?view=vs-2019
https://docs.microsoft.com/zh-cn/visualstudio/extensibility/vstemplate-element-visual-studio-templates?view=vs-2019
VS 2019 사용자 정의 프로젝트 템 플 릿 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 VS 2019 사용자 정의 프로젝트 템 플 릿 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VS 2019 리 눅 스 C++프로그램 개발 의 실현 절차첫 번 째 단 계 는 먼저 자신의 Linux 시스템 을 정적 IP 로 설정 하고 구체 적 인 조작 은 다음 과 같다. 1./etc/network/interfaces 주소 설정 파일 을 수정 합 니 다.다음 과 같 습...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.