.NET跨平台之Sake和KoreBuild
最近在了解Asp.net Core 1.0(也可稱為Asp.net5\Asp.net vNext)的跨平臺,發現了兩個新的新東西:Sake和KoreBuild(或者已經出了很久)。
通過國內某度查詢資料大部分都是復制黏貼來的,幾乎沒有詳細的介紹。
只好看源碼,Sake可以到Github查到源碼。
KoreBuild可以通過Nuget下載安裝。
?
那KoreBuild和Sake是什么呢?他們和跨平臺有什么關系呢?
首先是Sake
它是Asp.net vNext項目團隊中某些人的一個周末項目。
由于msbuild對vNext項目的生成編譯支持得不是太友好,所以Sake被創建出來。
Sake需要運行在CLR上。如果Sake想運行在Linux環境下,必需要有Mono(含MonoCLR)的支持。
另外目前CoreCLR還不夠完善,或許在不遠的將來,我們就可以徹底拋棄Mono了。
通過下面Sake的源碼可以得知它在windows環境下還是是調用了msbulid.exe,在其他平臺使用了xbuild工具進行生成。
Sake會在執行命令的當前目錄下默認尋找名為“src”文件夾,對該文件夾下面的項目進行編譯
Sake自身的項目文件還包括一堆.shade文件,shade文件是Sake生成和編譯需要的執行腳本。
而KoreBuild,本身既是一個Sake的管理工具,可以利用KoreBuild安裝Sake和其他Sake運行需要的環境。
也是Sake在執行編譯生成時,能夠提供Sake不具備的一部分.shade文件。
打開KoreBuild的安裝路徑,發現了KoreBuild.cmd文件和KoreBuild.cmd,和一推上面提到的Sake需要用到的shade文件。
眾所周知
cmd是在windows環境下執行的命令文件;
sh是其他OS下的執行文件。
通過KoreBuild.cmd文件的最后一行發現在執行Sake.exe 把KoreBulid文件夾 當成 include-dir參數傳進去,
顯式指定Sake要使用的額外shade文件集合。
執行Sake.exe 的參數說明:
Usage: Sake [OPTIONS]+ [target]+
Options:
?-v, --verbose ? ? ? ? ? ? ?increase verbosity
?-h, -?, --help ? ? ? ? ? ? show this message and exit
?-f, --file, --makefile=VALUE?read file as a makefile
?-C, --directory=VALUE ? ? ?change current directory
?-I, --include-dir=VALUE ? ?specifies a directory to search for included?files?
另外KoreBuild會默認讀取名為makefile.shade的腳本作為Sake首先要執行的腳本,通過-f參數傳入,類似的makefile.shade文件如下
里面提到的use-standard-lifecycle.shade是包含在Sake項目下的,而k-standard-goals.shade是包含在KoreBuild中。
如果想另外添加需要編譯的你的項目文件(不只是src路徑下的項目),可以在makefile.shade文件后追加
?
?
總結:
??? Sake是一款C#的跨平臺編譯器,可以運行在任何平臺環境,以.shade文件(自身包含的或通過調用參數傳入的如KoreBuild)為執行腳本對asp.net core項目進行編譯,而KoreBuild是輔助Sake進行編譯的工具。
?
以上有錯誤的地方還望指出。
?
相關資料:
Building future .NET projects is quite pleasant
Compiling .NET Core code on Linux/OS X
An ASP.NET vNext Build and Repo Structure Braindump
原文地址:http://www.cnblogs.com/ImBit/p/5307762.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的.NET跨平台之Sake和KoreBuild的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core 行军记 ---
- 下一篇: Windows 10中国定制版完工!更专