從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的跨平臺觸手可及。
文章列表