婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > VS2019 自定義項目模板的實現方法

VS2019 自定義項目模板的實現方法

熱門標簽:海南人工外呼系統哪家好 高德地圖標注公司位置需要錢嗎 廊坊地圖標注申請入口 慶陽外呼系統定制開發 襄陽外呼增值業務線路解決方案 地圖標注資源分享注冊 北京外呼系統咨詢電話 合肥阿里辦理400電話號 怎么去掉地圖標注文字

前言:

使用“宇宙最強IDE”開發項目時,都需要根據不同情況選擇一個項目模板,來滿足開發需求:如下

VS為我們提供了基礎的項目模板,但現有項目模板未包含基礎功能如:日志輸出、審計日志、SwaggerUI、認證等,那么我們能否自定義項目模板來滿足我們的需求呢?答案當然是肯定的

 那么接下來開始實現自定義項目模板的創建

一、自定義項目模板創建

 本次我們來創建一個實現了基礎功能的webapi模板

 創建自定義的項目模板,有以下幾個步驟:

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

  創建WebApi項目:

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

 2、替換模板項目的參數

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

  那么是如何實現的呢?——模板參數

  當前支持的內置項目參數如下表:(模板參數區分大小寫。)

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

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

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) 云 (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)    

二、 自定義項目模板使用

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

 打開vs進入項目創建界面,搜索API,如下:

 

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

三、總結:

 所有項目模板和項模板(無論是與 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

到此這篇關于VS2019 自定義項目模板的文章就介紹到這了,更多相關VS2019 自定義項目模板內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • vscode自定義vue模板的實現
  • 在vs code 中如何創建一個自己的 Vue 模板代碼
  • VsCode里的Vue模板的實現
  • Vscode中快速創建自定義代碼模板的方法
  • 在VScode中創建你的代碼模板的方法
  • 使用vscode快速建立vue模板過程詳解
  • vscode vue 文件模板的配置方法
  • vs.net2008添加模板方法

標簽:鶴崗 株洲 商丘 鎮江 臺州 綿陽 平頂山 哈密

巨人網絡通訊聲明:本文標題《VS2019 自定義項目模板的實現方法》,本文關鍵詞  VS2019,自定義,項目,模板,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《VS2019 自定義項目模板的實現方法》相關的同類信息!
  • 本頁收集關于VS2019 自定義項目模板的實現方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品美女在线观看| 91啪亚洲精品| 日韩电影在线一区二区| 亚洲自拍另类综合| 一区二区三区中文字幕精品精品| 国产精品久久久久久久久免费相片| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美日韩一级二级| 欧美午夜影院一区| 69堂亚洲精品首页| 欧美成人官网二区| 精品动漫一区二区三区在线观看| 久久久99精品久久| 国产精品盗摄一区二区三区| 18涩涩午夜精品.www| 亚洲一卡二卡三卡四卡无卡久久| 日本强好片久久久久久aaa| 久久99精品国产麻豆婷婷洗澡| 国产一区二区主播在线| 99国产一区二区三精品乱码| 欧美人与z0zoxxxx视频| 欧美videos中文字幕| 国产精品无遮挡| 香蕉久久一区二区不卡无毒影院| 老司机精品视频线观看86| 懂色一区二区三区免费观看| 91女厕偷拍女厕偷拍高清| 9191久久久久久久久久久| 久久亚洲精精品中文字幕早川悠里 | 国产电影一区在线| 91成人在线免费观看| 欧美一级在线视频| 国产精品国产三级国产普通话蜜臀| 一区二区三区中文字幕精品精品| 九九热在线视频观看这里只有精品| 国产99久久久精品| 欧美一三区三区四区免费在线看| 欧美国产在线观看| 日本免费新一区视频| 成人国产精品免费| 欧美一区二区三区视频在线| 亚洲国产高清在线| 久久综合综合久久综合| 在线精品视频小说1| 国产区在线观看成人精品| 午夜精品久久久久久久99樱桃 | 色婷婷久久久综合中文字幕| 宅男噜噜噜66一区二区66| 中文字幕成人av| 美国一区二区三区在线播放| 91视频免费观看| 久久久蜜桃精品| 奇米亚洲午夜久久精品| 91色在线porny| 国产欧美一区二区精品仙草咪| 水野朝阳av一区二区三区| 色婷婷久久久久swag精品 | 91精品国产综合久久久久久久久久| 欧美高清在线精品一区| 久久国产婷婷国产香蕉| 欧美私模裸体表演在线观看| 亚洲视频一二三区| 不卡的av在线播放| 中文字幕乱码日本亚洲一区二区| 麻豆专区一区二区三区四区五区| 欧美日韩综合不卡| 亚洲午夜在线视频| 欧美手机在线视频| 天天影视色香欲综合网老头| 99国产精品久久| 国产精品久久久久久久久快鸭| 国产精品91一区二区| 久久免费的精品国产v∧| 国产一区二区三区黄视频| 亚洲精品一区二区三区四区高清 | 亚洲少妇最新在线视频| aaa欧美日韩| 亚洲精品写真福利| 日本乱人伦一区| 亚洲一区二区三区美女| 欧美日韩你懂的| 日韩av一二三| 精品国产免费一区二区三区香蕉| 精品亚洲成a人| 久久婷婷国产综合精品青草 | 在线看国产一区| 亚洲成人动漫一区| 欧美一区二区黄| 国产一区二区三区久久悠悠色av| 久久久久久久久久久久久久久99 | 欧美tickling网站挠脚心| 国产呦精品一区二区三区网站| 久久亚洲私人国产精品va媚药| 国产成人丝袜美腿| 亚洲精品国产精华液| 欧美日韩国产123区| 美女视频黄久久| 国产精品视频看| 欧美三级午夜理伦三级中视频| 奇米777欧美一区二区| 欧美精品一区二区三区在线| 99久久国产综合精品麻豆| 午夜精彩视频在线观看不卡| 久久久午夜电影| 欧美性做爰猛烈叫床潮| 国产一区久久久| 亚洲三级在线播放| 欧美xxxxxxxxx| 91亚洲精品一区二区乱码| 视频一区二区中文字幕| 亚洲国产精品精华液2区45| 精品视频123区在线观看| 国产精品一区二区在线观看网站| 一区二区三区精品| 欧美韩日一区二区三区四区| 欧美日韩亚洲另类| 国产风韵犹存在线视精品| 视频在线观看一区| 亚洲欧洲av另类| 精品国产乱码久久久久久老虎| 一本色道亚洲精品aⅴ| 蜜桃一区二区三区在线观看| 亚洲综合色网站| 国产欧美一区二区三区鸳鸯浴 | 国产精品伦理在线| 欧美一区二区网站| 色一情一乱一乱一91av| 丁香一区二区三区| 久久精品国产秦先生| 亚洲午夜免费视频| 亚洲视频一区在线| 国产精品乱人伦一区二区| 久久久综合激的五月天| 91精品国产色综合久久不卡蜜臀 | 在线观看精品一区| 99久久综合99久久综合网站| 国产一区二区三区蝌蚪| 精久久久久久久久久久| 日韩福利视频导航| 日韩精品视频网| 一级做a爱片久久| 亚洲精品少妇30p| 亚洲私人影院在线观看| 中文字幕日韩av资源站| 中文字幕不卡三区| 国产精品久久久久久久久免费桃花| 久久香蕉国产线看观看99| 欧美mv日韩mv国产网站| 精品国产髙清在线看国产毛片| 91精品欧美一区二区三区综合在 | 久久久99精品免费观看| 国产亚洲制服色| 久久嫩草精品久久久久| 久久嫩草精品久久久精品一| 久久久久亚洲蜜桃| 欧美国产成人精品| 亚洲免费看黄网站| 亚洲在线视频一区| 日韩电影在线观看电影| 另类欧美日韩国产在线| 国产老肥熟一区二区三区| 成人一区二区三区| 色成年激情久久综合| 欧美精品日韩综合在线| 日韩精品最新网址| 中文字幕欧美激情一区| 一区二区三区国产精华| 三级欧美在线一区| 国产精品一区二区不卡| 97久久超碰国产精品电影| 欧美网站一区二区| 精品国产免费人成电影在线观看四季 | 日韩三级电影网址| 国产性色一区二区| 亚洲精品成人在线| 蜜桃av一区二区在线观看| 国产精品自拍网站| 91九色最新地址| 日韩精品一区二区三区在线播放 | 国产99久久久国产精品免费看| 一本色道久久综合狠狠躁的推荐 | 欧美日韩一区二区三区四区| 日韩欧美激情一区| 亚洲欧洲www| 国产在线精品国自产拍免费| 99久久精品国产毛片| 日韩女优av电影在线观看| 中文字幕一区二区三区四区| 日韩国产精品久久久| 99精品视频在线免费观看| 日韩女优视频免费观看| 亚洲人成精品久久久久久| 免费高清在线视频一区·| 日本韩国欧美国产| 欧美激情一区二区三区不卡 | 久久综合国产精品| 亚洲综合激情网| aaa亚洲精品一二三区| 26uuu亚洲| 七七婷婷婷婷精品国产|