自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.Net FrameWork下面如何生成AOT呢?

開發(fā) 前端
現(xiàn)在的.Net已經(jīng)到了.Net8了,它的AOT程序已經(jīng)可以單個(gè)Exe運(yùn)行在MacOS/Linux/Win等平臺(tái)上。但是在.Net FrameWorker上面如果想用AOT應(yīng)該怎么搞呢?

前言

有人問.Net FrameWorker可以AOT嗎?其實(shí)AOT預(yù)編譯,在.Net FrameWorker1.0里面就有了。它叫做Ngen,只不過當(dāng)時(shí)稱呼生成本機(jī)映像,實(shí)際上還是一個(gè)東西,也就是預(yù)編譯。很多小伙伴還在用.Net FrameWorker版本,本篇也來看下。

概括

1.介紹

現(xiàn)在的.Net已經(jīng)到了.Net8了,它的AOT程序已經(jīng)可以單個(gè)Exe運(yùn)行在MacOS/Linux/Win等平臺(tái)上。但是在.Net FrameWorker上面如果想用AOT應(yīng)該怎么搞呢?

微軟很早之前就提供了一個(gè)小工具,叫做:Ngen.exe。它跟你安裝Visual Studio的時(shí)候一起安裝進(jìn)來了。它的路徑一般的在:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe //注意這里是64位的

它就是讓不跨平臺(tái)的.Net Frameworker生成本地機(jī)器碼,然后執(zhí)行。

2.用法

應(yīng)該怎么用它呢?

一:代碼假如說你有以下.Net Frameworker代碼,項(xiàng)目名稱NgenDemo

static void Main(string[] args)
{
    Console.WriteLine("hello Ngen Call The Main Method");
    Console.ReadLine();
}

二.注意事項(xiàng):

注意一:把VS里的AnyCpu切換成X64注意二:打開VS命令行工具,選擇64位的注意三:要以管理員的身份運(yùn)行64位VS命令行工具三:生成比如把以上NgenDemo這個(gè)項(xiàng)目放到桌面上。在Visual Studio里面摁F5運(yùn)行下,在目錄:

C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug

下面會(huì)生成:NgenDemo.exe。

打開VS命令行工具:

x64 Native Tools Command Prompt for VS 2022  //注意這里是64位的

運(yùn)行如下命令:ngen.exe install后面跟著NgenDemo.exe路徑

C:\Windows\System32>ngen.exe install "C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe"
Microsoft (R) CLR Native Image Generator - Version 4.8.9065.0
Copyright (c) Microsoft Corporation.  All rights reserved.
1>    Compiling assembly C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe (CLR v4.0.30319) ...

查看下生成的映像是否正確:

C:\Windows\System32>ngen.exe display "C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe"
Microsoft (R) CLR Native Image Generator - Version 4.8.9065.0
Copyright (c) Microsoft Corporation.  All rights reserved.
NGEN Roots:
C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe
NGEN Roots that depend on "C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe":
C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe
Native Images:
NgenDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null <debug>

可以看到映像已經(jīng)生成了。

到目錄:

C:\Windows\assembly\NativeImages_v4.0.30319_64 //注意它這個(gè)最后面的64是64位

里面看到一堆文件,它就是生成本機(jī)映像,以及本機(jī)緩存。此后在本機(jī)運(yùn)行的時(shí)候,可以直接雙擊NgenDemo.exe就可以運(yùn)行了。

如果想要卸載本機(jī)映像,運(yùn)行如下命令:

C:\Windows\System32>ngen.exe uninstall "C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe"
Microsoft (R) CLR Native Image Generator - Version 4.8.9065.0
Copyright (c) Microsoft Corporation.  All rights reserved.
Uninstalling assembly C:\Users\Administrator\Desktop\NgenDemo\bin\x64\Debug\NgenDemo.exe

就可以卸載了。

以上就是.Net Framework生成的本機(jī)映像。它有一些缺陷,每個(gè)機(jī)器上都要生成一次,其次它的程序集緩存不能合并到一起,需要C:\Windows\assembly路徑下的文件支持,才能夠運(yùn)行。

所以后面微軟開啟了corert項(xiàng)目以及現(xiàn)在的nativeAOT項(xiàng)目,都是意圖取代它。

責(zé)任編輯:武曉燕 來源: 江湖評(píng)談
相關(guān)推薦

2024-10-11 14:42:59

2009-12-30 14:12:53

ADO.NET Fra

2023-07-11 00:17:58

.Net8AOTC

2023-07-09 23:55:16

C++RoslynILC

2010-01-06 15:56:18

.Net Framew

2009-08-26 14:23:14

C#.Net Fram

2009-12-15 11:28:34

.NET Framew

2009-07-20 16:12:21

ASP.NET Fra

2010-01-05 10:24:16

.NET Framew

2010-01-06 18:27:06

.Net Framew

2023-09-11 08:40:34

AOTVMP代碼

2009-06-05 09:49:18

修改.NET Frammscorlib.dl

2009-08-26 14:52:19

.NET Framew

2010-01-06 18:21:24

2009-07-09 09:28:19

.Net Micro

2012-01-09 16:00:56

2010-01-05 13:56:37

2010-01-05 14:33:09

.NET Framew

2010-01-05 16:20:46

.NET Framew

2009-12-18 14:55:26

.Net FrameW
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)