91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

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

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

一、自定義項目模板創建

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

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

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

  創建WebApi項目:

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

  實現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.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自帶的模板參數外,用戶還可以自定義模板參數,但現實用到的不多

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

  模板基本內容實現完成后,則可以進行模板導出操作,步驟如下:

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

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

  B、彈出:導出模板向導頁面

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

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

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

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

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

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

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

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

  打開模板文件的壓縮文件中發現了模板文件

怎么在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、認證、性能監控等基礎功能</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,如下:

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

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

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

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

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

向AI問一下細節

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

AI

乐安县| 华亭县| 沙湾县| 尼玛县| 成都市| 怀柔区| 康马县| 汕尾市| 柘荣县| 闵行区| 建水县| 罗山县| 潞城市| 古丈县| 板桥市| 临湘市| 磴口县| 怀化市| 庆城县| 阳原县| 辽阳市| 平远县| 增城市| 湖北省| 四川省| 紫金县| 乳山市| 松溪县| 潍坊市| 青岛市| 苍山县| 扎赉特旗| 五莲县| 义乌市| 大邑县| 宜春市| 杨浦区| 银川市| 资中县| 专栏| 高要市|