Assembly.Load()还是不?

时间:2012-02-23 10:27:26

标签: c# reflection .net-assembly

我们有一个非常老的Windows程序,它是用c#开发的,每个新发布的客户都需要重新安装程序的新版本。我想知道如果可能的话。

  1. 我会将所有类存储到txt文件
  2. 当程序开始运行时,我的调度程序类将搜索相关的txt文件,它将动态创建带有Assembly.Load的表单/类。
  3. 假设我改变X形式的内容,我只会修改与X形式相关的文本文件并覆盖它。
  4. 这可能吗?

2 个答案:

答案 0 :(得分:2)

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

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

因此无法直接将Assembly.Load()与文本文件一起使用。

答案 1 :(得分:0)

不需要整个卸载重新安装过程。如果要更新应用程序的版本,只需将更新的EXE和DLL文件转储到目录中并直接运行即可。

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

如果您真的想要无缝更新,请考虑使用ClickOnce部署或某些自动更新过程,例如(现已过时)Updater Application Block.