我們在建置 .NET 專案時,有許多可自訂的建置操作是由 MSBuild 的屬性(Properties)所控制的。重要的是要知道如何以及在哪裡設定屬性值,以達到期望的效果。一般來說,你可以在執行 msbuild.exe
命令列工具的時候指定屬性值,也可以在專案檔(*.csproj
)中加入屬性設定,也可以在專案目錄中加入 Directory.Build.props
屬性定義檔。今天這篇文章,我就打算來介紹這個 Directory.Build.props
檔案的用法,以簡化我們方案中各專案的設定。
... 繼續閱讀 ...
我在幫一個客戶 Code Review 並重構專案的時候,發現他們的專案在 Visual Studio 2019 都可以順利的建置專案,但是透過 Azure Pipelines 使用 MSBuild 建置卻會編譯失敗,錯誤訊息非常不清楚,真的是查了很久才想通問題的主因在哪裡,我覺得值得寫篇文章記錄一下。
... 繼續閱讀 ...
我一年大概都會幫幾家企業導入 Azure DevOps Server 平台,最近幫客戶導入的過程遇到了一個難題。一個方案檔中有 9 個專案,其中有 4 個 .NET Framework 4.7.2 類別庫專案、1 個 .NET Framework 4.7.2 的 ASP.NET Web Forms 專案、2 個 .NET Core 2.1 類別庫專案、1 個 .NET Standard 2.0 專案、2 個 .NET Core 2.1 類別庫專案、1 個 .NET Core 2.1 的 ASP.NET Core 專案。很少看到一個案子用這麼混搭的技術,而這個案子要做 CI/CD 確實也遇到了問題。這篇文章我將說明問題與解決方法!
... 繼續閱讀 ...
在 Visual Studio 2019 裡面使用含有 OpenAPI 規格的 Web API 已經是十分便利,只要規格寫的好,Web API 用戶端函式庫只要一秒鐘就可以產生。但其實這些好用的功能背後都是靠 MSBuild 與 NSwag 做到,今天花了一整天把所有技術細節釐清,釐清之後對這整套作法是如此的豁然開朗,感覺很棒。這篇文章我就來寫寫今日的研究心得!
... 繼續閱讀 ...
今天在示範 MSBuild 如何設定 MvcBuildViews
屬性時,發現只要有 *.edmx
存在於專案中,建置的時候就會導致出現 Could not load type 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider' 的問題,這個問題想從 Visual Studio 2019 裡面很難看出個端倪,必須改用 MSBuild 才能看出脈絡。今天這篇文章,我將分享這個問題的細部分析,並提供解決方案。
... 繼續閱讀 ...
我去年寫過一篇【Visual Studio 2010 建置部署套件與 ASP.NET MVC 的衝突】文章,雖然當時已經知道怎麼解決,但是每次在 發行網站 (Publish) 或 建置部署套件 (Build Deployment Package) 後都要手動刪除 obj 目錄實在覺得很麻煩,今天狠下心研究出一個方法可以在 MvcBuildViews 之前「自動」刪除 obj 目錄裡那些會阻礙建置步驟的相關檔案。
... 繼續閱讀 ...
若使用 Visual Studio 2010 升級現有 ASP.NET 2.0 / 3.5 的專案到 ASP.NET 4.0 在大部分的情況下應該都沒問題才是,就算你在開啟就專案時選擇「不升級」照理說也應該沒問題,但前陣子在測試的過程中還是遇到了幾個不管升級到 ASP.NET 4 還是保留在原本的 ASP.NET 3.5 都有遇到網站進行編譯的情況,以下是一些經驗分享。
... 繼續閱讀 ...
我有時只想單純建置(Build)一個 .NET 專案時,一想到要開啟又肥又重的 Visual Studio 就覺得有點懶懶的,正所謂:「懶惰,是程式開發人員的美德!」。如果你跟我一樣懶,可以考慮安裝 MSBuild Shell Extension 工具。
... 繼續閱讀 ...
在我上次介紹 Web Deployment Projects 的文章中有提到你可以自行修改 Web Deployment Project ( WDP ) 的專案檔( *.wdproj ) 的內容,因為此專案檔實際上是透過 MSBuild 編譯執行的,你可以自行擴充 BeforeBuild, BeforeMerge, AfterMerge, 或 AfterBuild 目標,不過當 WDP for VS2005 升級到 WDP for VS2008 時有做出一些調整,會導致有些自訂動作怎麼寫都不成功。
... 繼續閱讀 ...