标签:菜刀 ide 实现 logs 取消 程序包管理 文件的 tin img
本系列目录:Abp介绍和经验分享-目录
今天介绍下,如何使用T4根据json文件自动生成权限定义。
成果是:
截图:
还是从Personball.Demo
项目开始,我从dev
分支新建了一个feature_t4_permissions
。
展开Personball.Demo.Core
程序集,按下述步骤操作
打开程序包管理器控制台,默认项目选中Personball.Demo.Core
,执行如下命令,安装获取相关文件:
//安装过程中会提示是否执行T4,请取消,还有地方需要修改
Install-Package Abplus.T4.PermissionsFromJson
该nuget包带来如下几个文件:
Sample.json
,F4查看属性,确保json文件的属性是嵌入的资源BuilderUtils.cs
,将【YourCompany.YourProject】
替换成Personball.Demo
PermissionBuilder.tt
,将【YourCompany.YourProject】
替换成Personball.Demo
PermissionBuilder.tt
,修正你所使用的Newtonsoft.Json
的引用路径(版本号)Authorization\DemoAuthorizationProvider.cs
,在SetPermissions
方法中追加一行代码BuilderUtils.Build(context, "Sample");
其中SetPermissions
方法中,可以注释掉原先的context.CreatePermission
调用,然后针对每个权限定义json文件,增加代码:
//【Json文件名】替换,如Sample,无文件名后缀
BuilderUtils.Build(context, "【Json文件名】");
如果需要json文件的具体字段定义,请参考BuilderUtils.cs
文件中PermissionJson
类的定义。
生成Core程序集,然后运行PermissionBuilder.tt
(右键点击tt文件,运行自定义工具)
待所有AbpAuthorizeAttribute
中用到的权限字符串常量(如标在TenantAppService
上的[AbpAuthorize(PermissionNames.Pages_Tenants)]
)都替换成T4自动生成的以后,就可以删除Authorization
目录下的PermissionNames.cs
了。
同时可以清理DemoAuthorizationProvider
中SetPermissions
方法中原有的代码,统一全部调用BuilderUtils.Build
。
感谢曾经的同事 @菜刀和板砖 提供本文关键实现。
标签:菜刀 ide 实现 logs 取消 程序包管理 文件的 tin img
原文地址:http://www.cnblogs.com/personball/p/7875700.html