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

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

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

前言:

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

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

 那么接下來開始實現(xiàn)自定義項目模板的創(chuàng)建

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

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

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

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

  創(chuàng)建WebApi項目:

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

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

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

  那么是如何實現(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 服務(wù)器的根目錄下,則此模板參數(shù)解析為 Web 服務(wù)器的根目錄。
year 以 YYYY 格式表示的當前年份。

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

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、導出模板源項目,指定模板項目設(shè)置名稱、說明、圖標等內(nèi)容

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

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

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

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

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

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

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

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

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

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

  解壓文件后,對該文件進行編輯,添加語言標簽(LanguageTag)、平臺標簽(PlatformTag)、項目類型標簽(ProjectTypeTag):  

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <!--項目名稱-->
    <Name>ApiTemplate</Name>
    <!--項目描述-->
    <Description>基礎(chǔ)API模板:支持SwaggerUI、認證、性能監(jiān)控等基礎(chǔ)功能</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)
    服務(wù) (service)
    測試 (test)
    UWP (uwp)
    Web (web)

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

二、 自定義項目模板使用

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

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

 

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

三、總結(jié):

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

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

 項目模板作用非常大,可以將日常積累的功能合并在模板中,可以避免項目開發(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 自定義項目模板的文章就介紹到這了,更多相關(guān)VS2019 自定義項目模板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • session的存儲方式和配置方法介紹

    session的存儲方式和配置方法介紹

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

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

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

    利用ChatGPT與MindShow制作一個PPT的方法詳解

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

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

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

    kali-linux?202202?安裝w3af命令行版的詳細過程

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

    Hadoop文件的存儲格式實例詳解

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

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

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

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

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

    如果你有這33種癥狀了請離開電腦去走走吧!

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

    arcgis?pro?3.0.2?安裝及?geemap安裝過程

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

最新評論

辽宁省| 汤阴县| 定结县| 墨江| 曲靖市| 浦北县| 白城市| 鹤山市| 长兴县| 平潭县| 鹤峰县| 赤峰市| 河源市| 民丰县| 大悟县| 崇左市| 阿拉善右旗| 花莲市| 正阳县| 宜兰市| 增城市| 山阳县| 金溪县| 无为县| 盘山县| 临沧市| 潢川县| 同仁县| 洪江市| 杂多县| 申扎县| 天祝| 五大连池市| 抚松县| 南皮县| 健康| 贵港市| 太保市| 武鸣县| 胶南市| 华亭县|