.net MSBuild和F#'之间有什么区别;那是假的?

.net MSBuild和F#'之间有什么区别;那是假的?,.net,build,f#,msbuild,f#-fake,.net,Build,F#,Msbuild,F# Fake,我是.NET生态系统的新成员,现在正加入来自爪哇岛的F#。我正试着将我的头脑集中在工具和构建过程上 我的理解是,MSBuild是用于.NET应用程序的生成工具,它的生成配置是在.sln和/或.*proj文件的XML中定义的。我假设这类似于java中的pom.xml或build.gradle文件,对吗 不管怎样,如果MSBuild是构建工具,那么假冒到底是为了什么?假冒可以做什么,而MSBuild不能做什么?它只是围绕MSBuild配置文件的一个更友好的“包装器”吗 编辑: 我看到一个名为的视频,

我是.NET生态系统的新成员,现在正加入来自爪哇岛的F#。我正试着将我的头脑集中在工具和构建过程上

我的理解是,MSBuild是用于.NET应用程序的生成工具,它的生成配置是在.sln和/或.*proj文件的XML中定义的。我假设这类似于java中的pom.xml或build.gradle文件,对吗

不管怎样,如果MSBuild是构建工具,那么假冒到底是为了什么?假冒可以做什么,而MSBuild不能做什么?它只是围绕MSBuild配置文件的一个更友好的“包装器”吗

编辑: 我看到一个名为的视频,在其中,主讲者提供了一个原因,至少在VSCode中仍然需要。*proj文件。以下不是直接引述,但在接近尾声时,他说了一些类似的话

就与的通信而言,根本不需要MSBuild系统 编译程序并使代码正常工作。我们不能这么做的唯一原因 之所以要把它拔出来,是因为F#编译器服务 提供工具提示信息、特定类型的类型检查等-取决于 项目文件,但我们正在扩展它,以便 可以使用不同类型的格式


嗯,Fake的思想是构建不仅仅是编译。典型的假设置将实际编译委托给MSBuild,并负责围绕它的任务:运行测试、打包、部署等。虽然在MSBuild中执行这些操作在技术上是可能的,但其XML语法和特性可能会让它成为一种非常痛苦的体验。因此,通常最好将.*proj保持为纯声明性(列出源文件、引用和属性),并使用Fake来描述组成生成的任务序列,其中一个任务是调用MSBuild来执行编译


至于为什么我们仍然倾向于使用MSBuild作为中介,而不是直接从Fake调用编译器,这主要是因为IDE依赖于。*proj作为项目描述格式,并在单击“Build”时调用MSBuild本身,因此,我们希望确保从IDE编译和从命令行编译之间的一致性。

非常感谢您的回答。这很有道理。