【问题标题】:App still referencing previous version of assembly应用程序仍然引用以前版本的程序集
【发布时间】:2012-03-22 19:52:35
【问题描述】:

我的 GAC/我的申请没有什么问题。我之前一直在为 iAnywhere.Data.AsaClient 程序集参考使用版本 9.0.2.3951,但现在我通过进入 C:\Windows\Assembly 将其卸载。目前 GAC 中有 9.0.2.3924 版本,但是当我运行应用程序时,它仍在寻找 9.0.2.3951 版本而不是 3924。

我尝试进入我的项目中的 Assembly.cs 文件以查看它是否有任何 3951 条目,但它甚至没有提及,然后我尝试进入 App.Config 文件以查看它是否有任何条目但是它没有。我还从项目中删除了引用并重新添加了对 3924 文件版本的引用。

如何让我的应用程序查找 3924 而不是 3951 文件版本。

【问题讨论】:

    标签: c# visual-studio-2010 gac


    【解决方案1】:

    您需要将assemblyBinding 信息添加到您的配置中,以强制进行正确的绑定。像这样的:

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <probing privatePath="" />
            <dependentAssembly>
                <assemblyIdentity name="iAnywhere.Data.AsaClient" publicKeyToken="f222fc4333e0d400" culture="neutral" />
                <bindingRedirect oldVersion="9.0.2.3951-9.0.2.3951" newVersion="9.0.2.3924" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
    

    第二个选项:卸载有问题的项目,然后选择编辑它(通过上下文菜单)。查找项目参考,应如下所示:

    <Reference Include="iAnywhere.Data.AsaClient, Version=9.0.2.3951, Culture=neutral, PublicKeyToken=f222fc4333e0d400">
    

    您可以删除它并手动重新生成它,或者简单地将 XML 条目修改为:

    <Reference Include="iAnywhere.Data.AsaClient, Version=9.0.2.3924, Culture=neutral, PublicKeyToken=f222fc4333e0d400">
    

    干杯!

    【讨论】:

    • 尝试了第一个选项,但仍然出现相同的错误。现在检查第二个选项。
    【解决方案2】:

    code4life 提供了一个很好的解决方案,在大多数情况下都可以使用。但是,就我而言,另一种解决方案对我有用。只是为了帮助其他人,我在这里通过屏幕截图添加了该解决方案。

    1. 在 VS2010 中点击 Tools 然后点击 options 然后点击 Project and Solutions 链接然后点击 Build并运行,然后在 MSBuild 项目构建输出详细程度: 选择诊断

    2. MSBuild 项目构建日志文件详细程度下: 选择诊断,然后按 确定

    “3.”按 F5 再次运行您的项目。这次查看 OUTPUT 窗口以查找 Calling assembly 部分。就我而言,它显示了我的关注。

    上图中突出显示的文本显示 GAC 中仍然存在一个策略文件,它将 3924 版本 调用从我的应用程序重定向到 3951。看了这个之后,我进入 C:\Windows\Assembly** 并开始寻找导致重定向到 **uninstall 的策略文件。截图如下,

    “4.”我只需右键单击该文件并卸载我不想要的版本并再次运行我的程序并修复它。

    【讨论】:

      【解决方案3】:

      搜索所有 iAnywhere.Data.AsaClient dll 并找出哪些 dll 保存在哪里

        open cmd.exe
      
        cd\
      
        dir iAnywhere.Data.AsaClient.dll /s
      

      检查所有 dll 以获取您正在寻找的版本,并从应用程序中删除其余的找到这些 dll 的版本

      如果您在 gac 中发现错误版本的 dll,请将其从 gac 中卸载,如果您需要知道如何操作的帮助,请告诉我,我可以告诉您

      【讨论】:

        【解决方案4】:

        问题是您的应用程序是针对它无法再找到的程序集版本编译的。您的选择是:

        1. 更新您的程序集参考并重新编译您的代码
        2. 按照@code4life 在他的回复中提到的那样创建绑定重定向

        【讨论】:

          猜你喜欢
          • 2012-10-03
          • 2016-09-18
          • 1970-01-01
          • 2018-09-30
          • 2020-10-27
          • 1970-01-01
          • 2023-04-05
          • 1970-01-01
          • 2010-10-14
          相关资源
          最近更新 更多