成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

.net打獨(dú)立運(yùn)行環(huán)境遇到無法trim遇到的bug

不知名網(wǎng)友 / 3363人閱讀

摘要:如何解決呢編輯器解決方案編輯器編輯器介紹如下編輯器編輯器這是一個(gè)大佬用寫的支持把你的所有依賴打包獨(dú)立運(yùn)行時(shí),支持跨平臺(tái)的。

背景介紹

工作中我用到kotlin寫代碼,在orm上ktorm是一款非常優(yōu)秀的操作db的框架,我喜歡用它所以我寫了一個(gè)插件能夠增加我的工作效率,這款idea插件的主體邏輯是.net開發(fā)的(沒錯(cuò)是跨平臺(tái)的.net)。因?yàn)閐b-schema的解析邏輯我很在以前寫的一個(gè)visualstudio的插件就搞過了,所以改改就行了!

這里也算是提供給大家另外一個(gè)思路去開發(fā)idea或者rider插件路吧:

就是不管你用什么語言開發(fā)邏輯,然后把你的邏輯打包成可以獨(dú)立運(yùn)行,然后使用Process進(jìn)行套殼調(diào)用就行了。

如何進(jìn)行套殼調(diào)用請(qǐng)參考我寫的:ktorm的idea代碼生成器插件

代碼位置: src/main/kotlin/CodeGen.kt

遇到的問題

來自一個(gè)issue Mac上Sqlserver運(yùn)行出錯(cuò),可能是配置問題?

因?yàn)橐郧岸紱]有在mac機(jī)器上測(cè)試過,所以才沒有發(fā)現(xiàn)這個(gè)bug:

原因是:sqlserver客戶端驅(qū)動(dòng)得從 System.Data.SqlClient 換成 Microsoft.Data.SqlClient

因?yàn)楹笳卟攀?strong>跨平臺(tái)的

好了,.net自從跨平臺(tái)開始就已經(jīng)支持打包獨(dú)立運(yùn)行時(shí)了。我改好bug后按照往常一樣用下面的命令打包:

  • windows平臺(tái):dotnet publish -r win-x64 -c Release --self-contained true
  • mac平臺(tái):dotnet publish -r osx-x64 -c Release --self-contained true
  • linux平臺(tái):dotnet publish -r linux-x64 -c Release --self-contained true

由于上面的命令打的包很大,所以我加了下面幾個(gè)參數(shù)

  • /p:PublishSingleFile=true (打包成單個(gè)文件)
  • /p:PublishTrimmed=true (打包的時(shí)候去掉不必要依賴減少體積)
  • /p:IncludeNativeLibrariesForSelfExtract=true(用到指定平臺(tái)native環(huán)境依賴也一起打包到單個(gè)文件)

這樣打出來的單個(gè)平臺(tái)的獨(dú)立運(yùn)行包就會(huì)從70M左右變成20M左右,因?yàn)槲业膇dea插件是要支持windows和mac這2個(gè)平臺(tái)的,所以需要mac平臺(tái)20M和windows平臺(tái)20M都要同時(shí)打進(jìn)一個(gè)jar包后大概是18M的大小(壓縮能力可以),支持雙平臺(tái)這個(gè)大小可以接受吧!

?

?

不過即使加了這個(gè)也沒有解決!有哪位大佬知道怎么搞請(qǐng)留言教育下我

既然不能加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.

這是一個(gè)大佬用Rust寫的支持把你的所有依賴打包獨(dú)立運(yùn)行時(shí),支持windows,mac,linux跨平臺(tái)的。

使用方式:

首先準(zhǔn)備好你要打包的目錄,這里我新建一個(gè)warp文件夾,然后把沒有trimmer的包含運(yùn)行時(shí)的獨(dú)立包給放進(jìn)去

image
image

然后去大佬的github上下載windows平臺(tái)的warp-packer.exe

然后運(yùn)行:

warp-packer.exe --arch windows-x64 --input_dir warp --exec AntOrmGen.exe --output AntOrmGen.exe

打出來的包同樣是包含獨(dú)立運(yùn)行時(shí)的,體積減少到了20M

image

同樣的方式到mac上進(jìn)行同樣的操作

image
image

研究了一下這個(gè)打包運(yùn)行的原理,其實(shí)它時(shí)將你的依賴全部壓縮放進(jìn)了它打出來的成果物里了

然后你運(yùn)行它的時(shí)候會(huì)解壓出來,在windows平臺(tái)的解壓路徑為:C:/Users{User}/AppData/Local/warp/packages/

image
image

由于它自帶了壓縮功能,所以體積才減少到了20M左右!

以上研究遇到的一個(gè)坑點(diǎn): 我剛開始發(fā)現(xiàn)的是有個(gè)大佬把上面的工具封裝成了一個(gè) dotnet-tool

按照下面的命令進(jìn)行安裝

$?dotnet?tool?install?--global?dotnet-warp

可以指定r參數(shù)來區(qū)分平臺(tái)

dotnet-warp?-r?win-x64
dotnet-warp?-r?osx-x64

這里要注意一點(diǎn),打包mac的得去mac系統(tǒng),不要在windows系統(tǒng)操作生成mac端,雖然可以打包成功,但是拿到mac系統(tǒng)運(yùn)行會(huì)報(bào)錯(cuò)。

最后

自從.net跨平臺(tái)之后,在很多方面都可以派上用場(chǎng),可以用來blazor開發(fā)chrome插件(基于webassbemly)link,還可以開發(fā)idea插件。是不是很好玩!

?

Enjoy?。。?/p>

關(guān)注公眾號(hào)一起學(xué)習(xí)


如果您覺得閱讀本文對(duì)您有幫助,請(qǐng)點(diǎn)一下“推薦”按鈕,您的“推薦”將是我最大的寫作動(dòng)力!歡迎各位轉(zhuǎn)載,轉(zhuǎn)載文章之后須在文章頁面明顯位置給出作者和原文連接,謝謝。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/125677.html

相關(guān)文章

  • opatch升級(jí)時(shí)非常規(guī)操作技巧

    opatch升級(jí)時(shí)的非常規(guī)操作技巧 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; m...

    IT那活兒 評(píng)論0 收藏2974
  • 崩潰bug日志總結(jié)2

    摘要:出現(xiàn)錯(cuò)誤引發(fā)崩潰日志的流程分析這個(gè)錯(cuò)誤是應(yīng)用的方法總數(shù)限制造成的。 目錄介紹 1.1 java.lang.ClassNotFoundException類找不到異常 1.2 java.util.concurrent.TimeoutException連接超時(shí)崩潰 1.3 java.lang.NumberFormatException格式轉(zhuǎn)化錯(cuò)誤 1.4 java.lang.Illegal...

    sutaking 評(píng)論0 收藏0
  • 業(yè)務(wù)開發(fā)中調(diào)試方法總結(jié)

    摘要:業(yè)務(wù)開發(fā)中的調(diào)試方法總結(jié)這段時(shí)間,接觸了單元測(cè)試,同時(shí)業(yè)務(wù)中遇到了一些需要排錯(cuò)調(diào)試的情況,就把自己的經(jīng)驗(yàn)做個(gè)小結(jié)。但是如果你的業(yè)務(wù)經(jīng)常變化,但是變化的部分并不會(huì)影響單元測(cè)試,那這種情況下的單元測(cè)試性價(jià)比就很高。 業(yè)務(wù)開發(fā)中的調(diào)試方法總結(jié) 這段時(shí)間,接觸了單元測(cè)試,同時(shí)業(yè)務(wù)中遇到了一些需要排錯(cuò)調(diào)試的情況,就把自己的經(jīng)驗(yàn)做個(gè)小結(jié)。 3種調(diào)試方法 狼叔說,常見的三種調(diào)試的境界 初級(jí): 打l...

    KaltZK 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<