• .NET跨平台之Sake和KoreBuild


     

    最近在了解Asp.net Core 1.0(也可称为Asp.net5Asp.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了。

    clipboard[1]

    通过下面Sake的源码可以得知它在windows环境下还是是调用了msbulid.exe,在其他平台使用了xbuild工具进行生成。

    clipboard[2]

    Sake会在执行命令的当前目录下默认寻找名为“src”文件夹,对该文件夹下面的项目进行编译

    Sake自身的项目文件还包括一堆.shade文件,shade文件是Sake生成和编译需要的执行脚本。

    clipboard[3]

    而KoreBuild,本身既是一个Sake的管理工具,可以利用KoreBuild安装Sake和其他Sake运行需要的环境。

    是Sake在执行编译生成时,能够提供Sake不具备的一部分.shade文件。

    clipboard[4]

    打开KoreBuild的安装路径,发现了KoreBuild.cmd文件和KoreBuild.cmd,和一推上面提到的Sake需要用到的shade文件。

    clipboard

    众所周知

    cmd是在windows环境下执行的命令文件;

    sh是其他OS下的执行文件。

    通过KoreBuild.cmd文件的最后一行发现在执行Sake.exe 把KoreBulid文件夹 当成 include-dir参数传进去,

    显式指定Sake要使用的额外shade文件集合。

    clipboard[5]

    执行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文件如下

    clipboard[6]

    里面提到的use-standard-lifecycle.shade是包含在Sake项目下的,而k-standard-goals.shade是包含在KoreBuild中。

    如果想另外添加需要编译的你的项目文件(不只是src路径下的项目),可以在makefile.shade文件后追加

    clipboard[7]

     

     

    总结:

        Sake是一款C#的跨平台编译器,可以运行在任何平台环境,以.shade文件(自身包含的或通过调用参数传入的如KoreBuild)为执行脚本对asp.net core项目进行编译,而KoreBuild是辅助Sake进行编译的工具。

     

    以上有错误的地方还望指出。

     

    相关资料:

     

    作者:B.it

    技术收录网站:核心技术(http://www.coretn.cn)
    出处:http://www.cnblogs.com/ImBit/p/5307762.html 
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

     

     

    核心技术(http://www.localyc.com)
  • 相关阅读:
    Redis的事务、锁及管理命令
    Redis消息队列
    Redis管理实战
    Redis入门部署及持久化介绍
    MySQL的存储引擎
    MHA高可用及读写分离
    jquery css hover
    SqlParameter 中 top 的使用
    Jquery 操作DropDownList 根据条件选中
    js 数值格式化函数
  • 原文地址:https://www.cnblogs.com/ImBit/p/5307762.html
Copyright © 2020-2023  润新知