调试时如何在网站中找到错误的引用dll

时间:2014-02-13 11:46:01

标签: asp.net visual-studio-2012

所有,我陷入一个让我发疯的问题......请帮助我复习一下。提前致谢。

我想在我的网站上引用NHibernate.dll,版本号为2.1.0.4000。 但我不知道为什么网站总是在我尝试调试时搜索NHibernate.dll版本号2.1.2.4000

enter image description here

这是我尝试做的事情。

  1. 尝试使用fuslogvw来跟踪装配绑定。
  2. enter image description here 你可以看到应用程序想要绑定2.1.2.4000,这不是我想要的版本。

    1. 删除我的解决方案中Nhibernate的所有引用。然后再添加一个。

    2. 到网站项目。我发现我刚添加的dll在版本号列中显示auto update,而不是在参考对话框中显示正确的版本号。我不是为什么。

    3. enter image description here

      有人可以帮忙给我一些想法,弄清楚发生了什么。谢谢。欢迎提出任何意见。

      更新

      我在Web.Config

      中搜索了关键文字“NHibernate”

      关于它的内容如下。

      <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentity name="Iesi.Collections" publicKeyToken="aa95f207798dfdb4"/>
              <bindingRedirect oldVersion="1.0.0.3" newVersion="1.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4"/>
              <bindingRedirect oldVersion="2.0.1.4000" newVersion="2.1.0.4000"/>
            </dependentAssembly>
          </assemblyBinding>
          <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" processorArchitecture="amd64"/>
              <bindingRedirect oldVersion="2.102.4.0" newVersion="2.112.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" processorArchitecture="ia64"/>
              <bindingRedirect oldVersion="2.102.4.0" newVersion="2.112.2.0"/>
            </dependentAssembly>
          </assemblyBinding>
        </runtime>
      

      更新

      我在Reflector中检查了dll,它有什么问题吗?

      enter image description here

      更新

      ILdasm的表现如下所示 enter image description here

      更新

      有时我发现日志显示了一些线索,哪个程序集引用了错误的dll。 你可以看到“调用程序集:xxxx.dll,version = .........”

1 个答案:

答案 0 :(得分:2)

您的dll文件本身就是一个问题。 .dll文件的清单以错误的方式声明了版本详细信息。尝试从其他资源下载该文件的另一个副本。现在清理您的解决方案,添加对它的引用并重建解决方案。应该出错。