在.net生态系统中.net native的作用对我来说很困惑。我听说它只适用于通用的Windows应用程序,但也听说它是CoreFX的一部分。我认为可以选择编译为.net native可以有很多优点(包括性能)。
是否可以将我的asp.net应用程序(特别是asp.net 5)编译为.net native?
答案 0 :(得分:5)
请参阅ASP.NET团队确认的related GitHub issue。
自发布以来,Microsoft已就.NET Native和.NET Core发布了进一步的公告。我建议你查看Scott Hanselman参加Microsoft Connect 2015活动主题演讲的部分内容。在this excerpt video的11:22分钟,Scott显示将.NET应用程序编译为本机代码然后运行它。他说这是“未来的工作”,所以它似乎尚未准备就绪(我相信该事件中的一个Q& A视频解释说它是在GitHub上的一个开发分支中,但是我太懒了,无法重新调整所有的现在的视频)。目前还不清楚这是否仅适用于控制台应用程序,或者它是否会运行ASP.NET。
答案 1 :(得分:2)
正如托马斯在评论中所说,一旦LLILC结束,这应该是可能的。它的目标是.NET 5,这是ASP.NET 5运行的。我不确定生成的运行时是否可以被称为 .NET Native ,但是LLILC确实计划在提前编译本地编译IL(例如Roslyn的输出)。
另一个选项是使用RyuJIT作为AOT编译器在CoreRT上运行的ASP.NET。今天看起来比LLILC更接近现实。已经看过在CoreRT上编译ASP.NET项目的一些实验,但没有任何实际工作。
[.NET Native使用UTC编译器编译在一些C ++运行时运行(MRT - 最小运行时或托管运行时,不记得,也称为Native运行时)。目前,.NET Native UWP应用程序是特定于Windows的。虽然.NET Native和UWP是在.NET Core下公布的,但这可能会产生误导,因为只有在调试模式下UWP才会以CoreCLR为目标,在发布模式下它会针对Windows特定的本机运行时。 LLILC / CoreRT应该改变它。]