首页 > 代码库 > 初识ASP.NET 5中的Sake与KoreBuild

初识ASP.NET 5中的Sake与KoreBuild

从github上签出基于ASP.NET 5的MVC 6的源代码进行编译,发现有2个编译命令:

技术分享

build.cmd是针对Windows的编译命令,build.sh是针对Mac/Linux的编译命令,这本来没什么稀奇,但是打开这2个文件一看:

build.cmd:

packages\Sake\tools\Sake.exe -I packages\KoreBuild\build -f makefile.shade %*

build.sh:

mono packages/Sake/tools/Sake.exe -I packages/KoreBuild/build -f makefile.shade "$@"

令人奇怪的是在build.cmd(针对Windows)中没有使用msbuild,而用的是Sake,更奇怪的是build.sh(针对Mac/Linux)下用的也是Sake,并且都用到了KoreBuild。

Sake是什么?KoreBuild又是什么?好奇心油然而生。

在github上找到了Sake的老巢 —— https://github.com/loudej/sake

Welcome to Sake, a C# language enabled make system.

原来Sake是用C#编写的编译生成工具,或者可以这么理解:一个C#编写的开源的msbuild替代品。

那Sake为何而生?

.NET平台上一统江湖的编译生成工具非msbuild莫属,但msbuild有个天生的缺点——不能跨平台。而.NET跨平台已经是铁板钉钉,跨平台的编译生成工具必不可用,而开发这样的跨平台工具成本最低效率最高的方法是用C#开发,于是Sake应运而生。

为了证实是否真的能跨平台,在写这篇博客之前我特地在Mac上git签出MVC 6的源代码进行编译:

a) 操作命令

git clone https://github.com/aspnet/Mvccd mvcsh build.sh

b) 编译生成过程中的部分提示

技术分享

c) 编译生成成功之后,在artifacts/build文件中生成的nuget打包文件

技术分享

一次成功!

那KoreBuild是什么呢?

网上关于KoreBuild的资料几乎没有,KoreBuild的身影主要出现在github上ASP.NET 5的相关项目中。

打开MVC6的packages\KoreBuild\build文件夹,发现其中主要是一堆的.shade文件以及kvm命令文件。

技术分享

.shade可能是Sake的配置文件,就如.targets(或.csproj)是msbuild的配置文件。

我猜测KoreBuild只是一个针对Sake的编译生成配置与脚本的打包。

初识Sake与KoreBuild之后的印象是:作为.NET平台的跨平台编译生成工具,Sake+KoreBuild让ASP.NET的跨平台触手可及。

初识ASP.NET 5中的Sake与KoreBuild