[ 首頁 / 搜尋 / 管理Discord ] [ Komica首頁 ] [ 跨版面 ] [ 雜談 / / 攝影 / 運動 ] [ 人工智慧 / 程設交流 ] [ 蔚藍檔案 / 英雄聯盟 / 米哈遊 / Minecraft / 魔物獵人 / 勝利女神:妮姬 / Pokémon / 刀劍亂舞 / Unlight ]

/cs/ - 程設交流

Computer science
名稱
Email
主題
回覆
檔案
嵌入
Options
密碼 (用來刪除檔案。)
  • Allowed file types:jpg, jpeg, png, gif, mp4, webm
  • Max filesize is 10 MB.
  • Max image dimensions are 10000 x 10000.
  • You may upload 1 per post.

  [Go to bottom]   [Catalog]   [返回]   [Archive]   [Featured]

File: 1739557312909.png (196 KB, 1562x1000, 截圖 2025-02-15 02.06.09.png)

b12968fe No.279

我是上串開IDE的,想了很有要不要另外開一串。
想說主題不一樣還是開了。
這陣子對我來說的另一個好消息大大概就是有位網友接手了
Notepad++的C#外掛模板維護吧。
之前就一直想寫Notepad++外掛來輔助一些日常操作。

但之前的C#模板太過久遠,編譯出來的外掛換到比較乾淨的環境上就跑不動。
找了半天發現是一個dll依賴.Net Framework 3.5的東西…
想試著班但是沒C++技能搬不動…
直到這幾天無聊去看才發現有人接手。
萬歲。

至於說VSCode,雖然是主流,但除了最初見到VSCode的那個專案很不愉快以外,
VSCode也沒有強大到能夠壓制住那個專案的回憶讓我喜歡上他,
他太過鬆散、隨意、缺乏整合性。
以記事本來說太過複雜臃腫,IDE而言又缺乏IDE的整合性與設計規劃。
混亂的操作路線,龐大複雜的plugin相依性、永遠跑不完的buid / task…
雖然工作上倒是有時候會被逼著用,但那個專案也不怎麼愉快…

總的來說,因為這這些種種我還是決定去惡搞Notepad++,
我想要的是一個強化過的Notepad,IDE的事情就交給專業的IDE去做。

這串就,可能就來聊聊有沒有什麼被 .Net坑到的事蹟吧。

a1898b13 No.280

.Net C#就靠專武visual studio了
不過真的很肥 所以我用Unity開發都是用vscode
只是最新板把vscode支援列為deprecated了
雖然還能用 真不想同時開vs和unity

b12968fe No.287

花了幾個小時(中間有去打混啦)
才終於在mac上面用Rider把一個簡單的
CommandLine專案跑起來。
前期一直跟我說缺configuration、configuration 不正確什麼的。
configuration設定完又跟我說executeble path…
這不是應該自動產生或者能夠推敲的嗎?

不確定是撞 vs->Rider的差異還是windows->mac的差異。
期間為了確定.net有裝對,還特別用command line 下 dotnet run,
很順利跑起來…要不要乾脆用notepad + command line來玩算了,
等等,那不就是VSCode的玩法嗎?

所以決定再給rider一次機會。終於皇天不負苦心人。
還是有完整IDE的體驗比較好。
然後這再次印證了,bin / obj 之類的系統資料夾名稱真的不要隨便佔用。
那裡面是IDE的運作空間。

老實說,論舒服程度目前看起來 Rider還是輸給VS,但Mac上也只有Rider能用了。

真的是活該寫 .Net(還有排斥VSCdoe)

f7bb7ecf No.288

>>287
平常都在win和linux上開發
以前在mac上用xcode被搞到要氣死
用蘋果家的環境開發相較於win和linux有什麼優點嗎?

fb0b597c No.289

>>288

還在體驗中。目前遇到的困難都暫時先當習慣問題。
要在一陣子才會有心得,現階段還分不清楚是不習慣還是平台特性。

以開發.Net 來說,
Mac平台上現在至少又Rider跟VSCode,
應該不至於重演XCode的悲劇。

b12968fe No.290

才發完這篇文沒幾個禮拜就又被雷到。
這次是TLS的問題。
去客戶現場打API一直跟我說沒辦法建立SSL/TLS安全通道。
卡了半天才在各種因緣際會下找到原來是預設的
ServicePointManager.SecurityProtocols 預設值是 SSL3 /TLS,
偏偏客戶算有概念的,系統上TLS1.2以外的協定通通關掉。好喔。

不過,老兄我用的是2022年出的4.8.1耶。
SSL3 跟 TLS 1.0 這兩個東西都多少年前了…
重點是還沒有辦法從設定值(還是其實可以?)裡面調整。
只能乖乖在程式啟動時多一行設定。

是說還有另一個活該的點是.Net專案間的 Nuget 參考不會互通。
所以如果你在A專案裡面用了一大堆 Nuget,
給同一個Solution裡的B專案去用,就會常常發生明明A專案有參考,
但B專案還是要重新加一次同樣的Nuget不然會找不到DLL的狀況。
…這算是做事做半套嗎…

真的是活該寫.Net。

b12968fe No.333

File: 1743310060873.jpg (76.04 KB, 625x676, Screenshot 2025-03-30 1245….jpg)

來個最新案例:TOML

這陣子無聊又把以前寫的日記軟體拿出來改。
這軟體原本有用自己應刻的INI讀取器讀取ini專案檔,但是bug實在太多,
後來聽到有個類似ini的格式叫做TOML,所以一直想要換成TOML,今天終於付諸實行。

上次玩TOML是在Java裡面,用Jackson,只能說 .Net 在這部份真的有一點弱勢。
Jackson應該是因為社群大加上有處理JSON / XML 的通用架構所以感覺支援很完善。
但.Net這邊就規模小很多了,目前比較大的TOML處理器就兩家:Tomlyn、Tomlet。

然後因為我舊程式碼沒有設計好的關係,
所以沒辦法直接把整個專案物件寫出也不想改(沒有把資料跟處理分開),
所以想採用類似Dictionary<string,string> 的作法手動設計格式。
結果發現Tomlet雖然有看起來很正式的TomlDocument類別,
但TomlDocument沒有公開的建構子。丟空字串進去還很友善的送你Exception。
Github上也只有直接序列化/反序列化到model的例子。
總之,看起來就是不支援或是沒辦法輕鬆弄出來。
鑒於時間寶貴,緊急推翻之前決定,換Tomlyn上場。

搞定,果然選對Library很重要。
然後真的又是一個活該寫.Net案例。

e51d84d5 No.335

>>333
我也碰過很多.net版本的問題
不過這算是third-party library的問題
算在.net頭上不太對吧

a176472c No.336

>>335

這是在自嘲啦,不是真的在罵。
畢竟路是我自己選的,誰叫你要選.Net,
TOML這個案例讓我意外的地方是 .Net第三方比我想像中更弱。
原本以為這類library都會有通用的xx document之類類別,
或者說可以把底下的東西挖出來手動作業,然而並沒有。

b12968fe No.341

TOML的部分,最後投降了,
Tomlyn雖然有把TomlTable開出來給我用,但是相關API很不完整。
只是有把東西開出來的程度,GetXXX 直接拿Object要自己轉型整個超出我能力範圍還要加上我跟TOML不熟。
現在只能乖乖把要儲存的部分分開一個類別單獨處理,然後Serialize/Deserialize了。
當初就是想避免這種狀況才想要手動寫文件的。

現在想想NewtonSoftJSON那個從頭包到尾完整又可靠的API真的是奇蹟。

3605a1c3 No.342

>>341
nuget上面好像還有其他的library,可以試試看?

不過主要原因應該是toml本來就比較小眾吧
這種時候你就該自幹一個開源(ry

然後往前看了一下,你本來是用ini
那直接找ini的library會比較輕鬆吧
畢竟是微軟來的東西,應該比較有支援

b12968fe No.343

File: 1743862976456.jpg (137.38 KB, 849x1031, Screenshot 2025-04-05 2156….jpg)

今天用物件寫出寫入搞了快半天,Tomlyn跟Tomlet這兩家都撞了一些奇怪的Bug。
Tomlyn雖然可以順利寫檔案,但是讀進來的時候跟我說無法設定某某Property。
Tomlet則是結構上搞不出想要的結構,然後讀取的時候疑似踩到編碼問題(丟繁體中文進去)。
結論是:已經在這邊卡太久了,先躲回微軟邪惡領土用XML去了。

>>342
>>nuget上面好像還有其他的library,可以試試看?

https://www.nuget.org/packages?q=TOML&includeComputedFrameworks=true&prerel=true&sortby=created-desc
我看看。
nuget上面頭幾個結果看起來像是給新的Extension框架增加TOML支援,
後面有Config的應該都差不多是這樣。
不過個別Package可能可以拆出來用。

剩下大概就 r-toml
https://www.nuget.org/packages/r-toml

DioRed這個
https://www.nuget.org/packages/DioRed.Common.TomlReader

是說DioRed這個是Tomlet的衍生物。不知道有沒有修今天遇到的幾個問題。

>>這種時候你就該自幹一個開源(ry


工程師十大幻覺:我能自幹。
之前也搞INI的時候也幹過了,沒想像中的好幹。
所以還是找個開源抱團比較快,目前的打算是有時間要去抓Tomlet的原始碼下來除錯。
因為Tomlet完成度感覺比Tomlyn高不少,而且Tomlet有Discord伺服器比較好找。

>>那直接找ini的library會比較輕鬆吧


主要是發現TOML這個格式之後覺得比較接近我的理想而且看起來又有一定程度的社群支援。
然後就是前面那一大串。

>>畢竟是微軟來的東西,應該比較有支援


沒有的說,ini 的wiki(Format章節)就有說這東西其實沒有特定格式。
https://en.wikipedia.org/wiki/INI_file
因為結構簡單,所以我猜應該是大家自己實作讀取器,
檔案就安裝的時候帶一個樣板檔進去,要調甚麼設定自己開記事本條這樣吧。

9f41d703 No.345

>>343
有找到這個看起來像是官方的ini api
https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.configuration.ini

XML可以接受的話,直接用json比較好改吧?

92b5570f No.346

>>345

主要是工作上已經很多JSON了,下班想要嘗試點不一樣的。
本來想說Configuration相關的東西是跟設定檔高度綁定的,
不過仔細想想專案檔好像跟設定檔沒有差太多…
再找時間試試看。



[Go to top] [Catalog] [返回][Post a Reply]
刪除貼文 [ ]
[ 首頁 / 搜尋 / 管理Discord ] [ Komica首頁 ] [ 跨版面 ] [ 雜談 / / 攝影 / 運動 ] [ 人工智慧 / 程設交流 ] [ 蔚藍檔案 / 英雄聯盟 / 米哈遊 / Minecraft / 魔物獵人 / 勝利女神:妮姬 / Pokémon / 刀劍亂舞 / Unlight ]