首页 > 其他分享 >关于WinFrom的AOT尝试

关于WinFrom的AOT尝试

时间:2023-10-27 15:23:38浏览次数:43  
标签:尝试 Windows WinFrom System Forms AOT net true

     网上关于WinForm的AOT信息比较少,因为默认官方是无法直接发布出WinForm和wpf的AOT程序的,但是今天发现简书上有个帖子说可以,但是查看完整内容还要收费,这里查了些资料,做下笔记,也方便其他人研究。

 

实际WinForm的程序在.net 7\8上是可以发布的,但是需要加入发布参数“_SuppressWinFormsTrimError”

 

其中.net 7、.net8发布平台id指定有些许差别。

.net 7上:

dotnet publish -r win10-x64 -c Release -p:PublishAot=true -p:_SuppressWinFormsTrimError=true   .net 8上: dotnet publish -r win-x64 -c Release -p:PublishAot=true -p:_SuppressWinFormsTrimError=true   关于发布平台RID的区别,可以参考微软官方文档说明: .NET 运行时标识符 (RID) 目录 - .NET | Microsoft Learn   发布程序基本能运行起来,启动起来确实快上不少,但是部分组件使用可能会报错。   以自己实际测试的程序为例,实际运行时会报错

System.NotSupportedException: COM Interop requires ComWrapper instance registered for marshalling.
at System.Runtime.InteropServices.ComWrappers.ComInterfaceForObject(Object) + 0x56
at System.Windows.Forms.RichTextBox.UpdateOleCallback() + 0x94
at System.Windows.Forms.RichTextBox.OnHandleCreated(EventArgs) + 0x230
at System.Windows.Forms.Control.WmCreate(Message&) + 0x42
at System.Windows.Forms.Control.WndProc(Message&) + 0x536
at System.Windows.Forms.TextBoxBase.WndProc(Message&) + 0x13b
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Interop.User32.WM msg, IntPtr wparam, IntPtr lparam) + 0x70

 

该报错明显与程序使用到的RichTextBox组件相关。

网上一顿检索“System.NotSupportedException: COM Interop requires ComWrapper instance registered for marshalling.”信息,也没有发现相关的解决办法。   另外针对测试程序,还有个区别就是.net 8发布AOT程序体积比.net 7明显偏大(55/23M),根据执行情况,.net 8发布程序应该包含了语言资源(错误提示有中文提示),以及其他资源。  

标签:尝试,Windows,WinFrom,System,Forms,AOT,net,true
From: https://www.cnblogs.com/taozebra/p/17792423.html

相关文章

  • c# winfrom 窗体传值的六种传值方式及实例
    1、通过构造函数特点:传值是单向的(不可以互相传值),实现简单实现代码如下:在窗体Form2中intvalue1;stringvalue2;publicForm2(intvalue1,stringvalue2){InitializeComponent();this.value1=value1;this.value2=value2;}在窗体Form1中这样调用1newForm2......
  • Kraots
    github.com/go-kratos/kratos/v2/app.gopackagekratosimport("context""errors""os""os/signal""sync""syscall""time""github.com/go-kratos/kra......
  • 解决Windows中文用户名导致的Dart AOT编译失败问题
    Windows中文用户名导致的DartAOT编译失败 问题出现时的操作系统及DartSDK版本系统Windows1122H2家庭中文版DartSDKversion=3.1.3(stable)(TueSep2614:25:132023+0000)on"windows_x64" 问题的发生过程我编写了一个简单的DartHelloWorld程序so......
  • pytorch的 jit功能不应该叫aot功能吗?
    jit简介pytorch的jit功能是为了生成类似于计算图的功能,能加快模型速度,便于部署,属于是取tensorflow之长补自己之短。jit由来之所以叫jit,是因为他仍然属于实时解释的范畴,但是能预先生成中间量,“审时度势”地实时运行。参考可以看这位帖子:https://zhuanlan.zhihu.com/p/65088592......
  • 创建一个带有重试机制的请求函数,用于避免请求受限或失败时重新尝试请求。
    /***创建一个带有重试机制的请求函数,用于避免请求受限或失败时重新尝试请求。*@param{function}func-要执行的请求函数。*@param{number}maxCount-最大重试次数,默认为10。*@param{number}time-重试间隔时间(毫秒),默认为1500毫秒。*@returns{object}......
  • WSL2中尝试对TF卡进行一些操作
    背景学习嵌入式linux中,其中不乏需要对TF卡进行操作的,记录下安装USBIPD首先因为是在WSL2中进行的操作,所以需要usbipd这个工具,windows跟wsl2中都需安装相应工具,自行百度https://www.cnblogs.com/qi-xmu/p/16093878.html对TF卡做一些前置操作一般tf卡的文件系统格式为NTFS,......
  • .net8 AOT笔记
    .net8AOT笔记 近期。net8发布了第一个rc版本,刚好近期在做一些.net6下的一些程序验证,顺带试了下。以x64为例系统ubuntu22.4x64 下载.net8sdkhttps://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-8.0.100-rc.1-linux-x64-binaries 安装.net8mkdir-p......
  • 零基础尝试mybatis-plus读写分离
     看了好几篇博友写的文章,关于spring-boot整合mybatis-plus实现读写分离,不过都是缺这少那的,跑不起来,所以自己实操了一次,做个记录 实现方式为使用Aop切面1、增加数据库枚举类/***数据库类型*/publicenumDBTypeEnum{/***主节点*/MASTER,......
  • 一次符号计算的尝试:基于Common Lisp的微分符号计算实现
    绪论背景作为一门具有极强表达能力的语言,CommonLisp适合于编译器实现、符号计算等应用。符号计算对于自动做题机器等方面具有广泛的应用。由于CommonLisp代码本身即为定义良好的抽象语法树(AST),因此对于实现编译器、符号计算具有天然的优势。本文基于语义分析器(SematicAnalyzer......
  • 【231003CHEM-1】电解硫酸铜溶液 化学方程式虽简单 但稳定实验还需要多次尝试
    电解硫酸铜用以湿法炼铜或是制备稀硫酸,书本上的反应方程式倒是很简单,具体如下:阴极:2Cu2++4e-==2Cu阳极:2H2O-4e-==4H++O2总方程式:2Cu2++2H2O=通电=2Cu+O2+4H+或2CuSO4+2H2O=通电=2Cu+O2+2H2SO4(以上公式来自https://qb.zuoyebang.com/xfe-question/questi......