找到的程序集的清单定义与程序集引用不匹配

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

System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本= 1.2.0.200,区域性=中性,PublicKeyToken = 764d581291d764f7”或其依赖项之一。 找到的程序集的清单定义与程序集引用不匹配。 (HRESULT的异常:0x80131040)**

在x.Foo.FooGO()

在Foo.cs:第123行的x.Foo.Foo2(String groupName_)

在FooTests.cs中的x.Foo.UnitTests.FooTests.TestFoo():行98 **

System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本= 1.2.0.203,区域性=中性,PublicKeyToken = 764d581291d764f7”或其依赖项之一。 找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)

我查看了自己的参考文献,并且仅参考了Utility version 1.2.0.203 (另一个是旧的)。

关于我如何找出试图引用此DLL文件旧版本的任何建议?

此外,我认为我的硬盘上甚至没有这个旧程序集。 有什么工具可以搜索这个旧版本的程序集吗?


#1楼

我的问题是将源代码复制到新计算机上,而没有移出任何引用的程序集。

我没有解决该错误,因此,我急忙删除了BIN目录。 重建了我的源代码,从此以后一直有效。


#2楼

我只是找到了收到此错误的另一个原因。 我从特定库的所有版本中清除了GAC,并参考与可执行文件一起部署的特定版本来构建我的项目。 运行项目时,出现此异常,正在搜索库的较新版本。

原因是发布者的政策 。 当我从GAC卸载库的版本时,我也忘记了卸载发布者策略程序集,因此,程序加载器没有使用本地部署的程序集,而是在GAC中找到了发布者策略,该策略要求它搜索新版本。


#3楼

我的app.config包含一个

<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.11.0"/>

对于npgsql。 以某种方式在用户计算机上,我的app.exe.config丢失了。 我不确定这是一个愚蠢的用户,安装程序出现故障还是淘汰了防病毒软件。 替换文件解决了该问题。


#4楼

以下内容将所有程序集版本重定向到版本3.1.0.0。 我们有一个脚本,该脚本将始终在App.config中更新此引用,因此我们不必再处理此问题。

通过反射,您可以获取程序集publicKeyToken并从.dll文件本身生成此块。

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <dependentAssembly>
    <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="3.1.0.0" />
  </dependentAssembly>
</assemblyBinding>

请注意,如果没有XML名称空间属性(xmlns),此功能将无效。


#5楼

我只是遇到了这个问题,问题是我的应用程序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值