【问题标题】:Handling new library features in old applications处理旧应用程序中的新库功能
【发布时间】:2009-05-14 21:43:04
【问题描述】:

我们正在开发一个新的库版本,其中包含一些可供其他应用程序使用的 UI 控件。其中一些控件具有旧应用程序不知道的新功能。默认情况下,我们将禁用新功能,但我们希望为某些特定应用启用它们。这些应用很可能存在于同一台机器上。

您建议如何实施?

更新: 我想出的最佳解决方案是使用 Process.GetCurrentProcess() 并使用类似 proc.MainModule.FileVersionInfo.InternalName 的东西来查找指定覆盖值的注册表项。也许还要查看版本号以检查它是否太旧而无法了解新功能。这种方法有问题吗?

更新: 添加的功能被封装在控件中,只是它们在某些情况下有意义,而在其他情况下则没有。

【问题讨论】:

  • 您无法更新旧应用程序。使用您希望他们使用的控件的新功能?
  • 旧的应用程序最终会更新,但我们希望在不强制升级的情况下适当启用这些功能

标签: .net backwards-compatibility


【解决方案1】:

我不认为你可以。您将无法更改旧应用程序的界面,并且您将无法接收或返回任何新数据。因此,新控件必须像旧控件一样对旧应用程序起作用。现在,如果您在新控件中有完全封装在控件中的行为(例如固定或最小化或类似的东西),那么这些功能可能会在您的旧应用程序上工作。假设旧应用程序具有强名称并且在 GAC 中使用 Publisher Policies,您可以处理让旧应用程序使用新控件的麻烦事。

【讨论】:

  • 功能被封装了,只是它们并不总是有意义的。我更新了问题以澄清。
  • 另外 - 新版本中有一些修复,所以我们不想通过发布者策略强制加载旧版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多