我有一个插件系统要移植的目标是win/linux都能用,现在正在从.net framework 4.6.1 移植到 .net5
首先,一些和硬件、系统无关的DLL我已经改写成.net5了,这个还是比较简单的
而其中有些windows下的专用技术不知道该如何移植到.net5
1 现在一个总服务已经移植过去了,就是把windows服务替换成了worker service辅助角色服务,windows下的部署:安装,自启动,运行,停止,卸载都是正常的,只是linux下的部署还没试过,但网上有教程,应该也没啥问题
2 但有些windows api 我就不知道该如何移植或替换成双平台都支持的写法了,或者给出linux下.net5写法也行
FindWindow
GetWindowThreadProcessId
SendMessageTimeout
WM_COPY
这些不知道该如何替换写法
下面几个是用来在服务里用当前系统登陆用户的权限来启动其他进程用的,用来突破sevice0,.net5版本里我用worker service我就砍掉这些了,直接Process.Start,也不知道能不能启动linux进程,也不知道权限够不够
WTSEnumerateSessions
WTSSendMessage
WTSGetActiveConsoleSessionId
CreateProcessAsUser
CloseHandle
3有些Nuget第三方包也改成.net/.net core 3.1版本的,倒是也没出错
4 而有些WMI调用系统信息的部分,也不知道该怎么移植,比如用WMI获取CPUID。主板ID,网卡MAC地址,当前以太网IPv4的IP列表
5 还有些第三方的设备驱动DLL,没有源码,是.net framework的,不知道能不能在linux下调用到,而且还有固定只能x86的dll
6 哪些tcp,net,http监听等代码直接拷贝过来倒是也没出错,不知道能不能在linux下正常工作
7 不支持串口控件,不知道该用啥替代
感觉还是挺多事情要处理的