我试图在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楼
我只是遇到了这个问题,问题是我的应用程序