AOT是預編譯成本地程式,避免JIT動態編譯存在的性能問題。netcore一個吸引人的項目,就是基於coreRt 運行時的本地編譯技術,下麵我來替大家嘗試一下它究竟表現如何。 https://dotnet.myget.org/F/dotnet-core/api/v3/index.json Exe n... ...
AOT是預編譯成本地程式,避免JIT動態編譯存在的性能問題。
netcore一個吸引人的項目,就是基於coreRt 運行時的本地編譯技術,下麵我來替大家嘗試一下它究竟表現如何。
<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>
首先要在項目文件添加相關的包源,也就是:
<RestoreSources>https://dotnet.myget.org/F/dotnet-core/api/v3/index.json</RestoreSources>
然後引用包:
<PackageReference Include="microsoft.dotnet.ilcompiler" Version="1.0.0-alpha-*" />
因為還沒有正式版,所以要把版本號寫清楚,否則會提示找不到該包。
用命令發佈:
dotnet publish -r win-x64 -c release
會提示錯誤: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.
微軟就是喜歡這裡一塊那裡一塊,就不能好好提供一站式服務嗎?沒辦法,下載安裝c++ 環境。這個要4GB,不知道有什麼越過的方法。
經測試,在win7 sp1 x64 虛擬機環境下可以正常執行。
hello world程式不到4m大小。感覺還可以。
其他
當這個native包更新後,他會替換預設的編譯器,不知道怎麼換回來。。