.Net | The Will Will Web

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

新手上路 C# 原始碼產生器 (Source Generators)

最近迷上 C# 原始碼產生器 (Source Generators) 這門相當新穎的技術,跟以往常用的 T4 (Text Template Transformation Toolkit) 產生器技術不太一樣,這個 Source Generators 是屬於 Roslyn 編譯器的技術之一,讓你在專案建置的過程中,可以對正在編譯的 C# 原始碼進行增補,動態加入「額外」的原始碼,最後再編譯在一起,非常神奇又實用的技術,讓人非常有想像空間! 👍

... 繼續閱讀 ...

ASP.NET MVC 5 搭配 EF6 無法啟用 MvcBuildViews 建置檢視頁面的解法

今天在示範 MSBuild 如何設定 MvcBuildViews 屬性時,發現只要有 *.edmx 存在於專案中,建置的時候就會導致出現 Could not load type 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider' 的問題,這個問題想從 Visual Studio 2019 裡面很難看出個端倪,必須改用 MSBuild 才能看出脈絡。今天這篇文章,我將分享這個問題的細部分析,並提供解決方案。

... 繼續閱讀 ...

如何透過 C# 類別庫讀取 Web.config 或 App.config 的參數設定值

我們經常會需要在應用程式中宣告一些參數,好讓我們的程式在不用重新編譯的情況下隨時變更參數設定值,而這樣的機制老早就內建在 .NET 之中。今天我將分享幾個常見的使用案例與範例程式,教大家如何規劃 C# 類別庫 (Class Library) 的設定檔,以及如何從 ASP.NET 應用程式 ( 包含 Web Form 與 MVC )、主控台應用程式 (Console Appliation) 與 Windows Form 應用程式正確設定 app.config 或 web.config 設定檔,以變更類別庫中參數的預設值。

... 繼續閱讀 ...

釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係

長久以來,我發現有許多 .NET 開發人員其實不是很熟悉自己每天都在面對的 .NET Framework, C#, Visual Studio 與 ASP.NET 版本之間的關係,以至於經常在找資料時下錯關鍵字,不容易命中想找的資料,今日特別撰文說明這幾項技術與工具在各版本之間的關係。

... 繼續閱讀 ...

ASP.NET MVC 4 部署到 Windows Azure 如何轉換時區設定

由於公司慢慢地開始將新的專案都移往 Windows Azure 雲端平台做網站代管,漸漸地也開始遇到一些小問題,這些問題在還沒上雲端之前通常不會發生,像我們這次遇到的問題就跟顯示時間有關。由於 Windows Azure 雲端平台是全球性、跨國家、跨地域的服務平台,因此,無論是 .NET 執行環境的時區,或是 SQL Database 資料庫的時區,預設都是以 UTC 世界標準時間 (Coordinated Universal Time) 為主,也因此在上面執行的網站在顯示時間時,你就會覺得時間好像怪怪的,怎麼都不準。今天我就是要來講怎樣利用 ASP.NET MVC 的 範本檢視 (Templated View) 來有效的解決這個問題。

... 繼續閱讀 ...

ASP.NET 2.0 多國語系網站與 Windows 8 的 IE10 語系設定

前天將我的 Windows 8 安裝了簡體中文的 Language pack (語言套件),設定上去後連到我的部落格網站立刻出現嚴重的例外錯誤,因此注意到從 Windows Vista / .NET 3.0+ 開始針對繁體中文簡體中文的 Language Tag 已經都改用 IETF 的標準表示字串,原本我們常用 zh-CHT 代表繁體中文,爾後都會改用 zh-Hant 來表示,若是簡體中文則是 zh-Hans。然而重點是 ASP.NET 2.0 並不支援讀取繁體中文zh-Hant簡體中文zh-Hans,只要嘗試讀取就會立刻引發例外狀況,這是各位開發人員應該注意的地方。

... 繼續閱讀 ...

NuGet 套件: .NET Framework Extensions Packages (netfx)

以往我們要使用一些現成的工具函式庫時,都會去網路上找一些好用的原始碼回來用,但是當作者改版或修掉一些 Bugs 之後我們並不會主動收到通知,就算是公司內部的函式庫一樣會有版本控管的問題,但是若能透過 NuGet 來幫忙做控管,未來所有專案都能夠享受到自動更新這些工具函式原始碼的服務,而最近就興起一個 netfx 專案整理了許多小片段的原始碼,讓你可以輕易的將這些原始碼透過 NuGet 套件管理員下載到專案中,並可在未來自動更新,方便管理這些下載的原始碼。

... 繼續閱讀 ...

如何讓 App_GlobalResources 裡的全域資源檔變成公開類別

在中大型的專案裡,通常會將一整個 Visual Studio 方案 (Solution) 切分為好幾個專案 (Project),在製作多國語系網站時有時也會想把資源檔移到另一個獨立了專案中,如此一來才能方便在日後更新這些多國語系資源設定,不過在 Visual Studio 裡面的 ASP.NET 專案新增資源檔時,其類別的存取等級預設為 internal class,如果直接拖曳到另一個專案就會導致在原本的專案無法存取到這個資源檔的情況,必須進一步設定才行。

... 繼續閱讀 ...

介紹好用 Visual Studio 2010 擴充套件:All-In-One Code Framework Sample Browser

Microsoft All-In-One Code Framework 又稱 1code,集結微軟開發平台中各個技術領域的範例程式碼,目前已經累積了超過六百多個含有完整且可執行的專案原始碼在上面,主要的目的就是用來幫助學習微軟技術的開發人員解決各種工作上常見的問題,而這些範例程式碼的產生都源自於 MSDN 論壇上、社交媒體或其他開發社群等提出的種種開發問題,並由微軟員工撰寫範例程式碼提供給所有開發人員下載參考、觀摩之用,這一切不但都是免費的,更重要的是:如果你覺得他們沒有你要的範例程式,你還可以提出需求,請微軟的工程師幫你撰寫範例程式,Oh~ My GOD~~

... 繼續閱讀 ...

TFS 版本控管時會將檔案設為唯讀,需注意 File.Open 的使用

這是上週遇到的問題,我們有個專案參與開發的人比較多,一直以來都用 TFS 進行版本控管與專案管理,一直以來專案在本機開發環境執行的時候都沒遇到過任何問題,但突然有一天所有團隊成員都發生無法讀取特定檔案的問題 ( Access to the path 'C:\Inetpub\wwwroot\App_Data\TEST.txt' is denied ),查到了程式碼發現是在呼叫 File.Open 時發生的錯誤,但檔案權限明明就沒有問題啊!問題要如何解決,請繼續看下去…

... 繼續閱讀 ...

在類別庫裡如何判斷 .NET 程式執行在 Web 環境下

今天發現一段特別的程式碼,我們有個方案(Solution)裡有個共用的類別庫(Class Library)專案,此類別庫專案同時提供給多個 Windows 應用程式、Windows 服務以及 ASP.NET 應用程式來使用,但同事用了有點複雜的程式撰寫方法取得目前的 .NET 程式是否為 ASP.NET 執行環境,因此特別撰寫一篇短文來提醒較為簡單易懂的方式。

... 繼續閱讀 ...