C# 将dll打包到exe中有效方式暨.net程序自动更新有效方式

简介: 本文目录1. 背景2. 思路3. 实现

1. 背景

近期因工作需要,需要制作一个exe应用程序,基于win form开发的,引用了一堆dll文件,之前都是用ILMerge打包一两个dll文件来用的,结果这次死活不行啊。


然后开始了折腾之旅:


折腾1:百度了ILMerge各种问题解决方案尝试后,总结:ILMerge不可靠、不稳定。


折腾2:使用windows安装程序InstallShield,后来放弃了,原因一是不够简洁明了,二是界面竟然是英文的不能忍我们公司很多不会英文的好不好,三是需要注册,试用版还提示是个评估版本,最后也不支持更新功能不够强大。舍弃之。


折腾3,然后又试了几种打包方法,什么作为静态资源啦、什么nuget下的项目构建枸橘啦,都不行。


最后,还得靠自己,光脚的不能怕穿鞋的。


2. 思路

之前写过一个带自动更新的程序,原理就是加了一个启动器,启动器的作用如下:


1,启动器只负责联网、检查更新、下载。

2,如果发现联网失败,则使用之前下载的版本。

3,如果联网成功,检查版本为最新,则直接运行。

4,如果联网成功,检查版本不为最新,则先更新后运行。


我们完全可以这样实现dll打包:


1,我们发布的程序是一个启动器,实际上是一个单独的小程序,只具备联网和下载的功能,而这两个功能.net framework2.0就有了,无需dll。

2,该程序启动后自动下载真正的exe应用和相关的dll文件,然后放到一个目录中(类似于程序安装的过程)。

3,下载完毕后运行exe应用,同时每次启动时还可以检查和更新。


3. 实现

原理说的很明白了,需要源码的留言我再去整理下,现在版本更新用的MD5+XML+Web Service,跟本文主题相关度不高,还需要抽离出相关内容形成代码。

相关文章
|
1月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
|
1月前
|
C# Windows
C#实现指南:将文件夹与exe合并为一个exe
C#实现指南:将文件夹与exe合并为一个exe
134 9
|
30天前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
|
1月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
56 0
|
1月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
64 0
|
2月前
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
102 4
|
1月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
84 0
|
1月前
|
C#
Delphi可不可以制作出像c#那样的dll类库?
在Delphi中,创建DLL项目(如dll.dpr)并定义一个类TMyCls后,在另一个项目(如test.dpr)中可以引入此DLL并直接实例化和调用类的方法。然而,Delphi目前主要支持两种DLL形式:动态链接库(需显式声明exports,仅支持函数调用)和ActiveX DLL(需定义IDL接口)。这两种方式都较为繁琐。相比之下,C# 的DLL类库更为便捷,编写并编译后即可在其他项目中直接使用。
|
2月前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
93 2
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
41 7