繁体   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