从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的跨平台触手可及。

初识ASP.NET 5中的Sake与KoreBuild的更多相关文章

  1. ASP.NET 5中的Sake与KoreBuild

    初识ASP.NET 5中的Sake与KoreBuild   从github上签出基于ASP.NET 5的MVC 6的源代码进行编译,发现有2个编译命令: build.cmd是针对Windows的编译命 ...

  2. .net core系列之初识asp.net core

    .net core已经发布了2.0版本,相对于1.0的有了很大的完善,最近准备在项目中尝试使用asp.net core,所以就进行了一些简单的研究. 初识asp.net core分为以下几个部分: 1 ...

  3. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  4. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  5. 在ASP.NET Core中使用百度在线编辑器UEditor

    在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...

  6. ASP.NET Core 中文文档 第五章 测试(5.2)集成测试

    原文: Integration Testing 作者: Steve Smith 翻译: 王健 校对: 孟帅洋(书缘) 集成测试确保应用程序的组件组装在一起时正常工作. ASP.NET Core支持使用 ...

  7. ASP.NET Core 中文文档 第四章 MVC(4.1)Controllers, Actions 和 Action Results

    原文:Controllers, Actions, and Action Results 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:许登洋(Seay) Action 和 acti ...

  8. 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

    背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...

  9. ASP.NET Core中的依赖注入(1):控制反转(IoC)

    ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...

随机推荐

  1. dockerfile学习与详解

    1,什么是dockerfile? dockerfile是相当于docker使用的一个脚本,作用是便于实现自定义的镜像image,用语docker build [OPTIONS] PATH ,只需要指定 ...

  2. Apache Spark-1.0.1集群搭建

    欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3866791.html Apache Spark   a fast and general engine ...

  3. SQL Server数据库表重置自增主键号(通常是指ID)

    执行 DBCC CHECKIDENT ('table_name', NORESEED) 以确定列中的当前最大值 然后使用 DBCC CHECKIDENT ('table_name', RESEED,n ...

  4. [转]Python学习资料和教程pdf

    开发工具: Python语言集成开发环境 Wingware WingIDE Professional v3.2.12 Python语言集成开发环境 Wingware WingIDE Professio ...

  5. 通过反射向将EF的实体映射配置加入到实体模型中

    public AdminDbContext() : base("MemberDbContext") { //不使用代理创建导航属性,避免WCF序列化错误 Configuration ...

  6. gdb调式

    1.PCB版的相应目录下执行命令: gdbserver 10.18.13.84:5555 DvdPlayer 2.linux操作系统执行:(如果是android找到android项目路径下的gdb)m ...

  7. Eclipse中Maven项目添加jar包

    各个标签的含义如下: Overview:显示maven项目的一些基本信息Dependencies:添加jar包的页面Plugins:添加maven插件的页面.比如tomcat-maven-plugin ...

  8. ios底层网络请求错误码

    kCFHostErrorHostNotFound = 1, kCFHostErrorUnknown = 2, // Query the kCFGetAddrInfoFailureKey to get ...

  9. HttpClient请求发送的几种用法:

    /// <summary> /// HttpClient实现Post请求 /// </summary> static async void dooPost() { string ...

  10. ABAP 日期时间函数

    HR_JP_MONTH_BEGIN_END_DATE CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE' EXPORTING IV_DATE = ' IMPORTIN ...