如何在 C# 应用程序中使用特定版本的 GAC 程序集

How to use GAC assembly with specific version in C# app

我有 2 个名为 AAA 的 GAC 程序集(版本 1.0.0.0 和版本 2.0.0.0)。该应用程序当前使用的是版本 1(由 Browse-for-assembly 添加的引用,路径已硬编码到该文件),但我想使用版本 2。

为了顺利完成,我在app.config中添加了一些代码:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="AAA"
          publicKeyToken="dd8b40231cb0196b"
          culture="en-us" />
        <!-- Assembly versions can be redirected in app, 
          publisher policy, or machine configuration files. -->
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

但应用程序仍在使用 1.0.0.0 版本的程序集,为什么?

      culture="en-us" />

错了,包含代码的程序集总是中立的。只有卫星集会才有文化。或者换句话说,您的 bindingRedirect 与应用程序要求的任何程序集都不匹配。所以没有作用。请务必从项目的 bin\Debug 目录中删除该程序集,以便您可以诊断此类错误。 Fuslogvw.exe 实用程序也非常方便,记录所有绑定。

修复:

      culture="neutral" />