文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

CPF 使用C#的Native AOT 发布程序的详细过程

2024-04-02 19:55

关注

微软已经将AOT的包移到Nuget了,之前是在实验测试服务器上的。并且由之前的alpha版本改成了preview版本。

C#的开发效率,接近C++的运行效率,而且可以防止反编译,可以支持大部分反射功能。还有几个小问题,暂时不能支持x86,win7上运行aot的程序可能需要打补丁!

CPF里使用AOT需要将项目改成net5以上版本,因为net5之后才有COM的包装器,如果你只是给自己的控制台程序AOT的话,可以用低版本的netcore

使用方式很简单,编辑csproj,加入下面一段代码,另外CPF的包版本需要换成最新的

<PropertyGroup>
    <IlcOptimizationPreference>Size</IlcOptimizationPreference>
    <IlcGenerateStackTraceData>false</IlcGenerateStackTraceData>
  </PropertyGroup>
  <ItemGroup>
    <RdXmlFile Include="rd.xml" />
    <PackageReference Include="Microsoft.DotNet.ILCompiler" Version="7.0.0-preview.2.22152.2" />
  </ItemGroup>

一般建议根据发布平台的注释掉其他平台的适配器,以及删除其他平台的引用,用来减少发布的程序大小。比如如果发布Windows上的,可以把Mac和Linux的注释掉。

另外需要注意的是使用AOT方式发布的话,需要到对应系统上发布,比如发布Linux的程序,就需要到Linux上发布。不支持跨操作系统编译。

项目里增加个rd.xml文件,你可以根据需要添加一些反射的元数据描述

<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Application>
    <Assembly Name="CPF" Dynamic="Required All" >
      <Type Name="CPF.Animation.KeyFrame`1[[CPF.Drawing.Color,CPF]]" Dynamic="Required All" />
    </Assembly>
    <Assembly Name="CPF.Windows" Dynamic="Required All">
      <Type Name="CPF.Windows.OpenGL.WglCreateContextAttribsARBDelegate" MarshalDelegate="Required All" />
    </Assembly>
  </Application>
</Directives>

一般的,项目右键,选择发布。 如果你喜欢用命令行也是可以的。

选择文件夹

设置好发布路径,完成。

需要注意的是Windows端暂时只能用x64的,x86的好像还不行。需要用Release方式,Debug模式效果不好。设置好了之后,直接点发布。

之后一般等待一两分钟就行,你可以看到输出那边的相关信息

发布成功之后的程序,双击启动秒开,比非AOT发布的启动速度快多了。主程序小于30M,另外依赖一个7M的skia的dll

AOT后的程序也是可以调试的,带上对应的pdb文件,然后采用附加进程的方式附加刚才启动的程序,然后就可以进入断点了

如果出现无法启动程序的情况,你可以先把项目输出类型改成控制台再AOT之后运行,这样就可以看到相关异常信息。比如反射类型缺失什么的,你可以编辑rd.xml文档

更加详细说明可以看看微软的文档 https://github.com/dotnet/runtimelab/tree/feature/NativeAOT/docs/using-nativeaot

到此这篇关于CPF 使用C#的Native AOT 发布程序的文章就介绍到这了,更多相关Native AOT 发布程序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯