標籤:
從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 "[email protected]"
令人奇怪的是在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跨平台已經是鐵板DingTalk,跨平台的編譯產生工具必不可用,而開發這樣的跨平台工具成本最低效率最高的方法是用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