.NET5以上WPF发布单个文件
嵌入native libraries
最近要把WPF项目发布成含运行时(部署模式选择"独立")的单个exe, 想当然的在发布选项里勾选了"生成单个文件", 却仍生成了若干dll, 而且删除便无法运行, 似乎是native dlls. 搜索资料发现还需要在发布配置文件(Properties\PublishProfiles\*.pubxml)中加入一行代码:
1 | <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract> |
加入后, 运行程序时会先提取出本地库到目录, 某种意义上不算真正的单文件
详情见此 -> 微软官方文档
勾选生成单个文件已经在开头提过了, 后文再补充一些我能想到的其他未能生成单个文件的原因
更改文件保存方式
请在属性选项卡中将图片等文件的"生成操作"(build action)设置为 资源, "复制到输出目录"设置为 不复制, 代码中以路径或Pack URI来使用资源, 也可以用反射读取嵌入的资源
一些文本数值或者其他对象可以用 .resx, .settings, 或者自行实现序列化存到 Appdata\Local 或者参见Configuration 等各种方式来存储
更改.pdb 生成选项
在项目设置中找到"调试符号", 选择"未发出任何符号"或者"嵌入到Dll/exe"
选择前者会导致无法Debug以及 StackTrace 无法输出异常的文件位置和行号, 因此不推荐使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 jiangdu's blog!
评论