zoukankan      html  css  js  c++  java
  • dotnet core 使用 CoreRT 将程序编译为 Native 程序

    现在微软有一个开源项目 CoreRT 能通过将托管的 .NET Core 编译为单个无依赖的 Native 程序

    这个项目现在还没发布,但是能尝试使用,可以带来很多的性能提升

    使用 CoreRT 发布的优点:

    1. 只有一个 exe 文件,是绿色没有依赖

    2. 发布的文件的大小很小,对比 dotnet core 的独立发布 50M 的大小会小很多

    3. 能在大多数的系统运行

    4. 提高很多启动性能

    不足是软件不是非常稳定,同时只能支持x64的程序

    使用这个项目是比较难的,本文下面提供的包的版本,请大家按照我的安装的版本使用,因为新的版本可能有一些修改,同时没有更新文档,如果是第一次使用,可能会遇到很多坑。

    首先打开 VisualStudio 2017 安装 C++ 依赖,虽然现在已经有了 VisualStudio 2019 了,但是 C++ 的依赖是需要和 VS 的版本关系,所以这里暂时不能使用 VisualStudio 2019 安装

    点击 Nuget 源设置,在 VisualStudio 的工具->选项->nuget包管理器->nuget包源里面添加 myget 的使用,这个网站是微软的 CI 输出的,里面大量的库都是没有发布的,所以微软也无法保证这些库稳定

    添加一个新的源,路径是 https://dotnet.myget.org/F/dotnet-core/api/v3/index.json 可以通过 dotnet new nuget 创建配置文件,在配置文件添加下面代码,这样就可以不在全局添加这个链接

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <packageSources>
        <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
     </packageSources>
    </configuration>
    

    这个黑科技请看 VisualStudio 给项目添加特殊的 Nuget 的链接

    通过 VisualStudio 2017 创建一个新的控制台项目,或者通过命令行使用 dotnet 命令行创建一个新的控制台项目

    然后在项目里面添加 Microsoft.DotNet.ILCompiler 的引用,这里添加的版本是 1.0.0-alpha-* 版本

        <ItemGroup>
            <PackageReference Include="Microsoft.DotNet.ILCompiler" Version="1.0.0-alpha-*" />
        </ItemGroup>
    

    也就是在 1.0.0 的任意版本都会被添加,我实际使用的是 1.0.0-alpha-27401-01 版本

    现在尝试写一个 Hellow 程序,使用命令行发布,注意创建的项目的 dotnet core sdk 版本暂时需要是 2.0 的版本

    dotnet publish -r win-x64 -c release
    

    注意暂时只能发布 x64 的程序,对 x86 暂时没有支持

    现在可以发现发布的文件夹里面有 native 文件夹,里面就只包含一个 exe 程序,同时这个文件也非常小

    代码请看 https://github.com/dotnet/corert/tree/master/samples/HelloWorld

    更详细的博客请看 使用CoreRT将.NET Core发布为Native应用程序 - KAnts - 博客园

    简析 .NET Core 构成体系 - 帅虫哥 - 博客园

    我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

    如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

    有小伙伴说 NuGet 无法下载,我将下载的资源放在CSDN欢迎小伙伴点击 microsoft.dotnet.ilcompiler.1.0.0-alpha-27527-02.nupkg-CSDN下载 下载

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

  • 相关阅读:
    loaded some nib but the view outlet was not set
    指标评比
    IOS DEVELOP FOR DUMMIES
    软件测试题二
    javascript select
    DOM节点类型详解
    mysql操作
    UVA 10055
    solutions for 'No Suitable Driver Found For Jdbc'
    解决git中文乱码问题
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086998.html
Copyright © 2011-2022 走看看