C# 如何使用应用程序配置文件重定向程序集加载

标签 c# winforms versioning gac app-config

我有一个在 GAC 中注册了几个版本的程序集。现在,我希望使用此程序集(版本 1.3)的一位客户指向最新版本(1.4),而无需打开源代码并重新编译客户端。
我看到一篇文章演示了使用应用程序配置文件(winform 应用程序)这样做的技术

配置文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:asm="urn:schemas-microsoft-com:asm.v1">
<runtime>
<asm:assemblyBinding>
  <!-- one dependentAssembly per unique assembly name -->
  <asm:dependentAssembly>
    <asm:assemblyIdentity
       name="MyFacade"
       publicKeyToken="c9c18e16df1654e0" />
    <!-- one bindingRedirect per redirection -->
    <asm:bindingRedirect oldVersion="1.3.0.0"
                  newVersion="1.4.0.0" />
  </asm:dependentAssembly>
</asm:assemblyBinding>
</runtime>
</configuration>

如您所见,版本 1.3.0.0 有一个绑定(bind)重定向至 1.4.0.0用于名为 MyFacade 的程序集.

现在,这种方法只有一个小问题。它不起作用:)

我确定这与我的代码有关。

有什么建议吗?

谢谢,
阿迪巴尔达

最佳答案

首先, this is the best source 我发现了这个主题。有一些不同,例如,他们没有使用 asm:命名空间,此外,您可能希望通过添加 <publisherPolicy apply="no" /> 来禁用发布者策略如文章所述。

在我们之前的一个项目中,我们需要更多的控制,所以我们需要捕捉 AppDomain.AssemblyResolve Event 并路由到我们想要的任何程序集。 Here您可以找到有关该概念的更多信息。不过,您必须对您的应用进行一次操作。

关于C# 如何使用应用程序配置文件重定向程序集加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2942767/

相关文章:

c# - 如何在 iTextSharp 中旋转文本?

c# - Windows 窗体 DPI 缩放

c# - 使用 WinForms 扩展旧版 C++ Windows 应用程序

css - 在 smarty(2.6) 中自动化 css 版本控制

c# - 制作 ToolStripMenuItem.Selected = true 的最简单方法

c# - 如何使用 Mono (Linux) 显示系统托盘图标?

c++ - 编译后自动设置文件版本

visual-studio - 处理汇编版本的正确方法是什么?

c# - DirectShow 将 sampleGrabber 转换为 ISampleGrabber

c# - 是否可以更改 ToolStripMenuItem 工具提示字体?