自己經過多年開發的沉澱後,開發出一個屬於自己的一套Demo項目,亦或是借鑑別人的項目後,優化了一個,然後我們在別的地方使用的時候(可能是下一個公司),如果還想用自己的模板,也可能是供新入職的同事使用,經常會是以下幾個辦法
1、對比着之前的項目結構,在VistulStudio中手動創建一個空的解決方案,從零開始,一點一點搭建。// 麻煩之大,可想而知
2、通過dotnet cli 命令來創建空項目,然後手動。// 會簡化一丟丟,但仍需要一層一層的創建類庫;
3、把Demo工程代碼裏拷貝到U盤,或者上傳到雲盤,然後下載下來,改吧改吧。// 尋找過程很麻煩,依賴代碼承載工具;
4、把Demo工程代碼 Pull 到 Github 上,在別的地方直接 Clone ,然後改吧改吧。 // 開源出源碼,私密性不強;
大家可以看到,上邊的這幾個辦法,都會有這樣或那樣的問題,快的不方便,方便的太侷限。而且上邊的這些都有一個通病,不知道大家是否發現:就是不能快速修改工程名稱!手動修改,可能還碰到不少問題。
所以創建一個公司通用型的項目腳手架,是很有必要的,可以節省 團隊很多的時間。
==================================================================
下面就重點介紹怎麼來創建
1、我們在任意位置新建一個目錄來使用,比如我在F盤新增目錄叫做template
然後我們採用dos命令進入這個文件夾,可以打開這個文件夾,在上面路徑中,輸入cmd回車,就可以了,比如:
這樣,我們就進入了template目錄
2、我們需要引入模板包,執行以下命令
dotnet new install Microsoft.TemplateEngine.Authoring.Templates
3、我們用這個模板包創建一個模板,模板名稱我們自定義,建議跟想要命名的包名一致就行。
dotnet new templatepack --output "FeiAbpTemplate"
執行上述這個命令,會幫我們創建一個工程。
我們可以看到,這個命令幫我們創建了一個文件夾,裏面有一個工程文件和content目錄以及readme.md 文件,readme文件大家自己編輯,主要是項目說明,這裏不再敘述。
4、我們打開那個.csproj的工程文件,用記事本,vscode都行,我們要根據提示編輯這個文件
5、下面,我們就將我們的項目目錄複製到content 目錄下
我將整個解決方案目錄都複製過來了,打開給大家看下結構
這就是我要放到腳手架上的所有項目內容了。
6、我們在項目目錄demo下,新建一個 .template.config 文件夾,注意,是有一個點開頭的,是文件夾,在這個文件夾下,我們
新建一個文件template.json 文件,注意,文件名稱不能改。都是固定的。內容如下:
{ "author": "huangminghui", "classifications": [ "Web/WebAPI" ], //必須,這個對應模板的Tags "name": "Demo", //必須,這個對應模板的Templates "identity": "feiabptemplate", //可選,模板的唯一名稱 "shortName": "feiabptemplate", //必須,這個對應模板的Short Name "tags": { "language": "C#" , "type":"project" }, "sourceName": "Demo", // 可選,要替換的名字 "preferNameDirectory": true // 可選,添加目錄 }
author,就是作者名,自己隨便定義
classifications,也是自己隨便定義分類
name,一般對應我們複製進來的項目名稱
identity,標識,一般取我們的包名
shortName,短名稱,後面採用安裝命令時有用,一般與identity一致就行,除非identity特別難記,那可以定義一個簡短的。
sourceName,要配置,這個就會幫我們替換原有項目模板的項目名稱。即有以demo命名的項目名稱,文件名稱,命名空間都會替換成我們指定的名稱。
其他可不動。
7、接下來,我們就要生成nuget包了
我們進入FeiAbpTemplate 目錄,執行以下命令
dotnet pack
如圖所示,我們就生成成功了。
自動幫我們生成了bin/debug目錄,並生成了nupkg的文件。
8、我們登錄nuget官網
https://www.nuget.org/
沒賬號的自己註冊一個哈
我們上傳剛纔生成的這個nuget包
文件上傳後,直接點submit提交,然後等待審覈。
9、接下來,我們在任意一個目錄下,開是安裝這個項目
比如我在template目錄下運行命令
dotnet new install FeiAbpTemplate
實例化這個包,如果有多個版本,請增加版本號(如上截圖中nuget顯示的寫法),否則將使用最新版。
可以看到我們已經初始化了這個nuget包,裏面有模板,短名稱是kydemo4
這個名稱是對應我們剛纔項目中配置的
發現我剛配置的沒保存,信息還是舊的,但這個不影響。只是名稱不一樣而已。
我最終提交到nuget時的template.json 是這樣的
{ "author": "huangminghui", "classifications": [ "Web/WebAPI" ], //必須,這個對應模板的Tags "name": "Demo", //必須,這個對應模板的Templates "identity": "KYDemo4", //可選,模板的唯一名稱 "shortName": "kydemo4", //必須,這個對應模板的Short Name "tags": { "language": "C#" , "type":"project" }, "sourceName": "Demo", // 可選,要替換的名字 "preferNameDirectory": true // 可選,添加目錄 }
然後創建項目,這時候我們就用短名稱 kydemo4
執行以下命令
dotnet new kydemo4 --name KYMall
這時候就給我們創建好項目了
如果不加name 參數,則默認以上一級文件夾的名稱作爲項目名稱。
這樣,整個腳手架的創建應用就完成了。
可以下下來直接開發用了
參考文檔:
https://learn.microsoft.com/zh-cn/dotnet/core/tutorials/cli-templates-create-template-package?pivots=dotnet-8-0
https://learn.microsoft.com/zh-cn/dotnet/core/tutorials/cli-templates-create-project-template
https://www.cnblogs.com/huguodong/p/12930875.html
注我的個人公衆號,每日更新,獲取更多技術知識