网上关于WinForm的AOT信息比较少,因为默认官方是无法直接发布出WinForm和wpf的AOT程序的,但是今天发现简书上有个帖子说可以,但是查看完整内容还要收费,这里查了些资料,做下笔记,也方便其他人研究。
实际WinForm的程序在.net 7\8上是可以发布的,但是需要加入发布参数“_SuppressWinFormsTrimError”
其中.net 7、.net8发布平台id指定有些许差别。
.net 7上:
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组件相关。