日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

發布時間:2023/12/4 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

標題:從零開始實現ASP.NET Core MVC的插件式開發(二) - 如何創建項目模板

作者:Lamond Lu

地址:https://www.cnblogs.com/lwqlun/p/11155666.html

源代碼:https://github.com/lamondlu/DynamicPlugins

在上一篇中,我們介紹了通過一個最簡單了例子,給大家演示了一下,如何在ASP.NET Core Mvc中借助ApplicationPart來開發一個插件。在文章的最后,我們也提出了一些待解決的問題。

首先呢,第一個要解決問題是,每次我們創建一個新的插件,每次都要重新創建項目,添加類庫引用,以及手動修改 csproj 文件,非常的繁瑣。那么有沒有一種方式可以減少這部分操作的?

回想一下,當我們每次使用 Visual Studio創建項目的時候,我們都可以選擇一個項目模板,Visual Studio不僅可以根據我們選擇的模板創建出項目,而且我們所需的程序集引用都會預先配置好,不需要我們重復配置了。那么我們是否可以自己創建一些模板呢?答案是肯定的。

本文中,我就來給大家演示一下,在如何為.NET Core項目創建項目模板,簡化操作流程。

編寫template.json

如果要創建一個項目模板,我們需要做2件事情。

?創建一份項目代碼作為模板?編寫template.json文件

這里我們之前已經創建了一個DemoPlugin1的項目了,所以這次我們可以直接將其轉換成一個模板項目。

首先我們在當前項目中添加一個?.template.config目錄, 并在其中添加一個 template.json 文件。內容如下:

{ "author": "Lamond Lu", "classifications": [ "Web/Plugins" ], "name": "DemoPlugin1", "identity": "LamondDynamicPlugins", "shortName": "ldp", "tags": { "language": "C#" , "type":"project" }, "sourceName": "DemoPlugin1", "preferNameDirectory": true }

配置說明:

?Author屬性指明了模板的作者,必填?classifications屬性指明了模板的分類,必填?name表示模板的名稱,當你使用dotnet new創建項目時,指定的模板名稱,必填?identity表示模板的唯一名稱,可選?shortName表示模板的簡短名稱,必填?tags為當前模板指定了一些標簽?sourceName指定了一個字符串,當使用dotnet new指定-n參數的時候,-n參數的值,會替換sourceName指定的字符串。以當前項目為例,我們的項目文件名稱和所有使用的命名空間都是DemoPlugin1, 但是如果我們生成新的項目不可能都是用這個名字,所以我們需要使用-n參數指定的項目名來替換"DemoPlugin1", 如果當前dotnet new命令指定的-n參數值為DemoPlugin2, 當項目創建成功時候,項目中所有的命名空間以及項目文件名稱,都會使用新的DemoPlugin2?preferNameDirectory, 是否生成相同名稱的目錄,可選。

針對template.json的詳細配置列表,有興趣的同學可以查看一下鏈接https://github.com/dotnet/templating/wiki/Reference-for-template.json

使用dotnet-CLI創建模板

編寫完代碼之后,我們就可以使用如下dotnet-CLI的命令來安裝項目模板了。

dotnet new -i <PATH>

這里<PATH>指定了當前模板項目所在的目錄

運行命令之后,會輸出一個最新的本地模板列表,我們可以發現DemoPlugin1已經作為模板出現在了列表中。

使用dotnet new創建項目

當模板安裝到本地之后,我們就可以使用dotnet new命令來創建項目了,比如我們現在要創建一個新的插件,我們就可以使用如下命令。

dotnet new ldp -n DemoPlugin2

運行命令之后,對應的代碼就生成出來了。來到項目目錄中,我們發現之前的DemoPlugin1.csproj文件已經被更名為DemoPlugin2.csproj, 這說明之前在template.json文件中指定的sourceName屬性幫我我們正確的替換了項目文件名。

隨后,我們可以在查看一個代碼中唯一個控制器,其命名空間也被正確替換了。

怎么樣?這樣是不是比之前手動的方式簡單的很多?

注:如果你想要卸載剛剛安裝的模板,你需要使用dotnet new --debug:reinit命令, 這里使用dotnet new -u命令是無法卸載的,?dotnet new -u只適用與從nuget.org下載下來的模板包

如何將模板打包成Nuget包

除了以上這種使用項目目錄創建項目模板的方式,我們還可以將模板打包成Nuget包供其他人使用。

如果要創建一個模板,這里首先我們需要創建一個Nuget包的元數據文件,這里我們命名為LamondDynamicPlugin.nuspec

<?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"> <metadata> <id>LamondDynamicPlugin</id> <version>1.0.0</version> <description> Creates dynamic plugin in asp.net core </description> <authors>Lamond Lu</authors> <packageTypes> <packageType name="Template" /> </packageTypes> </metadata> </package>

這里設置的屬性都很簡單,唯一需要注意的packageType一定要設置成Template。

編寫好元數據文件之后,我們就可以使用Nuget pack命令來打包了, 這個命令的第一個參數就是指定一個.nuspec文件所在的路徑。

nuget pack DemoPlugin1/LamondDynamicPlugin.nuspec

運行之后,Nuget會生成一個LamondDynamicPlugin.nupkg文件,這個就是我們所說的Nuget包了。

為了使用Nuget包的方式安裝模板,我們可以使用相同的命令dotnet new -i

dotnet new -i LamondDynamicPlugin.nupkg

當然,通常來說我們都會將這個Nuget包發布到nuget.org, 這樣就可以將這個模板分享給其他人了。

發布到Nuget之后,我們就可以使用LamondDynamicPlugin.nuspec中定義的唯一id來安裝模板了。安裝的命令和之前從目錄安裝模板是一樣的。

dotnet new -i LamondDynamicPlugin

如果你想卸載某個模板,只需要使用dotnet new -u [Nuget包]即可。

dotnet new -u LamondDynamicPlugin

總結

本文中我演示了如何使用dotnet-CLI創建一個.NET Core的項目模板,以及如何使用Nuget來打包項目模板供其他人使用,這樣就解決了我們之前手動創建插件項目繁瑣的問題。下一期,我會嘗試將模塊的業務邏輯抽象出來,創建一個核心類庫,大家敬請期待。


總結

以上是生活随笔為你收集整理的从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。