溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在VS2019中自定義一個項目模板

發(fā)布時間:2021-04-12 15:29:51 來源:億速云 閱讀:228 作者:Leah 欄目:開發(fā)技術

怎么在VS2019中自定義一個項目模板?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

一、自定義項目模板創(chuàng)建

 本次我們來創(chuàng)建一個實現(xiàn)了基礎功能的webapi模板

 創(chuàng)建自定義的項目模板,有以下幾個步驟:

 1、創(chuàng)建原始的項目(模板項目)

  創(chuàng)建WebApi項目:

怎么在VS2019中自定義一個項目模板

  實現(xiàn)WebApi相關基礎功能:SwaggerUI、認證、性能監(jiān)控(MiniProfiler)等基礎功能;可以在之前博客內(nèi)容中查看實現(xiàn)具體方式

 2、替換模板項目的參數(shù)

  此時模板的基礎功能已經(jīng)實現(xiàn),但是在創(chuàng)建項目時,會根據(jù)輸入的項目名稱;來設置代碼中的命名空間、輸出程序名稱等信息。

  那么是如何實現(xiàn)的呢?——模板參數(shù)

  當前支持的內(nèi)置項目參數(shù)如下表:(模板參數(shù)區(qū)分大小寫。)

參數(shù)說明
clrversion公共語言運行時 (CLR) 的當前版本。
ext_*將 ext_ 前綴添加到任何參數(shù),以引用父模板的變量。 例如,ext_safeprojectname。
guid[1-10]一個用于替換項目文件中的項目 GUID 的 GUID。 可指定最多 10 個唯一的 GUID(例如,guid1)。
itemname在其中使用參數(shù)的文件的名稱。
machinename當前的計算機名稱(例如,Computer01)。
projectname創(chuàng)建項目時由用戶提供的名稱。
registeredorganization來自 HKLM\Software\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization 的注冊表項值。
rootnamespace當前項目的根命名空間。 此參數(shù)僅適用于項模板。
safeitemname與 itemname 相同,但所有不安全字符和空格替換為了下劃線。
safeitemrootname與 safeitemname 相同。
safeprojectname用戶在創(chuàng)建項目時提供的名稱,但名稱中刪除了所有不安全字符和空格。
time以 DD/MM/YYYY 00:00:00 格式表示的當前時間。
specifiedsolutionname解決方案的名稱。 在選中“創(chuàng)建解決方案目錄”時,specifiedsolutionname 具有解決方案名稱。 在未選中“創(chuàng)建解決方案目錄”時,specifiedsolutionname 為空。
userdomain當前的用戶域。
username當前的用戶名稱。
webnamespace當前網(wǎng)站的名稱。 此參數(shù)在 Web 窗體模板中用于保證類名是唯一的。 如果網(wǎng)站在 Web 服務器的根目錄下,則此模板參數(shù)解析為 Web 服務器的根目錄。
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>();
                });
    }
}

  如代碼中需要使用項目名稱依舊采用$safeprojectname$;如:

public void ConfigureServices(IServiceCollection services)
{
    //注冊Swagger生成器,定義一個和多個Swagger 文檔
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "$safeprojectname$ API", Version = "v1" });
        // other
    });
}

  除了VS自帶的模板參數(shù)外,用戶還可以自定義模板參數(shù),但現(xiàn)實用到的不多

 3、導出模板源項目,指定模板項目設置名稱、說明、圖標等內(nèi)容

  模板基本內(nèi)容實現(xiàn)完成后,則可以進行模板導出操作,步驟如下:

  A、進入菜單:項目->導出模板

怎么在VS2019中自定義一個項目模板

  B、彈出:導出模板向?qū)ы撁?/p>

怎么在VS2019中自定義一個項目模板

  C、設置模板相關信息,點擊完成;則模板創(chuàng)建成功

怎么在VS2019中自定義一個項目模板

  輸出位置為自定義模板導出存儲位置;

  【自動將模板導入 Visual Studio】選項,選中后會將項目模板復制一份,放入到特定的文件夾中,下次建立新項目就可以搜索使用。

 4、模板項目添加語言、平臺和項目類型等標簽

  前面的步驟已經(jīng)完成對模板的創(chuàng)建,但是在創(chuàng)建項目時,可以根據(jù)項目平臺、語言、項目類型標簽過濾,那么如何實現(xiàn)項目模板標簽呢?

  接下來對3步驟中生成的項目模板進行研究:

  打開模板文件的壓縮文件中發(fā)現(xiàn)了模板文件

怎么在VS2019中自定義一個項目模板

  解壓文件后,對該文件進行編輯,添加語言標簽(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、認證、性能監(jiān)控等基礎功能</Description>
    <!--項目類型-->
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <!--指定在實例化項目時是否創(chuàng)建包含文件夾。-->
    <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 中可用的以上描述標簽的取值內(nèi)容:

語言標簽(LanguageTag)平臺標簽(PlatformTag)項目類型標簽(ProjectTypeTag)
C (cpp)Android (android)云 (cloud)
C# (csharp)Azure (azure)控制臺 (console)
F# (fsharp)iOS (ios)桌面 (desktop)
Java (java)Linux (linux)擴展 (extension)
JavaScript (javascript)macOS (macos)游戲 (games)
Python (python)tvOS (tvos)IoT (iot)
查詢語言 (querylanguage)Windows (windows)庫 (library)
TypeScript (typescript)Xbox (xbox)機械學習 (machinelearning)
Visual Basic (visualbasic) 移動 (mobile)
  Office (office)
  其他 (other)
  服務 (service)
  測試 (test)
  UWP (uwp)
  Web (web)

  最后將修改的文件打包成zip壓縮(必須為zip文件)文件后,復制到項目模板所在位置(%USERPROFILE%\Documents\Visual Studio 2019\Templates\ProjectTemplates)    

二、 自定義項目模板使用

 前面步驟已完成模板創(chuàng)建,接下來就驗證模板是否生效:

 打開vs進入項目創(chuàng)建界面,搜索API,如下:

怎么在VS2019中自定義一個項目模板

 怎么在VS2019中自定義一個項目模板

怎么在VS2019中自定義一個項目模板

 到此項目設置的標簽以及代碼中命名空間、注釋都已生效。項目模板效果已實現(xiàn)

看完上述內(nèi)容,你們掌握怎么在VS2019中自定義一個項目模板的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI