文章出處

從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/sakeproject/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/Mvc
cd mvc
sh 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的跨平臺觸手可及。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()