現在微軟有一個開源項目 CoreRT 能通過将托管的 .NET Core 編譯為單個無依賴的 Native 程式
這個項目現在還沒釋出,但是能嘗試使用,可以帶來很多的性能提升
使用 CoreRT 釋出的優點:
隻有一個 exe 檔案,是綠色沒有依賴
釋出的檔案的大小很小,對比 dotnet core 的獨立釋出 50M 的大小會小很多
能在大多數的系統運作
提高很多啟動性能
不足是軟體不是非常穩定,同時隻能支援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 建立配置檔案,在配置檔案添加下面代碼,這樣就可以不在全局添加這個連結
通過 VisualStudio 2017 建立一個新的控制台項目,或者通過指令行使用 dotnet 指令行建立一個新的控制台項目
然後在項目裡面添加 Microsoft.DotNet.ILCompiler 的引用,這裡添加的版本是 1.0.0-alpha-* 版本
也就是在 1.0.0 的任意版本都會被添加,我實際使用的是 1.0.0-alpha-27401-01 版本
現在嘗試寫一個 Hellow 程式,使用指令行釋出,注意建立的項目的 dotnet core sdk 版本暫時需要是 2.0 的版本
注意暫時隻能釋出 x64 的程式,對 x86 暫時沒有支援
現在可以發現釋出的檔案夾裡面有 native 檔案夾,裡面就隻包含一個 exe 程式,同時這個檔案也非常小
代碼請看 https://github.com/dotnet/corert/tree/master/samples/HelloWorld