唐山哪个公司可以制作网站,网络管理软件有哪些,网站底部备案字体设置,佛山大型网站设计公司背景介绍工作中我用到kotlin写代码#xff0c;在orm上ktorm是一款非常优秀的操作db的框架#xff0c;我喜欢用它所以我写了一个插件能够增加我的工作效率#xff0c;这款idea插件的主体逻辑是.net开发的(没错是跨平台的.net)。因为db-schema的解析逻辑我很在以前写的一个vis… 背景介绍工作中我用到kotlin写代码在orm上ktorm是一款非常优秀的操作db的框架我喜欢用它所以我写了一个插件能够增加我的工作效率这款idea插件的主体逻辑是.net开发的(没错是跨平台的.net)。因为db-schema的解析逻辑我很在以前写的一个visualstudio的插件就搞过了,所以改改就行了这里也算是提供给大家另外一个思路去开发idea或者rider插件路吧就是不管你用什么语言开发逻辑然后把你的逻辑打包成可以独立运行然后使用Process进行套壳调用就行了。如何进行套壳调用请参考我写的:ktorm的idea代码生成器插件代码位置src/main/kotlin/CodeGen.kt遇到的问题来自一个issue Mac上Sqlserver运行出错可能是配置问题因为以前都没有在mac机器上测试过所以才没有发现这个bug原因是sqlserver客户端驱动得从System.Data.SqlClient换成 Microsoft.Data.SqlClient因为后者才是跨平台的好了.net自从跨平台开始就已经支持打包独立运行时了。我改好bug后按照往常一样用下面的命令打包windows平台:dotnet publish -r win-x64 -c Release --self-contained truemac平台:dotnet publish -r osx-x64 -c Release --self-contained truelinux平台:dotnet publish -r linux-x64 -c Release --self-contained true由于上面的命令打的包很大所以我加了下面几个参数/p:PublishSingleFiletrue (打包成单个文件)/p:PublishTrimmedtrue (打包的时候去掉不必要依赖减少体积)/p:IncludeNativeLibrariesForSelfExtracttrue(用到指定平台native环境依赖也一起打包到单个文件)这样打出来的单个平台的独立运行包就会从70M左右变成20M左右因为我的idea插件是要支持windows和mac这2个平台的所以需要mac平台20M和windows平台20M都要同时打进一个jar包后大概是18M的大小(压缩能力可以)支持双平台这个大小可以接受吧image但是问题来了换成 Microsoft.Data.SqlClient后运行sqlserver的逻辑会报一个错Column requires a valid DataType.image因为本次改动只是换了一个依赖所以肯定是这个依赖不能Trim果然把Trim的开关给去掉之后就没有这个报错了。找了下相关资料说是可以针对某个依赖不TrimmerItemGroupTrimmerRootAssembly IncludeMicrosoft.Data.SqlClient //ItemGroup不过即使加了这个也没有解决有哪位大佬知道怎么搞请留言教育下我既然不能加trim的话那包就太大了。如何解决呢解决方案https://github.com/dgiagio/warp介绍如下Warp lets you create self-contained single binary applications
making it simpler and more ergonomic to deliver your application to your customers.
A self-contained binary is specially convenient when the technology you use,
such as Node.js, .NET Core, Java and others,
contain many dependencies that must be shipped alongside your application.Warp is written in Rust and is supported on Linux, Windows and macOS.这是一个大佬用Rust写的支持把你的所有依赖打包独立运行时支持windows,mac,linux跨平台的。使用方式首先准备好你要打包的目录这里我新建一个warp文件夹然后把没有trimmer的包含运行时的独立包给放进去image然后去大佬的github上下载windows平台的warp-packer.exe然后运行warp-packer.exe --arch windows-x64 --input_dir warp --exec AntOrmGen.exe --output AntOrmGen.exe打出来的包同样是包含独立运行时的体积减少到了20M同样的方式到mac上进行同样的操作image研究了一下这个打包运行的原理其实它是将你的依赖全部压缩放进了它打出来的成果物里了然后你运行它的时候会解压出来在windows平台的解压路径为C:\Users{User}\AppData\Local\warp\packages\image由于它自带了压缩功能所以体积才减少到了20M左右以上研究遇到的一个坑点我刚开始发现的是有个大佬把上面的工具封装成了一个 dotnet-tool按照下面的命令进行安装$ dotnet tool install --global dotnet-warp可以指定r参数来区分平台dotnet-warp -r win-x64dotnet-warp -r osx-x64这里要注意一点打包mac的得去mac系统,不要在windows系统操作生成mac端,虽然可以打包成功但是拿到mac系统运行会报错。最后自从.net跨平台之后在很多方面都可以派上用场可以用来blazor开发chrome插件(基于webassbemly)link还可以开发idea插件。是不是很好玩我是正东,学的越多不知道也越多。欢迎白嫖 顺手点个赞吧