数据分析对网站建设的重要性,dede 汽车网站,张家港网站开发培训广告代理,什么推广方式能快速引流在上一篇文章《使用.NET Core快速开发一个较正规的命令行应用程序》中我们看到了使用自包含方式发布的.NET Core应用中包含了216个文件。我就写一个cat命令用得着这么动真格。。。这写出来的命令行还有人用吗#xff1f;今天我们就来介绍一下MS的另一个开源项目CoreRT。用来解… 在上一篇文章《使用.NET Core快速开发一个较正规的命令行应用程序》中我们看到了使用自包含方式发布的.NET Core应用中包含了216个文件。我就写一个cat命令用得着这么动真格。。。这写出来的命令行还有人用吗今天我们就来介绍一下MS的另一个开源项目CoreRT。用来解决这个棘手的问题。什么是CoreRTCoreRT 是MS一个长期开源项目它早在一年前就已经建立了持续到今。项目目标将.NET Core托管CLR应用程序编译为本地特地平台的单一可执行文件。说白了就是将.NET Core编译为机器码也可以是其他东西如C代码而不再有之前的运行时将.NET变为真正的“静态编译形”语言。基本信息项目地址https://github.com/dotnet/corert支持的平台Windows x64MacOS x64Linux x64/ARMCppCodeGenWebAssemblyBlazor目前还是基于Mono的如果CoreRT成型不出意外会切换到CoreRT可以看到目前没有支持x86所以想跑在x86架构的平台上还是老老实实的吧。。项目状态目前项目版本是alpha也就是说非正式版切还离得比较远。所以不推荐大家用在比较大型或商业项目上会出很多问题。但写个小程序小工具还是没什么太大问题的。Native的优势是什么Native的优势我一说到就激动期待了很久。从早期Core beta2还有这个功能到后面被搁置来不及发布经历了期望与失落。。克制住情绪下面我们来理性分析一下Native的好处。更少的发布文件Native后发布文件明显减少一般情况下我们的.NET应用每引用一个packages就至少增加一个文件*.dllNative会将这些dll都打包在一起。这样极大方便了发布和部署。启动速度更快我们都知道托管语言.NET、Java第一次执行不仅仅是启动所有的方法、语句第一次执行都一样都很慢《在.net中为什么第一次执行会慢》这是托管语言的优势也同样是劣势。Native后就不存在虚拟机技术CLR、JVM也就没有的即时编译这个动作了。得到的好处就是第一次执行跟第二次执行是一样的。更少的内存资源Native后会进一步减少内存的使用不需要加载一些核心“框架”JIT等。Native的缺点Native并不是万能的也存在缺点。但我觉得整体上利大于弊。更强的针对性Native后就基本不能跨平台了这边的跨平台是指一次发布到处运行并不是指程序不能跨平台也就是说如果你要运行在windows上需要单独为windows进行一次发布运行在MacOS上也需要单独进行一次发布运行在Linux上同样也需要单独进行一次发布当然还包括x86\x64\ARM这样的变更都需要重新发布同样JIT也无法为代码提供执行编译优化可以参考之前文章中关于CPU个数的代码优化。使用CoreRT发布你的第一个Native应用程序添加Packages首先因为这个项目还没有正式发布所以你需要添加dotnet团队的每日构建nuget源地址为https://dotnet.myget.org/F/dotnet-core/api/v3/index.json然后安装packagesMicrosoft.DotNet.ILCompiler或者你可以在你的项目路径下执行下面的命令dotnet add package Microsoft.DotNet.ILCompiler -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json –v 1.0.0-alpha-*设置RuntimeIdentifiersRuntimeIdentifiers可设置的内容可以参考上面的平台支持为对应的平台进行发布最终你的项目文件可以像下面这样执行发布命令dotnet publish –c Release –r win-x64dotnet publish –c Release –r linux-x64我们就可以去具体的发布输出目录看到发布结果了可以看到大小为3.7MB还是有优化的空间的毕竟现在还不是正式版。go引用fmt后的build大小差不多是1.9MB。CoreRT目前存在的最大问题CoreRT为什么不推荐大家现在使用很大的一个问题就是现有所有用到反射的类型都必须制定一个Mapping文件。异常麻烦。配置文件内容大概如下泛型也行也得一个个完全去指定所以不推荐大家在太复杂的应用下使用。当然官方最终应该不会允许这个文件存在的。目前官方已经开了对应的issue用来讨论如何解决这个现状。我们就再耐心等等吧。原文https://www.cnblogs.com/justmine/p/8630332.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com