Fake 5提供.NET Core支援
Fake 5在推出預覽版的數個月後於近期釋出。該新版本的.NET應用構建工具重寫了核心,做了一些內部改進,並推出了一些新特性。為更好地瞭解新版本中的改進和特性,InfoQ採訪了Fake的維護者Matthias Dittrich。
\\InfoQ:是什麼促使您推出Fake 5版本?
\\\\\Matthias Dittrich:回顧歷史,我感覺使用Fake曾是一個巨大的負擔,尤其是使用推薦的方法時。因為開發人員必須要學會Paket、FAKE,並引入
\\build.fsx
、paket.dependencies
、paket.lock
等多個全域性檔案,進而Paket才能另外建立多個資料夾(例如paket-files
、packages
和.paket
等),Fake才能建立.fake
資料夾。這樣的架構完全可用,因為所有這些操作背後都有其合理的原因。但這對於一些小型專案或簡單的指令碼而言無疑過於繁瑣。我認為這是妨礙人們採納Fake的一個主要考慮。
\\在.NET Core推出之後,我們得以拋棄過去對.NET的所有認知。開發人員可以釋出一個獨立的應用,無需依賴於任何已安裝的.NET Framework。我感覺到,當前正是重新考慮已有方法的一個很好機會。我開始逐步引導並使用.NET Core移植去實現Fake。當然,我們最終也必須要這樣做。
\\由此,釋出Fake 5的目標主要上是解決上面提及的問題,允許開發人員選擇性退出(opt-out)到一種更為簡單的工作流。此外,Fake 5還要解決其它一些長期以來一直存在的突出問題,例如API的清理和統一,以及分解為更小的模組。
\\有人曾為單一專案貢獻了一種稱為
\\FakeLib
的新功能,該軟體庫已經發展了5到10年!可能在人們毫不知情的情況下,我們已經蓄勢待發。另一方面,這意味著任何人在每次構建時都需要做全部關聯項下載。其中一些關聯項,我們並不知道如何在不破壞整個生態系統的情況下進行修復。這個問題應該如何解決?我們現在另闢蹊徑了。
\
InfoQ:現在開發人員可以通過建立自定義模組擴充套件Fake。您能詳細介紹一下其工作機制嗎?
\\\\\Dittrich: 當然。事實上,這(從使用者角度看)非常簡單。開發人員所需要做的,僅是在任一NuGet源上釋出一個.NET(或者C#、F#等)軟體庫,並在自己構建指令碼的頭部使用Paket語法引用該軟體庫。
\\唯一要滿足的需求,就是該軟體庫應相容NetStandard 2.0。
\\舉個例子。如果我安裝了.NET SDK、建立了一個名為
\\testfakelib
的新資料夾、執行了dotnet new classlib \u0026amp;\u0026amp; dotnet pack
命令,並上傳bin/Debug/testfakelib.nupkg
檔案到NuGet,那麼這時我就完成了準備工作。技術上講,我們在後臺使用Paket完成繁瑣的傳遞依賴關係解析,並用於發現Fake/F#指令碼編譯和執行所需的正確dll檔案。雖然這有點過分簡化了,但至少不會讓使用者百無聊賴。
\
InfoQ:該版本的主要特性或改進是什麼?
\\\\\Dittrich:在我看來,Fake 5的最主要特性如下:
\\
- \\t
無論開發人員當前使用何種環境,無論他們選擇了何種Fake引導或安裝方式,上手工作都更為容易。
\\t\\t- \\t
FAKE現在更適用於指令碼和小型自動化(我們進一步“擴充套件”了構建功能)。
\\t\\t- \\t
開發人員現在可以引入更廣泛的NuGet生態系統,實現構建的擴充套件,也易於自身的擴充套件。
\\t\但是做出選擇依然並非易事。例如,大量來自於社群的幫助正在實現API的清理和模組化。我認為,這些工作的結果值得稱讚。
\\問題在於,我們不可能從一開始就做到完美無瑕。
\\藉助於模組化系統,我們希望能建立更好的模組改進,並在不破壞任何系統的情況下隔離舊模組。
\
InfoQ:為實現支援.NET Core,您做了哪些改進?
\\\\\Dittrich:事實上,我並不認為我們必須做的大量工作,僅是為了支援.NET Core。我們只是利用了現有的機會。技術上講,尤其是自NetStandard 2.0推出後,我們大概僅是重新編譯了大部分程式碼。其中的工作乏善可陳。
\
Fake官方網站上提供了更多的詳細資訊,其中包括Fake 5發行說明。
\\檢視英文原文: Fake 5 Brings .NET Core Support
相關文章
- Ubuntu Core 給物聯網提供更多安全支援Ubuntu
- .NET平臺系列5 .NET Core 簡介
- ASP.NET Core - 配置系統之配置提供程式ASP.NET
- 【譯】ASP.NET Core updates in .NET 5 Preview 8ASP.NETView
- Asp.Net Core Identity 多資料庫支援ASP.NETIDE資料庫
- Docker & ASP.NET Core (5):Docker ComposeDockerASP.NET
- ASP.NET Core - 配置系統之自定義配置提供程式ASP.NET
- WCF服務端的.NET Core支援專案Core WCF 正式啟動服務端
- .NET平臺系列22:.NET Core/.NET5/.NET6 對比 .NET FrameworkFramework
- ASP.NET Core 6.0對熱過載的支援ASP.NET
- .NET 5/.NET Core使用EF Core 5連線MySQL資料庫寫入/讀取資料示例教程MySql資料庫
- .net core web 啟動過程(5)-HostBuilderContextWebUIContext
- 在 .NET Core 5 中整合 Create React appReactAPP
- 關於 .NET Core(.NET Core 指南)
- [翻譯]ASP.NET Core在 .NET 5 Preview 7的更新ASP.NETView
- 快速搞懂.NET 5/.NET Core應用程式的釋出部署
- 使用ASP.NET Core支援GraphQL -- 較為原始的方法ASP.NET
- .NET Core 3.1釋出,支援三年的LTS版本
- asp.net core 實現支援自定義 Content-TypeASP.NET
- ASP.NET Core 入門教程 5、ASP.NET Core MVC 檢視傳值入門ASP.NETMVC
- .Net Core 最優 MD5 開啟方式!初學者建議收藏(支援 SHA1,SHA256,.Net Framework)Framework
- .NET平臺系列26:在 Windows 上安裝 .NET Core/.NET5/.NET6Windows
- .NET平臺系列27:在 Linux 上安裝 .NET Core/.NET5/.NET6Linux
- .NET Core
- .NET Core中的鑑權授權正確方式(.NET5)
- .NET平臺系列24:從.NET Framework遷移到.NET Core/.NET5的技術指南Framework
- .NET Core/.NET5/.NET6 開源專案彙總13:模板引擎
- .NET平臺系列23:.NET Core/.NET5/.NET6 和 .NET Framework 的選擇建議Framework
- 用VSCode開發一個asp.net core2.0+angular5專案(5): Angular5+asp.net core 2.0 web api檔案上傳VSCodeASP.NETAngularWebAPI
- .NET Core/.NET5/.NET6 開源專案彙總10:實用工具
- .NET Core/.NET5/.NET6 開源專案彙總5:許可權管理系統專案
- .NET平臺系列9 .NET Core 3.0 / .NET Core 3.1 詳解
- Dapper in .Net CoreAPP
- .Net Core:限流
- [.Net Core 3.0+/.Net 5] System.Text.Json中時間格式化JSON
- .NET Core/.NET5/.NET6 開源專案彙總7:電商專案
- .NET Core/.NET5/.NET6 開源專案彙總1:常用必備元件元件
- .NET Core/.NET5/.NET6 開源專案彙總4:CMS、Blog專案