.Net 7 Native AOT 单文件 无依赖 跨平台

article/2025/10/4 2:09:46

2022.11.18 Native AOT 正式发布,不再是 实验性项目。

.Net 7 Console App & WebApi 使用PublishAOT = true,直接编译 成exe,无rutime依赖,智能裁剪,体积小,启动快。

环境:

1.更新VS2022 到最新版本(支持.net 7)

2.VS2022 安装 使用C++ 桌面开发

 

踩坑:

1.程序里一些 没有应用到的 方法会被裁剪掉,包括泛型注入等。

可以使用 rd.xml 配置来告诉 ILCompiler,那些是需要的

 

 截图是,webapi-serilog 的skins rd.xml配置.

2.遇到 link.exe不是内部或外部命令

这个是安装 C++桌面开发,缺少组件引起的。我这边直接拷贝link.exe到项目目录,解决了编译问题,暂时还没有找到 是什么问题引起的。

可能是注册表:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\Autorun=chcp 65001 引起的,修改为@chcp 65001>nul,就好了

D:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.34.31933\bin\Hostx64\x64

Native AOT deployment overview - .NET | Microsoft Learn

Runtime Directives (rd.xml) Configuration File Reference - UWP applications | Microsoft Learn


http://chatgpt.dhexx.cn/article/6QjLOj1E.shtml

相关文章

AOT和单文件发布对程序性能的影响

AOT和单文件发布对程序性能的影响 以前的.NET框架原生并不支持最终编译结果的单文件发布(需要依赖第三方工具) 1. 前言 这里先和大家介绍一下.NET一些发布的历史,以前的.NET框架原生并不支持最终编译结果的单文件发布(需要依赖…

JIT与AOT

名词解释: JIT(JUST - IN -TIME)实时编译 AOT(AHEAD-OF-TIME)预先编译 它们两者最根本的区别,就在于编译代码的时机,所谓的编译代码,就是把人类写的代码,翻译成机器字节…

Spring6和SpringBoot3的新特性-你不得不了解的AOT原来这么简单

Spring6.0新特性 一、Spring的发展历史 二、AOT AOT是Spring6.0提供的一个新特性,Ahead of Time 提前编译。 1.AOT概述 1.1 JIT和AOT的关系 1.1.1 JIT JIT(Just-in-time) 动态编译,即时编译,也就是边运行边编译,也就是在程序运…

JIT VS AOT

一、AOT,JIT是什么 JIT,即Just-in-time,动态(即时)编译,边运行边编译;AOT,Ahead Of Time,指运行前编译,是两种程序的编译方式 理解 jit、aot 程序主要有两种运行方式:静态编译与动…

对比JIT和AOT,各自的优点与缺点

编译器和解释器是什么 编译器和解释器的区别在于是否编译和执行过程是否是同时进行。 编译器所干的事,将一门语言 X 编译为另一门语言 Y (可以是语言 X、高级语言、低级语言等),整个编译过程涉及词法分析、语法分析、语义分析。…

AOT(超前编译)实例分析

文章目录 一、背景二、具体实施2.1 tfcomfile 是什么?2.2 tfcompile 的功能是什么?2.3使用tfcompile 三、总结 一、背景 前边已经了解了JIT和AOT的基本概念,AOT(提前编译)方式就是在代码执行阶段之前全部编译成目标指令,进入执行…

Java在云原生的破局利器——AOT(JIT与AOT)

导读 JIT(Just-in-Time,实时编译)一直是Java语言的灵魂特性之一,与之相对的AOT(Ahead-of-Time,预编译)方式,似乎长久以来和Java语言都没有什么太大的关系。但是近年来随着Serverles…

AOT概述

11.1、AOT概述 11.1.1、JIT与AOT的区别 JIT和AOT 这个名词是指两种不同的编译方式,这两种编译方式的主要区别在于是否在“运行时”进行编译 (1)JIT, Just-in-time,动态(即时)编译,边运行边编译; 在程序…

Python interpreter state is not initialized. The process may be terminated.

Error occurred when finalizing GeneratorDataset iterator: Failed precondition: Python interpreter state is not initialized. The process may be terminated. [[{{node PyFunc}}]] 当我在使用TensorFlow训练时,出现以上错误。 我也曾以为是&#xff…

subprocess.CalledProcessError: Command ‘[where, cl]‘ returned non-zero exit status 1

当运行程序时,程序报错最后一行错误输出为 subprocess.CalledProcessError: Command [where, c1] returned non-zero exit status 1时,我们把输出得错误往前翻看,如果,报错得第一行 是UserWarning: Error checking compiler vers…

Problem Solving Process of The terminal process terminated with exit code 1

参考前辈的配置VScode C/C环境的经验: 成成赐我力量 bat67 参考之后我的配置 c_cpp_properties.json "configurations": [{"name": "Mac","includePath": ["/usr/include"],"browse" : {"limitS…

compilation terminated.

wqlubuntu:~/Linux/COURSE$ gcc -o fork.c test.c gcc: error: test.c: No such file or directory gcc: fatal error: no input files compilation terminated.今天在编译一个文件时,发现了以上很诡异的情况(貌似我平时也是这样编译的啊,&am…

Try to run this command from the system terminal. Make sure that you use the问题,亲测已解决

今天使用python的时候,想要导包出现了这种问题 直接进入主题, 个人觉得是因为python和Pip的版本不匹配,我是使用的python3.7然后pip使用的是22.4 导致报错,我就把pip退回一下成为20.2.4的,然后就成功了,注意…

Error: spawn cmd ENOENT at Process.ChildProcess._handle.onexit

解决方案:在系统变量 Path 里面加上:%SystemRoot%\system32,关掉终端,重新启动项目。 详细步骤: 1、点击自己的 此电脑 ,右键 属性(R) ; ​ 2、找到 高级系统设置 ; ​ 3、点击 高级 &#x…

Process terminated

idea点击maven下的install出现错误 解决方法:更换maven进行重新配置 1、环境变量中找到MAVEN_HOME,修改新Maven的存放路径 2、修改maven相关配置 方法一:如下图 方法二:File --》 settings (快捷键:Ctr…

406错误

当请求的url后缀为.hml 并且传到页面的数据类型是json时,就会出现406, 解决: 在web.xml中添加一个mapping,然后访问url后缀改为.action

KBL406-ASEMI插件整流桥KBL406

编辑:ll KBL406-ASEMI插件整流桥KBL406 型号:KBL406 品牌:ASEMI 封装:KBL-4 特性:整流桥 正向电流:4A 反向耐压:600V 恢复时间:>2000ns 引脚数量:4 芯片个数…

记录一次生产环境偶发HTTP响应406报错问题

背景 今天在生产环境碰到了一个不算复杂,但是容易让人抓狂的问题。我们的一个Rest接口偶发的报406错误,只在生产环境中出现,大致估算是三千次调用中会出现十几次的这个错误,在测试环境一直无法复现。 首先查了下HTTP的406状态码语…

openresty线上406 Not Acceptable实战排查

因为公司需要对接平台业务,然后其中肯定离不开nginx来做代理转发的,而且我们没有http的地址,全是对外暴露的https的地址。今天就遇到了一些问题,在对接平台的时候它们调过来经过nginx总是406报错,今天我就带大家一起揭…