最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年04月12日 09:38:19   作者:chaney1992  
這篇文章主要介紹了VS2019 自定義項(xiàng)目模板的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言:

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

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

 那么接下來(lá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ū)分大小寫。)

參數(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.UseStartup<Startup>();
                });
    }
}

  如代碼中需要使用項(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)行研究:

  打開模板文件的壓縮文件中發(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)證模板是否生效:

 打開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)目開發(fā)中重復(fù)造輪子,提高開發(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • session的存儲(chǔ)方式和配置方法介紹

    session的存儲(chǔ)方式和配置方法介紹

    Session又稱為會(huì)話狀態(tài),是Web系統(tǒng)中最常用的狀態(tài),用于維護(hù)和當(dāng)前瀏覽器實(shí)例相關(guān)的一些信息。我們控制用戶去權(quán)限中經(jīng)常用到Session來(lái)存儲(chǔ)用戶狀態(tài),這篇文章會(huì)講下Session的存儲(chǔ)方式、在web.config中如何配置Session、Session的生命周期等內(nèi)容
    2012-05-05
  • java asp分析各種搜索引擎的關(guān)鍵字,自動(dòng)識(shí)別url 中關(guān)鍵字的編碼

    java asp分析各種搜索引擎的關(guān)鍵字,自動(dòng)識(shí)別url 中關(guān)鍵字的編碼

    網(wǎng)上也有一些代碼,大部分都是通過(guò)輸入的關(guān)鍵字來(lái)識(shí)別編碼,并解碼。但是搜索引擎得到的referer來(lái)源地址上的關(guān)鍵字是通過(guò)URLencode編碼過(guò)的,而且各個(gè)網(wǎng)站的關(guān)鍵字Urlencode編碼都不一樣,gbk,utf-8,gb2312等等。
    2009-01-01
  • 利用ChatGPT與MindShow制作一個(gè)PPT的方法詳解

    利用ChatGPT與MindShow制作一個(gè)PPT的方法詳解

    PPT制作是商務(wù)、教育和各種場(chǎng)合演講的重要組成部分,然而,很多人會(huì)花費(fèi)大量時(shí)間和精力在內(nèi)容生成和視覺設(shè)計(jì)方面,為了解決這個(gè)問(wèn)題,我們可以利用兩個(gè)強(qiáng)大的工具——ChatGPT和MindShow,來(lái)提高制作PPT的效率,感興趣的同學(xué)可以參考閱讀
    2023-06-06
  • SpringBoot + Vue + Electron 開發(fā) QQ 版聊天工具的詳細(xì)教程

    SpringBoot + Vue + Electron 開發(fā) QQ 版聊天工具的詳細(xì)教程

    這篇文章主要介紹了SpringBoot + Vue + Electron 開發(fā) QQ 版聊天工具的教程,本文通過(guò)截圖實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • kali-linux?202202?安裝w3af命令行版的詳細(xì)過(guò)程

    kali-linux?202202?安裝w3af命令行版的詳細(xì)過(guò)程

    這篇文章主要介紹了kali-linux?202202?安裝w3af命令行版,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Hadoop文件的存儲(chǔ)格式實(shí)例詳解

    Hadoop文件的存儲(chǔ)格式實(shí)例詳解

    這篇文章主要介紹了Hadoop文件的存儲(chǔ)格式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • qqwry.dat的數(shù)據(jù)結(jié)構(gòu)圖文解釋

    qqwry.dat的數(shù)據(jù)結(jié)構(gòu)圖文解釋

    QQwry.dat可以看作是一種數(shù)據(jù)文件,通過(guò)它能完成以下任務(wù)
    2009-02-02
  • 前端使用svg圖片改色實(shí)現(xiàn)示例

    前端使用svg圖片改色實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了前端使用svg實(shí)現(xiàn)圖片改色的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 如果你有這33種癥狀了請(qǐng)離開電腦去走走吧!

    如果你有這33種癥狀了請(qǐng)離開電腦去走走吧!

    這篇文章主要介紹了如果你有這33種癥狀了請(qǐng)離開電腦去走走吧!本文是關(guān)注程序員、上班族身心健康的文章,需要的朋友可以參考下
    2014-09-09
  • arcgis?pro?3.0.2?安裝及?geemap安裝過(guò)程

    arcgis?pro?3.0.2?安裝及?geemap安裝過(guò)程

    ArcGIS?Pro是一個(gè)專業(yè)的桌面GIS應(yīng)用程序,可以探索,可視化,分析和管理二維和三維數(shù)據(jù),這篇文章主要介紹了arcgis?pro?3.0.2安裝及geemap,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

洛阳市| 巴东县| 祁东县| 西青区| 乌审旗| 鹿泉市| 临沧市| 红河县| 韩城市| 郯城县| 东方市| 尉氏县| 交口县| 六盘水市| 英吉沙县| 姜堰市| 石屏县| 富阳市| 会同县| 昌江| 沙田区| 上高县| 榆林市| 兰考县| 华宁县| 开远市| 谢通门县| 察哈| 桃园市| 漠河县| 阜城县| 玉屏| 包头市| 友谊县| 吕梁市| 阜康市| 丁青县| 渭源县| 泾川县| 保康县| 和平县|