.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": ""
}

 

这样程序就能使用了,注意程序集记得放到运行环境下。

 

posted @ 2022-03-27 22:03  Jeffrey是个瘦子  阅读(644)  评论(1)    收藏  举报