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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义Visual Studio.net Extensions 开发符合ABP vnext框架代码生成插件[附源码]

發(fā)布時間:2023/12/4 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义Visual Studio.net Extensions 开发符合ABP vnext框架代码生成插件[附源码] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

我很早之前一直在做mvc5 scaffolder的開發(fā)功能做的已經(jīng)非常完善,使用代碼對mvc5的項目開發(fā)效率確實能成倍的提高,就算是剛進團隊的新成員也能很快上手,如果你感興趣 可以參考?http://neozhu.github.io/MVC5-Scaffolder/#/??https://github.com/neozhu/MVC5-Scaffolder

但是mvc5 scaffolder 有一個致命的弱點,無法通過升級的方式支持.net core mvc 項目,而asp.net core mvc 的 scaffolder通過?https://github.com/aspnet/Scaffolding 詢問得知只能自定義現(xiàn)有的模板 ,無法添加自定義的輸入?yún)?shù),也無法生成定義其它的項目文件,局限性非常大,沒有mvc5 scaffolder那么方便,當(dāng)然這里也不排除我對 https://github.com/aspnet/Scaffolding 項目的研究還不夠深入.

替代方案

那么要在asp.net core 項目中使用類似代碼生成工具,還有一個方案就是自定義擴展Visual Studio.net Extensions插件來實現(xiàn).目前我做了一個原型(還沒有去完善各個類的模板),具體的功能就是在Abp vnext項目中根據(jù)定義好的實體對象(Acme.BookStore.Domain\Book)快速的在Acme.BookStore.Application 項目中生成dto,appservice這些功能類.國內(nèi)有幾abp社區(qū)做的非常好,52abp,abphelper,有的是收費的,也有免費的但版本已經(jīng)很久沒有更新了.

功能演示

技術(shù)點分享

下面我把在開發(fā)Visual Studio.net Extensions中遇到問題和一些自己通過Google查找獲取的資料分享給有這方面需求的朋友.

Visual Studio.net Extensions插件的運行環(huán)境是.net 和 COM(非托管)混合開發(fā),大部分都是非托管API,調(diào)式非常麻煩,但是github上還是有不少的案例可以參考,我就是用?https://github.com/madskristensen/AddAnyFile 項目基礎(chǔ)上添加了自己的功能

主要需要了解的知識點就是AsyncPackage 這個API,另外需要清楚Solution,Project,ProjectItems的關(guān)系.如何讀取Project下面的Class 文件把Class解析出來,包含ClassName,Property,Methods(Functions),這些信息對后面的代碼生成非常重要,這里是無法使用.net Assembly 通過反射來獲取的.當(dāng)你在遍歷ProjectItems時區(qū)分是文件還是文件夾,是類庫,還是資源文件...都需要通過Kind(一竄GUID)去區(qū)分.(https://docs.microsoft.com/en-us/dotnet/api/envdte.constants?view=visualstudiosdk-2017)

剩下的功能就比較簡單了,開發(fā)彈出的Window實現(xiàn)參數(shù)的設(shè)置,比如獲取實體類生成的類文件..這完全用wpf開發(fā)就可以了

接下來根據(jù)這些Class生成對應(yīng)項目文件就簡單了,提供了一個ProjectHelpers 對Project做了一些封裝,可以通過項目路徑,namesapce,添加/刪除文件等常用方法.

功能演示(https://1drv.ms/v/s!AvQJerObIvHt1AM8CpxAuEwkAs2g)

源代碼(https://github.com/neozhu/abpvnextsmartcodegenerator)

如何感興趣可以相互交流一下.

原文地址:https://www.cnblogs.com/neozhu/p/10416530.html

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com


總結(jié)

以上是生活随笔為你收集整理的自定义Visual Studio.net Extensions 开发符合ABP vnext框架代码生成插件[附源码]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。