跳到主要內容

發表文章

Visual Studio Nuget找不到套件,預設套件來源錯誤 Incorrect Nuget default source

今天在筆電上安裝Visual Studio 2022,開個舊專案來測試,發現套件都不能安裝,發現預設的Nuget來源錯誤。 爬文後發現是因為之前用chocolatey安裝套件時,被舊版的Nuget設定舊的預設值。
最近的文章

SonarQube 無法掃描 Dotnet 5.0/6.0專案, 出現 The main branch of this project is empty.

在用SonarQbue 做原始碼掃描時,某一個專案出現 "The main branch of this project is empty."。 原本還在懷疑是不是檔案編碼造成,全部改成有BOM的UTF-8後還是不行;最後用另一個成功專案的csproj改名字後,就可以正常掃描。 所以只好一個一個選項去比對修改再用Sonar-Scanner去掃,最後發現和選項無關,是 Microsoft.NET.Test.Sdk 這個package造成,猜想應該是在Nuget套件管理主控台更新套件時,不小心把測試元件加到主專案,先把這個package從 csproj移掉就解決。

憑證更新後無效?是怪異的快取?

 原本我用 dehydrated 取得 Let's Encrypt 的免費憑證,想說照官網改用 certbot ,怪事就這麼發生了。 怎麼改都是原來的日期,certbot根本沒生效? 索性把Nginx重開也沒用,問題一定是在我本機。接著把Chrome的快取清空,再關閉Chrome重開,結果還是一樣。火大開出Edge,結果還是相同,開始懷疑人生了,這時想到我還有Firefox沒有連過這臺Server,結果.... 確實有更新,我被Chrome/Edge耍了。 原本就此可以直接無視,剛才吃飯時想到如果用無痕視窗呢? 結果就有2個不同的結果,傑克,這實在太神奇了!

ASP.Net 遇到 JSON 格式的日期會差8小時問題

最近開始試著學 ASP.Net Core ,用 .Net 5 寫WebAPI。用前端的 DatePicker 選日期會變成前一天,再追下去,居然是DateTime都會少8小時,這到底是怎麼一回事呢?可能是我之前都沒有用MVC的Model去解析JSON物件,所以沒有發生。 用 股溝 搜尋在 暗黑大的文章 有提到這問題,但我不太相信微軟會犯這種低級錯誤,所以再繼續追下去真正原因。 先假設 Model 裡有一個 public DateTime StartDate {get; set;} WebAPI接收到前端吐回的JSON Date 字串後,會解析成  StartDate.Kind 會是 DateTimeKind.Utc; 這沒錯,若是 DateTime now = DateTime.Now; now.Kind 是 DateTimeKind.Local 所以存到SQL Server時,變成UTC時區,而SQL Server讀取的時候,會依照儲存的時區把資料吐出來,再自己把DateTime.ToString("yyyy/MM/dd")時,就會變成前一天了@@。 目前我的解法是在儲存到SQL Server前, StartDate = StartDate.ToLocalTime();  若是在讀取時轉換應該也行啦,但我的情況和暗黑大一樣,使用者都在這小島內,不會跨時區,用最簡單的方式處理就好。就算有人跨時區使用, DateTime.ToLocalTime() 也不會有錯誤。 結案收工。

Dot Net Nuget Error : error NU1202 Microsoft.OpenApi 1.2.3 不支援任何目標架構

最近編某一個專案,用OpenApi一直出現「Microsoft.OpenApi 1.2.3 不支援任何目標架構」,這樣奇怪的錯誤。猜想是某個設定檔錯誤,於是產生新專案來測試: 我用的是2021/5最新的dotnet 5.0.203,到另一臺電腦測試完全沒問題。所以想應該是元件註刪之類的問題,結果我錯了,在偉大的 StackOverFlow找到答案 ,清除NuGet快取:   nuget locals all --clear 清空快取後,就恢復正常,可以回來工作,繼續爆肝。

FreeBSD 12 mount 掛載 Windows 分享 SMBFS

要在FreeBSD 12 mount Windows 分享目錄,也就是 SMBFS,因為中文檔名發生問題,所以再寫一次這主題。   因為密碼只能用互動式,若要自動就得寫在 /etc/nsmb.conf 以前叫 /etc/nsmbrc.conf ,也可以寫在自己的 ~/.nsmbrc,這裡的伺服器名稱和使用者名稱請用大寫 格式 [伺服器名稱:使用者名稱] password=密碼  指令為 mount_smbfs -N -E UTF-8:UTF-8 //使用者名稱@伺服器名稱/分享名稱 /掛載點 若 伺服器名稱沒有對應,可以在這裡指定 mount_smbfs -N -I 伺服器IP -E UTF-8:UTF-8 //使用者名稱@伺服器名稱/分享名稱 /掛載點 要注意若沒有加上 -E UTF-8:UTF-8  ,中文會出不來 但我的目標是開機便自動掛載,所以寫在 /etc/fstab  //使用者名稱@伺服器名稱/分享名稱 /掛載點 smbfs rw,-EUTF-8:UTF-8,-N 0 0 這樣下次重新開機就自動掛載 Windows 分享