首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
关于.net9发布单体exe步伐无法打开问题详解 ...
返回列表
发新帖
关于.net9发布单体exe步伐无法打开问题详解
[复制链接]
发表于
昨天 20:56
|
显示全部楼层
|
阅读模式
一、疑难杂症📍
某天,开开心心的使用了最新的.net9开发了一个winform步伐,在
发布
成x64架构的单文件exe后,在电脑上面竟然打不开,经过多次尝试后发现x86
版本
的在本地电脑上测试没有问题,但是一
发布
成x64模式则会举行报错
二、场景重现
发布
配置
如上,当使用系统自带的事件查看器drump错误,抓到数据如下
Version=1
EventType=APPCRASH
EventTime=134012782822231598
ReportType=2
Consent=1
UploadTime=134012783158499355
ReportStatus=268439648
ReportIdentifier=34beb59a-eca4-4639-82ac-a6a356f6c0ee
IntegratorReportIdentifier=7be766a2-0334-435e-8f1f-9de061e719c4
Wow64Host=34404
NsAppName=工具.exe
OriginalFilename=工具.dll
AppSessionGuid=00003770-0001-0205-fae8-4e7bea1bdc01
TargetAppId=W:0006860c34e8850dfd245f76021df6a94dbd00000000!0000084e67ec0f97c6d906b825c90602a2ce4666eb41!工具.exe
TargetAppVer=2025//06//16:18:48:31!0!工具.exe
BootId=4294967295
TargetAsId=2372
IsFatal=1
EtwNonCollectReason=4
Response.BucketId=6bd1075ac6d404d421418afefa96e95b
Response.BucketTable=4
Response.LegacyBucketId=1243427799861487963
Response.type=4
Sig[0].Name=应用程序名
Sig[0].Value=工具.exe
Sig[1].Name=应用程序
版本
Sig[1].Value=1.0.0.0
Sig[2].Name=应用程序时间戳
Sig[2].Value=685066ff
Sig[3].Name=故障模块名称
Sig[3].Value=KERNELBASE.dll
Sig[4].Name=故障模块
版本
Sig[4].Value=10.0.19041.1202
Sig[5].Name=故障模块时间戳
Sig[5].Value=c9db1934
Sig[6].Name=异常
代码
Sig[6].Value=c0000602
Sig[7].Name=异常偏移
Sig[7].Value=000000000010be3e
DynamicSig[1].Name=OS 版本
DynamicSig[1].Value=10.0.19044.2.0.0.256.191
DynamicSig[2].Name=区域设置 ID
DynamicSig[2].Value=2052
DynamicSig[22].Name=其他信息 1
DynamicSig[22].Value=162d
DynamicSig[23].Name=其他信息 2
DynamicSig[23].Value=162dc7323adee510a77f5cd94c6dfe5f
DynamicSig[24].Name=其他信息 3
DynamicSig[24].Value=cdd1
DynamicSig[25].Name=其他信息 4
DynamicSig[25].Value=cdd1120f7c4950a490c053074b983c78
UI[2]=C:\win-x64\工具.exe
LoadedModule[0]=C:\win-x64\工具.exe
LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\Windows\System32\KERNEL32.DLL
LoadedModule[3]=C:\Windows\System32\KERNELBASE.dll
LoadedModule[4]=C:\Windows\SYSTEM32\apphelp.dll
LoadedModule[5]=C:\InetPub\ftproot\Tipray\Ldterm\ghijt64.DLL
LoadedModule[6]=C:\Windows\System32\ADV
API
32.dll
LoadedModule[7]=C:\Windows\System32\msvcrt.dll
LoadedModule[8]=C:\Windows\System32\sechost.dll
LoadedModule[9]=C:\Windows\System32\RPCRT4.dll
LoadedModule[10]=C:\Windows\System32\ole32.dll
LoadedModule[11]=C:\Windows\System32\ucrtbase.dll
LoadedModule[12]=C:\Windows\System32\combase.dll
LoadedModule[13]=C:\Windows\System32\GDI32.dll
LoadedModule[14]=C:\Windows\System32\win32u.dll
LoadedModule[15]=C:\Windows\System32\gdi32full.dll
LoadedModule[16]=C:\Windows\System32\msvcp_win.dll
LoadedModule[17]=C:\Windows\System32\USER32.dll
LoadedModule[18]=C:\Windows\System32\OLEAUT32.dll
LoadedModule[19]=C:\Windows\System32\SHELL32.dll
LoadedModule[20]=C:\Inetpub\ftproot\Tipray\LdTerm\LdSmartEnc64.dll
LoadedModule[21]=C:\Windows\SYSTEM32\FLTLIB.DLL
LoadedModule[22]=C:\Windows\System32\IMM32.DLL
LoadedModule[23]=C:\Inetpub\ftproot\Tipray\LdTerm\HookCreateProcessInternal64.dll
LoadedModule[24]=C:\Inetpub\ftproot\Tipray\LdTerm\LdUserInjectDll64.dll
LoadedModule[25]=C:\Inetpub\ftproot\Tipray\LdTerm\HookDataInteractionx64.dll
LoadedModule[26]=C:\Inetpub\ftproot\Tipray\LdTerm\LdHook64.dll
LoadedModule[27]=C:\Windows\System32\PS
API
.DLL
LoadedModule[28]=C:\Windows\SYSTEM32\WINSPOOL.DRV
LoadedModule[29]=C:\Windows\SYSTEM32\VERSION.dll
LoadedModule[30]=C:\Windows\SYSTEM32\CRYPTBASE.DLL
LoadedModule[31]=C:\Inetpub\ftproot\Tipray\LdTerm\ghhlp64.dll
LoadedModule[32]=C:\Inetpub\ftproot\Tipray\LdTerm\MonFileOp64.dll
LoadedModule[33]=C:\Windows\System32\SHLW
API
.dll
LoadedModule[34]=C:\Windows\SYSTEM32\MPR.dll
LoadedModule[35]=C:\Inetpub\ftproot\Tipray\LdTerm\LdWaterMarkHook64.dll
LoadedModule[36]=C:\Windows\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.1288_none_91a663c8cc864906\gdiplus.dll
State[0].Key=Transport.DoneStage1
State[0].Value=1
OsInfo[0].Key=vermaj
OsInfo[0].Value=10
OsInfo[1].Key=vermin
OsInfo[1].Value=0
OsInfo[2].Key=verbld
OsInfo[2].Value=19044
OsInfo[3].Key=ubr
OsInfo[3].Value=1288
OsInfo[4].Key=versp
OsInfo[4].Value=0
OsInfo[5].Key=arch
OsInfo[5].Value=9
OsInfo[6].Key=lcid
OsInfo[6].Value=2052
OsInfo[7].Key=geoid
OsInfo[7].Value=45
OsInfo[8].Key=sku
OsInfo[8].Value=191
OsInfo[9].Key=domain
OsInfo[9].Value=1
OsInfo[10].Key=prodsuite
OsInfo[10].Value=256
OsInfo[11].Key=ntprodtype
OsInfo[11].Value=1
OsInfo[12].Key=platid
OsInfo[12].Value=10
OsInfo[13].Key=sr
OsInfo[13].Value=0
OsInfo[14].Key=tmsi
OsInfo[14].Value=1099223
OsInfo[15].Key=osinsty
OsInfo[15].Value=1
OsInfo[16].Key=iever
OsInfo[16].Value=11.789.19041.0-11.0.1000
OsInfo[17].Key=portos
OsInfo[17].Value=0
OsInfo[18].Key=ram
OsInfo[18].Value=7880
OsInfo[19].Key=svolsz
OsInfo[19].Value=238
OsInfo[20].Key=wimbt
OsInfo[20].Value=0
OsInfo[21].Key=blddt
OsInfo[21].Value=191206
OsInfo[22].Key=bldtm
OsInfo[22].Value=1406
OsInfo[23].Key=bldbrch
OsInfo[23].Value=vb_release
OsInfo[24].Key=bldchk
OsInfo[24].Value=0
OsInfo[25].Key=wpvermaj
OsInfo[25].Value=0
OsInfo[26].Key=wpvermin
OsInfo[26].Value=0
OsInfo[27].Key=wpbuildmaj
OsInfo[27].Value=0
OsInfo[28].Key=wpbuildmin
OsInfo[28].Value=0
OsInfo[29].Key=osver
OsInfo[29].Value=10.0.19041.1288.amd64fre.vb_release.191206-1406
OsInfo[30].Key=buildflightid
OsInfo[31].Key=edition
OsInfo[31].Value=IoTEnt
erp
riseS
OsInfo[32].Key=ring
OsInfo[32].Value=Retail
OsInfo[33].Key=expid
OsInfo[34].Key=fconid
OsInfo[35].Key=containerid
OsInfo[36].Key=containertype
OsInfo[37].Key=edu
OsInfo[37].Value=0
FriendlyEventName=已停止工作
ConsentKey=APPCRASH
AppName=工具
AppPath=C:\win-x64\工具.exe
NsPartner=windows
NsGroup=windows8
ApplicationIdentity=8CE23494FD3E8EC4878D62E3C55F8B8E
MetadataHash=784019804
复制
代码
准备去微软的开源库查查是否有这方面issue,一查发现罪魁罪魁竟然是.net9sdk的问题,看来出现这个问题的人还不少,报错的情况也是各种各样的
三、问题导致缘故原由🐵
1.在特定的VMware 的虚拟机运行时会导致此种情况
2.在特定的win10以及之前版本上会出现
3.在系统电脑安装了防病毒软件(绿盾、360,等)
在看了多个issue之后,找到了罪魁罪魁,步伐启动及瓦解只有在使用最新的.NET9的sdk上在发布x64版本时会出现这种情况,微软在
.NET 9 Preview 6开始
,CET 会被强制开启。apphost会强制加上一个头部,标记支持 CET。在新的 Intel CPU + 新的 Windows 下,会被执行 CET。但是,假如步伐本身是不支持,又或者步伐所依赖的 nuget 包不支持 CET 的话,步伐就会直接瓦解,没有任何提示,乃至连步伐的 main 都进不去,log 也打不出来。
所以说,我之前添加的全局错误
日志
为什么没有抓到这个非常,原来在运行时就已经瓦解了
四、如何解决🌵
1.不要使用x64举行发布,测试使用x86发布后可以正常打开
2.在受影响机器上面不要通过双击生成的.exe应用步伐,通过 PowerShell 或 CMD 可正常运行
3.在受影响机器上面打开windows
安全
种-应用和浏览控制-Exploit Protection-步伐设置,添加主步伐的名字,例如“工具.exe”,点击自定义,把“硬件强制实行的堆栈保护”中,“替代系统设置”勾上,保持在“关”的状态,保存。再打开步伐就可以了。
4.最后一个就是关闭.net9的cet
功能
,在步伐的.csproj文件中,段,加上false,重新编译步伐,再发布后即可正常运行。
问题到这就解决了,当从.net8升级到.ne9后,没想到还会碰到这种疑难杂症,看来在每一个大版本更新之后,还是要慎重,当然自身的调试debug能力也得有,出现问题的时候可以或许定位到问题点,没有解决思路的时候不如去官方的issue上面看看,可能会有惊喜哦!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
浏览过的版块
e-HR
中间件
图数据库
人工智能
圆咕噜咕噜
+ 我要发帖
×
登录参与点评抽奖,加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表