我正在尝试在C#Windows窗体应用程序(Visual Studio 2005)中运行一些单元测试,但出现以下错误:

System.IO.FileLoadException:未能加载文件或程序集“Utility,Version=1.2.0.200,Culture=neutral,PublicKeyToken=764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)**位于x.Foo.FooGO()位于Foo.cs:line 123中的x.Foo.Foo2(String groupName_)位于FooTests.cs:line 98中的x.Foo.UnitTests.FooTests.TestFoo()**System.IO.FileLoadException:未能加载文件或程序集“Utility,Version=1.2.0.203,Culture=neutral,PublicKeyToken=764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)

我查阅了我的参考资料,我只参考了实用程序版本1.2.0.203(另一个是旧版本)。

关于我如何找出试图引用此DLL文件的旧版本的内容,有什么建议吗?

此外,我想我的硬盘上甚至没有这个旧组件。是否有任何工具可以搜索此旧版本的程序集?


当前回答

从文件夹位置手动删除旧程序集,然后将引用添加到新程序集可能会有所帮助。

其他回答

我也犯了同样的错误。。。在我的案例中,问题解决如下:

最初安装应用程序时,这里的人在应用程序中使用了Microsoft Enterprise Library 4.1。在前一周,我的机器被格式化了,在那之后,今天当我构建应用程序时,它给了我一个错误,即缺少企业库程序集。然后我安装了Microsoft Enterprise Library 5.0,这是我在谷歌上作为第一个搜索条目获得的。然后当我构建应用程序时,它给了我上面的错误,即找到的程序集的清单定义与程序集引用不匹配。经过大量的搜索和分析,我发现应用程序引用的是4.1.0.0,bin文件夹中的DLL版本是5.0.0.0然后我安装了Microsoft Enterprise Library 4.1。删除先前的引用(5.0)并添加4.0引用。构建应用程序(&V)。。。它奏效了。

如果您正在使用Visual Studio,请尝试“清理解决方案”,然后重新生成项目。

尝试从webConfig/appConfig中删除程序集引用

 <dependentAssembly>
        <assemblyIdentity name="System.IO" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.3.0.0" />
      </dependentAssembly>

我添加了一个NuGet包,结果发现我的应用程序的黑盒部分引用了旧版本的库。

我删除了包并引用了旧版本的静态DLL文件,但web.config文件从未从以下位置更新:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

恢复到卸载包时应该恢复的状态:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

我会让别人从我的愚蠢中受益。我对一个完全独立的应用程序有一些依赖性(让我们称之为App1)。来自App1的dll被拉入我的新应用程序(App2)。每当我在APP1中进行更新时,我都必须创建新的dll并将其复制到App2中。好我厌倦了在两个不同的App1版本之间复制和粘贴,所以我只是在dll中添加了一个“NEW_”前缀。

好我猜构建过程会扫描/bin文件夹,当它不正确地匹配某个内容时,会弹出与上面提到的相同的错误消息。我删除了我的“新版本”,它做得很好。