为何.NET Framework4.8程序在仅装4.7.2的机器上启动行为有差异?
启动行为差异原因解析
这种差异的核心是两种启动方式指向的程序完全不同:
从开始菜单打开时,快捷方式指向的是安装过程中生成的引导程序(一般为Setup.exe),而非你的应用主EXE。
从你提供的VBProj配置来看,.NETFramework,Version=v4.8的<Install>属性设为true,这意味着安装程序会将.NET Framework 4.8作为必备组件包含在内。引导程序启动时会先检测目标机器是否已安装.NET4.8,若未安装则自动触发该框架的安装流程,完成后再启动你的应用,因此你会看到程序正常运行。直接双击安装目录里的应用EXE时,没有引导程序的介入,Windows的CLR(公共语言运行时)会直接读取EXE内置的依赖元数据,发现它要求.NET4.8但系统未安装,随即抛出版本缺失的错误——毕竟你的应用本身是基于.NET4.8编译的,必须依赖对应的CLR才能执行。
你可以右键查看开始菜单快捷方式的属性,查看目标路径,就能确认它指向的确实不是你的主EXE文件。
内容的提问来源于stack exchange,提问作者Jyothish Bhaskaran
相关产品推荐
相关产品推荐

