coreRT 和 Native 編譯netcore AOT程序

AOT是預編譯成本地程序,避免JIT動態編譯存在的性能問題。linux

netcore一個吸引人的項目,就是基於coreRt 運行時的本地編譯技術,下面我來替你們嘗試一下它究竟表現如何。c++

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <RestoreSources>https://dotnet.myget.org/F/dotnet-core/api/v3/index.json</RestoreSources>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="microsoft.dotnet.ilcompiler" Version="1.0.0-alpha-*" />

  </ItemGroup>

</Project>


首先要在項目文件添加相關的包源,也就是:json

<RestoreSources>https://dotnet.myget.org/F/dotnet-core/api/v3/index.json</RestoreSources>windows

而後引用包:api

<PackageReference Include="microsoft.dotnet.ilcompiler" Version="1.0.0-alpha-*" />app

由於尚未正式版,因此要把版本號寫清楚,不然會提示找不到該包。性能

用命令發佈:測試

dotnet publish -r win-x64 -c releasethis

會提示錯誤:error : Platform linker not found. To fix this problem, download and install Visual Studio 2017 from http://visualstudio.com. Make sure to install the Desktop Development for C++ workload.spa

微軟就是喜歡這裏一塊那裏一塊,就不能好好提供一站式服務嗎?沒辦法,下載安裝c++ 環境。這個要4GB,不知道有什麼越過的方法。

經測試,在win7 sp1 x64 虛擬機環境下能夠正常執行。

image

hello world程序不到4m大小。感受還能夠。

其餘

只支持64位生成,並且不能交叉編譯,也就是不能在windows編譯linux程序。在win7下面測試成功,winxp提示不是有效32位(不知道在xp 64版會怎樣)。不知道可否支持win vista。

ps。當這個native包更新後,他會替換默認的編譯器,不知道怎麼換回來。。

相關文章
相關標籤/搜索