Assembly.Load() or Not?

本文关键字:Not or Load Assembly | 更新日期: 2023-09-27 18:25:28

我们有一个非常旧的windows程序,它是用c#开发的,每发布一次,客户都需要重新安装程序的新版本。我想知道这是否可能。

  1. 我将把所有类存储到txt文件中
  2. 当程序开始运行时,我的dispatcher类将搜索相关的txt文件,它将创建带有Assembly.Load的表单/类
  3. 假设如果我更改了X形式的内容,我只会修改与X形式相关的文本文件并覆盖它

这可能吗?

Assembly.Load() or Not?

为什么是源代码形式的txt文件?Assembly.Load()不是编译器。

这不是Java。您不会将类编译为*.class文件(二进制文件)。C#类的集合被编译成dll(一个二进制文件)。Assembly.Load()仅加载.NET dll。

因此,无法将Assembly.Load()直接用于文本文件。

不需要整个卸载-重新安装过程。如果你想更新应用程序的版本,你可以简单地将更新后的EXE和DLL文件转储到目录中,然后直接运行它们。

将应用程序拆分为多个DLL可能很诱人,每个DLL负责特定的窗体或组件,但在大多数情况下,为了防止兼容性问题,您最好一次更新整个应用程序。

如果你真的想要无缝更新,可以考虑使用ClickOnce部署,或者一些自动更新过程,比如(现在已经过时的)Updater应用程序块。