.NET AOT 试玩、构建、发布

前言

3月5日,GTA5 更新了增强版,我随之回忆起了 GTA 的回忆,下载并重新游玩起来,可能因为刚发布外挂还没跟进,公开战局回归了本质,但是依旧不适合运货发展,所以我便想使用以前的卡单方式一劳永逸,结果发现防火墙卡单、文件卡单在增强版都被修复了,甚至差传都不能用了。。。
我便用起来古法,菜单栏右键冻结卡单! 1..2..3..15! 居然还能用!但我发现这并不方便,便自己研究写了一个小工具,可以一键卡单,因为是使用 .NET8 控制台应用开发,顺手研究了一下 AOT 构建,并且将踩到的坑记录下来以便帮助他人。

开发环境准备

要使用 .NET AOT 有几个先决条件:

  1. 必须使用 Visual Studio 2022 或更高版本
  2. 安装 .NET8 SDK 或更高版本
  3. 安装 使用 C++ 的桌面开发 在 Visual Studio Installer 里安装。 (坑1)

创建 AOT 项目

目前 .NET8 似乎支持的 AOT 仅在控制台类应用上,还未支持 Form 项目。

通过 VS 创建一个控制台基于 .NET8 的 AOT 项目。

就和写普通的控制台应用一样。

构建 AOT 项目

构建这部分有两个方案早期只能通过 CLI 构建 AOT 项目,现在经过我的测试发现可以使用 VS 内自带的 发布 进行 AOT 构建。

(坑1) 想要构建 AOT 项目必须安装 使用 C++ 的桌面开发 这个选项,不然就报错
如下图:

我们只需要前往 Visual Studio Installer 里直接勾选 使用 C++ 的桌面开发 选项安装即可,无需修改增删组件。

安装完毕后,重新打开 AOT 项目进行如下方式构建:

  1. 使用古法 .NET CLI 构建
  2. 使用 VS 内置发布工具构建

其一 使用古法 .NET CLI 构建

  1. 使用 cmd cd 进入项目目录
  2. 输入构建命令 dotnet publish
  3. 等待构建出现 成功

其二 使用 VS 内置发布工具构建

  1. 右键解决方案选择发布

  1. 发布方式选择文件夹 (即编译到目录内)

  1. 继续选择文件夹

  1. 文件夹路径可以自己随意改

  1. 设置完毕后,点击 显示所有设置 文字

  1. 部署模式改为 独立、目标运行时改为 win-x64、文件发布选项点开勾选 启用 ReadyToRun 编译

(坑2) 文件发布选项内有个 生成单个文件 的勾选框,它的功能是为了打包资产到一个 exe(dll) 内,但是似乎和 AOT 有冲突,(目前?)只能二选一。
错误内容:PublishAot and PublishSingleFile cannot be specified at the same time.
如下图:

  1. 点击发布按钮,测试是否构建成功,并且日志输出内是否有 Generating native code 即代表 AOT 构建成功。

为了 GTAOL 写的小工具

我管它叫 FreezeV 即 冻结5 (非常言简意赅不是吗?)

如果你想要使用这款工具,可以在我的网盘或者用户群内下载。

参考内容: