在不重新编译整个应用程序的情况下升级依赖 DLL

Posted

技术标签:

【中文标题】在不重新编译整个应用程序的情况下升级依赖 DLL【英文标题】:Upgrading dependent DLL without recompiling the whole application 【发布时间】:2013-09-16 10:33:52 【问题描述】:

我们有使用 Aspose.Words.NET 11.10.0 版本的 Windows 服务应用程序现在我们最近升级了 Aspose.Words dll 最新版本 13.7.0

由于我们已经在多个客户端中部署了 Windows 服务应用程序,因此我们尝试将旧的 Aspose.Words dll 替换为最新的最新版本。但是当我们重新启动现有的 Windows 应用程序时,它不适用于替换的最新 Aspose.Words dll。

我们已经通过重新编译引用最新版本的 Aspose.Words dll 的整个 Windows 应用程序解决了这个问题。每次升级 Aspose.Words dll 时是否需要重新编译和重新部署整个 Windows 服务应用程序?

【问题讨论】:

参见主题 ***.com/questions/2771143/… 了解程序集的重定向。 非常感谢。我已经尝试了第二个答案的方法,“特定版本”已经设置为false。但是我仍然收到错误,而配置文件中的程序集绑定重定向工作正常。知道我做错了什么吗? 【参考方案1】:

也检查this answer on SO。

您需要更新桌面/网络客户端的配置文件,如下所示。

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <publisherPolicy apply="no" />
        <assemblyIdentity name="Aspose.Words"  publicKeyToken="716fcc553a201e56" />
        <bindingRedirect oldVersion="11.0.0.0-13.6.0.0"
                         newVersion="13.7.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

另请注意,API 中可能存在重大更改,这可能会导致其他错误。例如,11.0 中存在的方法或属性在 13.7 中被删除。当客户端应用程序调用特定的方法/属性时,将引发异常。因此,您必须在开发环境中验证新版本不会破坏您的应用程序。如果可行,那么您可以将旧的 DLL 替换为新版本。

配置文件在运行时加载,因此您可以更新部署应用程序的配置文件。

我在 Aspose 工作,担任开发人员宣传员。

【讨论】:

以上是关于在不重新编译整个应用程序的情况下升级依赖 DLL的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重绘图表的情况下刷新 jqplot 条形图

nginx平滑升级

在不重新编译主程序的情况下分析共享对象

如何在不刷新整个页面的情况下重新加载组件?

在不重新启动节点应用程序的情况下更新节点应用程序依赖项

是否可以在不重新编译的情况下使科尔多瓦应用程序可调试?