.net6的不使用推包和依赖注入,使用反射+加壳的做法遇到的依赖问题解决办法
嗯,.net已经到6了,今年又要推出.net7了,不胜唏嘘。
话不多说,反射+加壳是我们之前在framwork中经常用的用于保护核心底层代码(PS:加壳工具我一般用的dotfuscator,破解版吧混淆代码后,反编译根本看不出来)
但是在 .net5以上,或者带core的低至core 3.1,使用反射时不添加依赖都会报找不到dll文件,对于这个问题其实有点蛋疼。
说说解决办法:
具体原因是core项目中必须添加依赖,不能像之前的项目一样了直接上手就用了。因为netcore的主机kestrel集成中需要添加依赖才能识别
做法是在deps文件的targets的运行时中加入要反射的程序集的文件名,在libraries依赖中加入添加待使用程序集的type,serviceable,sha512:
如下:
一、targets添加dll的runtime:
"Ruanmous.DB.Interface/1.0.0": {
"runtime": {
"Ruanmous.DB.Interface.dll": {}
}
},
"Ruanmous.DB.SqlServer/1.0.0": {
"runtime": {
"Ruanmous.DB.Ruanmous.DB.SqlServer.dll": {}
}
}
二、libraries添加dll的type,serviceable,sha512:
"Ruanmous.DB.Interface/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Ruanmous.DB.SqlServer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
这样程序就能使用了,注意程序集记得放到运行环境下。

浙公网安备 33010602011771号