Dotnet7的 AOT 当前还不支持交叉编译,以下例子是 ubuntu 为例

一 安装dotnet7

目前还是preview 版本 (Preview7)

从官网下载dotnet7 sdk

https://dotnet.microsoft.com/en-us/download/dotnet/7.0

ubuntu 的安装包是一个压缩包,很简单,解压到某个目录即可,假设这里是 /data/bin/dotnet7

二 安装原生编译要用到的库

sudo apt-get install clang zlib1g-dev

三 创建一个Console项目(当前只支持Console,尚未支持Asp.net项目)

mkdir /tmp/hello
cd /tmp/hello
/data/bin/dotnet7/dotnet new console 

code .

四 第三步最后用vscode 打开了项目,修改 csproj 项目文件,添加几行

<PublishAot>true</PublishAot>       //要求发布为AOT
<StripSymbols>true</StripSymbols>   //要求不要合并调试符号
<TrimMode>full</TrimMode>           //要求全裁剪,这是dotnet7的默认配置(当AOT时)

五 打包

/data/bin/dotnet7/dotnet publish -r linux-x64 -c Release

在项目目录下 bin/Release/net7.0/linux-x64 下能看到有 hello 名字的二进制文件,即原生编译后的程序,当前在我的电脑上是 4.9 MB (4,898,328 字节)

同时还有个 hello.dbg 是调试符号文件

标签: csharp, dotnet, dotnet7, aot