实践项目地址:ModernShutdownScheduler
这里就给大家讲讲配置时遇到的坑
第一部分:.Net WPF打包详解
近期想复习下C#的WPF知识,写了个设定时间自动关机的小程序,由于常用Windows,选择了WPF
项目配置
.Net项目的配置网上已经有很多教程,这里就不在追述了,注意我们用的是WPF,所以立项目的时候选择的是WPF,而且是.Net 的,不是.Net Framework
发布文件(文件夹模式)
本地编译可以直接生成exe可执行文件,但是那种只便于Coder本人调试使用,要给别人使用还是应当使用“发布”,而且最好是生成一个安装文件,可以供用户选择安装路径(单文件也可以,当功能不太多的时候)。
Visual Studio提供了发布功能,如下图所示,当然也可通过命令行(CLI)发布:
dotnet publish -parameters
下图为VS里提供的CIL发布功能,右键项目,选择发布,按照自己项目需求配置即可
如何发布一个WPF程序
注意:发布这里也有很多值得考虑的地方
发布配置
在发布的最后一步,部署模式有 依赖框架 和 独立 两种模式
依赖框架:仅仅发布文件本身,不打包Runtime(文件小),需要使用者有对应的运行环境;
独立:打包程序的同时会,打包所使用的Runtime及其其他系统依赖,文件大,开箱即用无需其他配置依赖框架
独立
打开文件发布选项,里面会有一个 生成单个文件 的选项,勾选之后就会生成“单个”exe文件,会自动将其他文件打包进exe内部。但是这里要注意,当前配置只会打包WPF框架的内容,有些windows组件并不会打包,例如VcRuntimexx.dll,如果想把他们全部打包,只生成一个文件,需要在项目文件(*.csproj)的
PropertyGroup
中添加IncludeAllContentForSelfExtract
如下面所示,这样就能吧全部用到的依赖打包,相应的文件也会很大。<PropertyGroup> ... <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract> ... </PropertyGroup>
也可以通过CLI发布
dotnet publish *.csproj --configuration Release --self-contained false --output ./publish
dotnet
是.Net平台提供的工具,更推荐使用;*.csproj
替换为你需要发布的项目文件,也可以是*.sln
即是解决方案文件;--configuration
表示要配置,可以简化为-c
,表示配置为Release模式,编译器会作相应的优化;--self-contained
即是VS里的部署模式,true
表示打包Runtime(独立模式),false
则是不打包(依赖框架模式)--output
则是指定输出的目录
上述的参数都可以不填写,在项目目录下,可以直接输入dotnet publish会自动寻找项目,使用的*.csproj
内的参数发布