簡體   English   中英

MSBuild和F#的FAKE有什么區別?

[英]What is the difference between MSBuild and F#'s FAKE?

我是.NET生態系統的新手,我正在使用來自Java-land的F#。 我正試圖圍繞工具和構建過程。

我的理解是MSBuild是.NET應用程序的構建工具,它的構建配置是在.sln和/或。* proj文件中用XML定義的。 假設這類似於java中的pom.xml或build.gradle文件,我是否正確?

無論如何,如果MSBuild是構建工具,那么FAKE到底是什么? 什么可以做那個MSBuild不能做到的? 它只是圍繞MSBuild配置文件更友好的“包裝器”嗎?

編輯:

我看到了一個名為Ionide和F#開源環境的視頻,其中主要的演示者提供了一個原因。至少在VSCode中仍然需要。* proj文件。 以下不是直接引用,但接近結尾,他說的是

在與編譯器通信和使代碼工作方面,根本不需要MSBuild系統。 我們無法將它拉出來的唯一原因是因為F#編譯器服務 - 提供工具提示信息,某種類型的類型檢查等 - 取決於項目文件,但我們正在努力擴展它以便它可以使用不同類型的格式。

好吧,Fake的想法是, 構建不僅僅是編譯 典型的Fake設置將實際編譯委托給MSBuild,並負責圍繞它的任務:運行測試,打包,部署等。雖然在技術上可以在MSBuild中執行這些操作,但它的XML語法和特性可以使它成為可能。一個非常痛苦的經歷。 因此,通常最好保持。* proj純聲明(列出源文件,引用和屬性)並使用Fake來描述構成構建的任務序列,其中一個任務是調用MSBuild來執行編譯。

至於為什么我們仍然傾向於使用MSBuild作為中介,而不是直接從Fake調用編譯器,這主要是因為IDE依賴。* proj作為項目描述格式,並在你點擊“Build”時自己調用MSBuild,所以我們想要確保從IDE編譯和從命令行構建之間的一致性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM