支持AOT编译发布,Aot编译有那些好处?
- 提高软件程序性能,让界面操作体验更友好。
- Aot编译后生成的程序是二进制代码,可以保密软件程序,不容易破解,保护版权,性能更高。
- Aot编译发布生成的软件文件只有两个文件,使软件封装更简洁
- Aot编译发布可以选择“独立运行、不依赖外部库或运行环境”,不需要安装DotNet SDK就可以运行。
Aot编译的弊端
- Aot编译后无法跨平台运行,需要在各平台单独编译发布
支持版本:GTKSystem.Windows.Forms v1.3.24.85版本及以上
1、工程Aot配置:
<!--框架组件/类库配置-->
<PropertyGroup>
<!--aot发布时使用TargetFramework指定单一sdk,net8.0及以上版本-->
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!--应用常规Aot配置-->
<PropertyGroup>
<!--aot发布时使用TargetFramework指定单一sdk,net8.0及以上版本-->
<TargetFramework>net8.0-windows</TargetFramework>
<PublishAot>true</PublishAot>
<PublishTrimmed>true</PublishTrimmed>
<IsAotCompatible>true</IsAotCompatible>
<InvariantGlobalization>true</InvariantGlobalization>
<PublishReadyToRun>true</PublishReadyToRun>
<!--不依赖运行环境-->
<SelfContained>true</SelfContained>
<!--发布windows平台程序-->
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<!--发布linux平台程序-->
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup>
<RdXmlFile Include="rd.xml" />
</ItemGroup>
2、rd.xml文件配置
<Directives xmlns="http://schemas.microsoft.com/netcore/2013/01/metadata">
<Application>
<Assembly Name="GtkSharp" Dynamic="Required All" />
<Assembly Name="AtkSharp" Dynamic="Required All" />
<Assembly Name="GdkSharp" Dynamic="Required All" />
<Assembly Name="CairoSharp" Dynamic="Required All" />
<Assembly Name="PangoSharp" Dynamic="Required All" />
<Assembly Name="GLibSharp" Dynamic="Required All" />
<Assembly Name="GioSharp" Dynamic="Required All" />
<Assembly Name="GTKSystem.Windows.Forms" DataContractSerializer="Required All" DataContractJsonSerializer="Required All" XmlSerializer="Required All" />
<!-- 演示项目GTKWinFormsApp -->
<!--
<Assembly Name="GTKWinFormsApp" DataContractSerializer="Required All" DataContractJsonSerializer="Required All" XmlSerializer="Required All" ></Assembly>
-->
</Application>
</Directives>
3、如何发布Aot?
使用命令发布
把控制台的命令目录定位到工程项目的根目录
如:cd D:\gtksystem-windows-forms
执行发布命令:dotnet publish -c Release demoApp.csproj
如:D:\gtksystem-windows-forms> dotnet publish -c Release GTKWinFormsApp.csproj
4、发布程序对比
