抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

從以前的 .NET Framework 到現在最新的 .NET 框架,所編譯出的結果已經有些不同。以 .NET 框架的 WPF 專案為例,編譯後最少會生成一組 exe 執行檔與對應的 DLL 。

而現代程式在開發時,經常會使用各種套件或自行撰寫的類別庫來加快開發速度,所以使用的越多,編譯出來的執行檔旁邊的 DLL 檔也越多。

而在一些情況下,會將整個編譯輸出的資料夾壓縮後交付給使用者。不過,當檔案數量過多時,使用者在複製或移動時可能會遺漏,甚至誤刪必要的 DLL。若能將專案打包成單一執行檔,這些問題便能避免。

本篇將紀錄在 .NET WPF 專案中產生單一執行檔的可行方案之一,方便日後做參考。

C#

在物件導向開發中,觀察者模式經常應用於模組化與封裝的設計中。它能讓物件以彈性的方式傳遞訊息,是實現鬆耦合的一種常見做法。

而在 C# 中,常用 eventAction/ FuncRX 等方式實作觀察者模式,看似達成了解耦。但實際上,訂閱者仍需知道事件來源,這造成一種隱性耦合,讓物件之間仍有依賴。

CommunityToolkit.Mvvm 套件中,除了提供 MVVM 架構下常用的 ObservableObjectObservableValidator 外,還支援基於中介者模式的訊息傳遞機制 Messenger

該機制讓訊息的發送者與觀察者無需彼此參照,只需註冊並透過 Messenger 發送訊息,就能由框架轉發給所有訂閱者。為了整合這套機制,套件也提供了 ObservableRecipient 類別,讓 ViewModel 更容易註冊與接收訊息。

這邊要注意的是,使用 Messenger 並不代表完全沒有耦合,而是將依賴轉向了中介物件 ( Messenger 本身),達成相對鬆耦合的設計。

本次將使用 WPF 並搭配 CommunityToolkit.Mvvm 套件的ObservableRecipient 物件與 Messenger 機制,實作訊息傳遞的示範。

C#

MVVM 是 WPF 應用程式開發中的核心架構,透過 資料綁定 (Binding) 和 命令模式 (Command),讓 View 和 ViewModel 解耦,提高可維護性。

在使用過程中,個人最初從最基本的 一對一 關係開始學習,隨著專案需求變得更複雜,也開始嘗試 一對多、多對多,甚至多對一 的組合方式。這些不同的組合變化,某種程度上也反應了自己在 MVVM 架構上的成長,因此想記錄下這四種組合,作為經驗的整理。

C#

ico 檔是 Windows 圖示的一種專用格式,能夠包含多種尺寸的圖片,方便系統根據不同情境自動選擇適合的圖示進行顯示。本次想記錄下使用 GIMP 軟體製作 ico 檔案,並將其應用於 WPF 應用程式中,整個過程並不困難,但因為不常用,時間久了可能會忘記,所以寫下來方便未來做個參考。

C#

Syntax Highlight(語法突顯或語法高亮) 是指在顯示程式碼時,通過不同的顏色來區分語法元素,以提升程式碼的可讀性。

Hexo 以及 Hexo Volantis 主題中,也具備這項功能。先前 blog 都是使用預設顏色,某些顏色搭配後視覺對比不夠明顯,閱讀起來會有點吃力。基於這個原因,最近開始嘗試在 Volantis 主題的各種設定與檔案中尋找調整的方法。

經過一段時間的探索和測試,大致了解了需要修改的檔案。為避免時間久了遺忘這些調整,決定做個紀錄。

本篇僅對顏色和字體大小等參數進行簡單調整,並沒有使用太複雜的方法,例如建立新的設定檔或引用特殊資源。尚不確定是否存在更簡單的方式,若未來有新發現,再進行更新或調整。

TensorFlow 是由 Google 開發的深度學習 Python 套件。最近開始學習深度學習。雖然 Google Colab 是個不錯的學習平台,因為不需要自行安裝環境,但在免費版本中,如果不使用 GPU 運算,訓練速度會有些慢。

最近剛換了一台配備更好顯卡的電腦,但遺憾的是,從 TensorFlow 2.10.0 版本開始,似乎不再支援 Windows 系統。

雖然可以安裝舊版本的 TensorFlow,但如果想使用 GPU 進行運算,相關的套件和CUDA 版本也必須相互匹配。如果電腦裡只能有一個環境,未來在各種版本間切換的話,想想就覺得不太方便。

經過網路搜索和調查後,最終選擇安裝 Anaconda。不僅包含一些基本套件,還能建立多個獨立的虛擬環境。而且,CUDA 和 cuDNN 只需要用一個指令就能安裝,不用自己手動下載,方便了不少。

這邊將過程記錄下來,方便日後有需要重新配置環境時參考。

Hexo 是一個快速、簡單且強大的靜態網站生成器,專門用於建立部落格。在上一篇文章中,講述了如何安裝、基本設定與佈署到Github上。本次將紀錄,涵蓋主題安裝、常用指令介紹、資料夾與文章結構,以及幾款常用的文章撰寫工具。透過這些資料,將能夠快速了解並上手使用 Hexo 。

Hexo 是一個快速、簡單且強大的靜態網站生成器,專門用於建立部落格。它使用 Markdown 語法撰寫文章,將其轉換為靜態 HTML 網頁,並且可以部署到 GitHub Pages 等平台上。Hexo 擁有豐富的插件和主題資源,適合希望快速建立、維護個人網站的使用者。

本次將紀錄,如何進行 Hexo 的基本安裝、設定並佈署到 GitHub Pages中,那麼就開始吧

當需要在 C# WPF 中產生 PDF 時,通常會使用各種功能強大的套件來實現。那代表著需要學習並掌握套件內的類別與方法,才能實現需要的排版。並且過程中還要確保將顯示的資料正確的放入到 PDF 中。 總想著,為什麼製作 PDF 不能像編寫 WPF XAML 一樣簡單呢? 這樣就不用學習其他套件了,而且還能透過 Data Binding 直接將資料綁訂到 UI 上。這樣一來,整個過程應該會很方...
C#

在軟體開發中,處理使用者輸入是一個常見的任務,同時也時常伴隨著數據驗證的需求。 在 WPF 或其他 Windows 平台的 MVVM 架構中,要完成數據驗證,可以選擇使用 ValidationRule、IDataErrorInfo 和 INotifyDataErrorInfo 這幾個類別或接口。 其中 IDataErrorInfo 和 INotifyDataErrorInfo 的部分為 in...
C#




本站使用 Volantis 作為主題,總訪問量為