c#aot技术,很多人都觉得是垃圾,没有用,其实还是很有用的。.net发展这么多年,有很多很好的功能,你可以把这些功能做成动态库供rust调用,供c/c++调用。你还真别看不起这些功能,当你需要,又没有库可以使用的时侯,调用.net aot库,也是一个非常好的办法。那你说我喜欢手搓,那当我没说。
c#aot的功能,其实可以取代一部分以前必须由c++来做的动态库功能,当然性能肯定不如c++,但是这个好用呀。并不是所有业务都在乎那一点点性能的,又不是不能用...
做好c# aot项目后,通过不同的命令可以做跨平台交叉编译,经测试通过:
windows:
dotnet publish -r win-x64 -c Release
dotnet publish -r win-arm64 -c Release
macos:
dotnet publish -r mac-x64 -c Release
dotnet publish -r mac-arm64 -c Release
linux:
dotnet publish -r linux-x64 -c Release
dotnet publish -r linux-arm64 -c Release
我们看一下一个正确的c# aot项目的代码:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<InvariantGlobalization>false</InvariantGlobalization>
<PublishAot>true</Publish