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

主頁(yè) > 知識(shí)庫(kù) > VS2019 自定義項(xiàng)目模板的實(shí)現(xiàn)方法

VS2019 自定義項(xiàng)目模板的實(shí)現(xiàn)方法

熱門(mén)標(biāo)簽:海南人工外呼系統(tǒng)哪家好 高德地圖標(biāo)注公司位置需要錢嗎 廊坊地圖標(biāo)注申請(qǐng)入口 慶陽(yáng)外呼系統(tǒng)定制開(kāi)發(fā) 襄陽(yáng)外呼增值業(yè)務(wù)線路解決方案 地圖標(biāo)注資源分享注冊(cè) 北京外呼系統(tǒng)咨詢電話 合肥阿里辦理400電話號(hào) 怎么去掉地圖標(biāo)注文字

前言:

使用“宇宙最強(qiáng)IDE”開(kāi)發(fā)項(xiàng)目時(shí),都需要根據(jù)不同情況選擇一個(gè)項(xiàng)目模板,來(lái)滿足開(kāi)發(fā)需求:如下

VS為我們提供了基礎(chǔ)的項(xiàng)目模板,但現(xiàn)有項(xiàng)目模板未包含基礎(chǔ)功能如:日志輸出、審計(jì)日志、SwaggerUI、認(rèn)證等,那么我們能否自定義項(xiàng)目模板來(lái)滿足我們的需求呢?答案當(dāng)然是肯定的

 那么接下來(lái)開(kāi)始實(shí)現(xiàn)自定義項(xiàng)目模板的創(chuàng)建

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

 本次我們來(lái)創(chuàng)建一個(gè)實(shí)現(xiàn)了基礎(chǔ)功能的webapi模板

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

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

  創(chuàng)建WebApi項(xiàng)目:

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

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

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

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

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

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

  如:設(shè)置代碼文件中命名空間定義:

namespace $safeprojectname$
{
     /// summary>
    /// 作者:$username$
    /// 時(shí)間:$time$
    /// 機(jī)器名:$machinename$
    /// 項(xiàng)目名:$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>();
                });
    }
}

  如代碼中需要使用項(xiàng)目名稱依舊采用$safeprojectname$;如:

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

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

 3、導(dǎo)出模板源項(xiàng)目,指定模板項(xiàng)目設(shè)置名稱、說(shuō)明、圖標(biāo)等內(nèi)容

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

  A、進(jìn)入菜單:項(xiàng)目->導(dǎo)出模板

  B、彈出:導(dǎo)出模板向?qū)ы?yè)面

  C、設(shè)置模板相關(guān)信息,點(diǎn)擊完成;則模板創(chuàng)建成功

  輸出位置為自定義模板導(dǎo)出存儲(chǔ)位置;

  【自動(dòng)將模板導(dǎo)入 Visual Studio】選項(xiàng),選中后會(huì)將項(xiàng)目模板復(fù)制一份,放入到特定的文件夾中,下次建立新項(xiàng)目就可以搜索使用。

 4、模板項(xiàng)目添加語(yǔ)言、平臺(tái)和項(xiàng)目類型等標(biāo)簽

  前面的步驟已經(jīng)完成對(duì)模板的創(chuàng)建,但是在創(chuàng)建項(xiàng)目時(shí),可以根據(jù)項(xiàng)目平臺(tái)、語(yǔ)言、項(xiàng)目類型標(biāo)簽過(guò)濾,那么如何實(shí)現(xiàn)項(xiàng)目模板標(biāo)簽?zāi)兀?/p>

  接下來(lái)對(duì)3步驟中生成的項(xiàng)目模板進(jìn)行研究:

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

  解壓文件后,對(duì)該文件進(jìn)行編輯,添加語(yǔ)言標(biāo)簽(LanguageTag)、平臺(tái)標(biāo)簽(PlatformTag)、項(xiàng)目類型標(biāo)簽(ProjectTypeTag):  

VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  TemplateData>
    !--項(xiàng)目名稱-->
    Name>ApiTemplate/Name>
    !--項(xiàng)目描述-->
    Description>基礎(chǔ)API模板:支持SwaggerUI、認(rèn)證、性能監(jiān)控等基礎(chǔ)功能/Description>
    !--項(xiàng)目類型-->
    ProjectType>CSharp/ProjectType>
    ProjectSubType>
    /ProjectSubType>
    SortOrder>1000/SortOrder>
    !--指定在實(shí)例化項(xiàng)目時(shí)是否創(chuàng)建包含文件夾。-->
    CreateNewFolder>true/CreateNewFolder>
    !--缺省名稱-->
    DefaultName>ApiTemplate/DefaultName>
    ProvideDefaultName>true/ProvideDefaultName>
    LocationField>Enabled/LocationField>
    EnableLocationBrowseButton>true/EnableLocationBrowseButton>
    CreateInPlace>true/CreateInPlace>
    !--語(yǔ)言標(biāo)簽-->
    LanguageTag>CSharp/LanguageTag>
    LanguageTag>Javascript/LanguageTag>
    !--平臺(tái)標(biāo)簽-->
    PlatformTag>Windows/PlatformTag>
    PlatformTag>Linux/PlatformTag>
    !--項(xiàng)目標(biāo)簽-->
    ProjectTypeTag>Web/ProjectTypeTag>
    !--圖標(biāo)-->
    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 中可用的以上描述標(biāo)簽的取值內(nèi)容:

語(yǔ)言標(biāo)簽(LanguageTag) 平臺(tái)標(biāo)簽(PlatformTag) 項(xiàng)目類型標(biāo)簽(ProjectTypeTag)
C (cpp) Android (android) 云 (cloud)
C# (csharp) Azure (azure) 控制臺(tái) (console)
F# (fsharp) iOS (ios) 桌面 (desktop)
Java (java) Linux (linux) 擴(kuò)展 (extension)
JavaScript (javascript) macOS (macos) 游戲 (games)
Python (python) tvOS (tvos) IoT (iot)
查詢語(yǔ)言 (querylanguage) Windows (windows) 庫(kù) (library)
TypeScript (typescript) Xbox (xbox) 機(jī)械學(xué)習(xí) (machinelearning)
Visual Basic (visualbasic)   移動(dòng) (mobile)
    Office (office)
    其他 (other)
    服務(wù) (service)
    測(cè)試 (test)
    UWP (uwp)
    Web (web)

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

二、 自定義項(xiàng)目模板使用

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

 打開(kāi)vs進(jìn)入項(xiàng)目創(chuàng)建界面,搜索API,如下:

 

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

三、總結(jié):

 所有項(xiàng)目模板和項(xiàng)模板(無(wú)論是與 Visual Studio 一起安裝的還是由你創(chuàng)建的)均通過(guò)使用相同的原則工作并具有類似的內(nèi)容。所有模板均包含以下項(xiàng):

使用模板時(shí)要?jiǎng)?chuàng)建的文件。這些文件包括源代碼文件、嵌入資源、項(xiàng)目文件等。一個(gè) .vstemplate 文件,其中包含根據(jù)模板創(chuàng)建項(xiàng)目或項(xiàng)以及在“創(chuàng)建新項(xiàng)目”頁(yè)面或“添加新項(xiàng)”對(duì)話框中顯示模板所需的元數(shù)據(jù)。當(dāng)這些文件壓縮成 .zip 文件并放在正確的文件夾時(shí),Visual Studio 將自動(dòng)在以下位置顯示這些文件:在“創(chuàng)建新項(xiàng)目”頁(yè)面中顯示項(xiàng)目模板。在“添加新項(xiàng)”窗口中顯示項(xiàng)模板。

 項(xiàng)目模板作用非常大,可以將日常積累的功能合并在模板中,可以避免項(xiàng)目開(kāi)發(fā)中重復(fù)造輪子,提高開(kāi)發(fā)效率

參考內(nèi)容

 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

到此這篇關(guān)于VS2019 自定義項(xiàng)目模板的文章就介紹到這了,更多相關(guān)VS2019 自定義項(xiàng)目模板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

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

標(biāo)簽:鶴崗 株洲 商丘 鎮(zhèn)江 臺(tái)州 綿陽(yáng) 平頂山 哈密

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《VS2019 自定義項(xiàng)目模板的實(shí)現(xiàn)方法》,本文關(guān)鍵詞  VS2019,自定義,項(xiàng)目,模板,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《VS2019 自定義項(xiàng)目模板的實(shí)現(xiàn)方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于VS2019 自定義項(xiàng)目模板的實(shí)現(xiàn)方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91在线无精精品入口| 欧美一区二区三区成人| 国产一区二区调教| av成人老司机| 日韩精品影音先锋| 亚洲综合激情网| 波多野结衣精品在线| 久久久久综合网| 日本aⅴ精品一区二区三区| 91福利在线免费观看| 中文字幕国产一区二区| 日韩av电影免费观看高清完整版| 色成人在线视频| 亚洲欧美激情小说另类| 成人丝袜高跟foot| 国产精品青草综合久久久久99| 蜜臀精品久久久久久蜜臀 | 国内精品久久久久影院色| 成人午夜av电影| 国产精品的网站| 91亚洲精华国产精华精华液| 亚洲欧洲国产日韩| 91丝袜高跟美女视频| 亚洲日本丝袜连裤袜办公室| 91玉足脚交白嫩脚丫在线播放| 欧美精品日日鲁夜夜添| 色综合中文字幕国产 | 国产大片一区二区| 国产欧美一区二区精品性色| 成人一级视频在线观看| 国产精品对白交换视频| 91性感美女视频| 亚洲国产一二三| 欧美精品v日韩精品v韩国精品v| 天天色天天操综合| 精品91自产拍在线观看一区| 国产成人在线看| 日韩一区中文字幕| 欧美天堂亚洲电影院在线播放| 亚洲电影你懂得| 欧美va亚洲va在线观看蝴蝶网| 国产精品综合av一区二区国产馆| 久久久一区二区| 一本大道久久a久久综合| 日韩不卡一二三区| 久久精品在这里| 91浏览器入口在线观看| 日av在线不卡| 日韩美女视频19| 欧美一区中文字幕| 国产成人免费av在线| 亚洲高清视频在线| 国产欧美中文在线| 一本久久综合亚洲鲁鲁五月天 | 国产一区日韩二区欧美三区| 综合在线观看色| 欧美一区二区视频观看视频| 国产很黄免费观看久久| 亚洲一区二区免费视频| 精品sm捆绑视频| 欧美亚洲精品一区| 国产一区三区三区| 首页国产丝袜综合| 国产精品二三区| 久久影院视频免费| 欧美日韩aaa| 97久久精品人人做人人爽 | 亚洲成a人片在线观看中文| 国产视频一区不卡| 日韩一区二区三区免费观看| 91麻豆国产精品久久| 国产成人亚洲综合a∨婷婷图片 | 欧美精品欧美精品系列| 欧美日韩亚洲综合在线 | 一区二区三区在线观看网站| 日韩免费视频一区二区| 成人av网址在线观看| 久久er精品视频| 日韩精品一区第一页| 亚洲三级在线观看| 国产调教视频一区| 欧美一级一区二区| 91麻豆精品91久久久久同性| 99精品久久免费看蜜臀剧情介绍| 国产一区二区0| 免费欧美在线视频| 午夜伦欧美伦电影理论片| 亚洲精品亚洲人成人网| 中文字幕乱码日本亚洲一区二区| 欧美精品一区二| 日韩欧美成人一区| 日韩写真欧美这视频| 3d动漫精品啪啪1区2区免费 | 99久久婷婷国产| 成人妖精视频yjsp地址| 国产毛片精品视频| 国产成人精品免费看| 国产伦精一区二区三区| 国产一区二区免费在线| 精品一区二区精品| 国产成人精品影视| 成人免费高清在线观看| 99视频有精品| 色偷偷成人一区二区三区91| 91福利视频在线| 91精品免费在线| 欧美不卡激情三级在线观看| www国产亚洲精品久久麻豆| 国产三级久久久| 国产精品网站在线观看| 亚洲欧美日韩中文播放 | 色94色欧美sute亚洲线路一久| 91色视频在线| 欧美日韩国产欧美日美国产精品| 日韩一区二区三区高清免费看看| 精品国产免费久久| 国产视频亚洲色图| 亚洲色图制服丝袜| 婷婷丁香激情综合| 国内精品久久久久影院薰衣草| 成人app软件下载大全免费| 在线视频一区二区三| 91精品国产乱| 国产精品久久久久aaaa| 亚洲欧美日韩国产另类专区 | 亚洲欧美色一区| 亚洲一级在线观看| 秋霞影院一区二区| 国产毛片精品国产一区二区三区| 不卡电影一区二区三区| 欧美视频在线一区二区三区| 精品福利在线导航| 亚洲人一二三区| 久久99久久精品| 国内外精品视频| 久久狠狠亚洲综合| www..com久久爱| 欧美日韩高清影院| 中国av一区二区三区| 日韩成人av影视| 色婷婷香蕉在线一区二区| 这里只有精品视频在线观看| 久久蜜臀中文字幕| 亚洲国产综合色| 成人av网站免费观看| 精品欧美一区二区久久| 亚洲一卡二卡三卡四卡| proumb性欧美在线观看| 欧美一卡2卡三卡4卡5免费| 亚洲激情自拍偷拍| 国产精品夜夜嗨| 91精品久久久久久久久99蜜臂| 日韩伦理免费电影| 国产成人免费视频精品含羞草妖精 | 韩国一区二区在线观看| 欧美三级电影网| 亚洲区小说区图片区qvod| 久88久久88久久久| 欧美日韩高清在线播放| 亚洲精品国产一区二区三区四区在线 | 国产欧美视频一区二区| 久久精品国产色蜜蜜麻豆| 欧美日韩综合一区| 一区二区三区不卡视频| 波多野结衣中文一区| 久久综合九色综合97_久久久| 亚州成人在线电影| 欧洲亚洲精品在线| 中文字幕永久在线不卡| 成人福利视频网站| 久久夜色精品国产噜噜av| 久久精品久久综合| 7777精品伊人久久久大香线蕉经典版下载| 日韩理论片在线| eeuss鲁一区二区三区| 国产精品激情偷乱一区二区∴| 国产精品系列在线观看| 国产色综合久久| 粉嫩绯色av一区二区在线观看| 国产日韩av一区| 成人h动漫精品一区二区| 国产精品久久网站| 91浏览器打开| 亚洲午夜免费电影| 777xxx欧美| 国产又粗又猛又爽又黄91精品| 国产精一品亚洲二区在线视频| 欧美精品一级二级| 亚洲二区在线视频| 色爱区综合激月婷婷| 亚洲大片免费看| 欧美日韩一区二区三区免费看| 亚洲视频一区二区在线| 99国产精品久久久久久久久久久| 国产精品蜜臀在线观看| 国产成人在线观看| 最新国产の精品合集bt伙计| 色婷婷久久综合| 一区二区三区蜜桃| 91精品国产综合久久久久久久|