下图对于.NET开发人员一定不陌生,尤其是CS架构,客户电脑要运行基于.NET开发的程序,无论是使用C#,还是VB.NET、F#,发布后的程序的运行环境都需要有相应版本的.NET的运行时,否则应用程序将无法正常运行。
BS架构下,在服务器上安装指定版本.NET运行时,工作量可以忽略不计。试想,如果是CS架构,而且是大型的商业软件,客户电脑系统从XP 到 Win11都可能有,如果客户电脑没有指定版本.NET运行时,那么程序则无法正常运行。即使,通过程序引导用户自动安装,也有可能存在安装失败的风险,这对商业软件的发布以及用户体验来说,都是致命的,这也成了很多商业桌面软件在选择技术路径的时候一大顾虑。
可喜的是.NET6的发布和Visual Studio 2022加持,这些都将成为历史。如下图:
在发布设置中部署模式选择“独立”,则部署后的应用程序,本身就会包含相应版本的.NET的运行时,且无需用户安装
文件发布选项中,勾选“生成单个文件”,则发布后的应用程序,引用的绝大多数dll都将打包进exe中,对用户不可见;
勾选ReadyToRun,一定程度上也能提高程序启动速度,关于ReadyToRun的实现原理及优缺点,请参考以下微软官方文档:
https://learn.microsoft.com/zh-cn/dotnet/core/deploying/ready-to-run
下图是采用独立模式+生成单个文件选项部署和常规模式部署,生成的项目文件结构对比,可以看到独立模式部署生成项目大概会大了200多M,则多的应该就是.NET的运行时,虽然发布的项目文件大了200M,但是无需客户机安装指定版本.NET运行时,这对开发体验和用户体验都是极大的改善,
“生成单个文件”这一选项也让应用程序的项目结构看起来更加简洁。