我正在尝试在 C# Windows 窗体应用程序 (Visual Studio 2005) 中运行一些单元测试,并收到以下错误:
System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本=1.2.0.200,区域性=中性,公钥令牌=764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 例外:0x80131040)**
at x.Foo.FooGO()
at x.Foo.Foo2(字符串 groupName_) 在 Foo.cs:line 123
at x.Foo.UnitTests.FooTests.TestFoo() in FooTests.cs:line 98**
System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本=1.2.0.203,区域性=中性,公钥令牌=764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x80131040)
我查看我的参考资料,我只有一个参考文献(另一个是旧的)。Utility version 1.2.0.203
关于我如何找出尝试引用此DLL文件的旧版本的任何建议?
此外,我认为我的硬盘驱动器上甚至没有这个旧组件。
是否有任何工具可以搜索此旧版本化程序集?
网友回答:
您可以执行一些操作来解决此问题。首先,使用 Windows 文件搜索在硬盘驱动器中搜索程序集 (.dll)。获得结果列表后,执行查看>选择详细信息…然后选中“文件版本”。这将在结果列表中显示版本号,以便您可以看到旧版本可能来自何处。
另外,就像 Lars 说的那样,检查您的 GAC 以查看其中列出的版本。这篇 Microsoft 文章指出,在生成期间不会在本地复制在 GAC 中找到的程序集,因此您可能需要在执行全部重新生成之前删除旧版本。(有关创建批处理文件以为您执行此操作的说明,请参阅我对此问题的回答)
如果仍然无法确定旧版本来自何处,可以使用 Visual Studio 附带的 fuslogvw.exe 应用程序获取有关绑定失败的详细信息。微软在这里有关于这个工具的信息。请注意,必须通过将注册表项设置为 1 来启用日志记录。HKEY_LOCAL_MACHINESOFTWAREMicrosoftFusionEnableLog
网友回答:
.NET 程序集加载程序:
此程序集与请求的内容不匹配,因此您会收到此错误。
简而言之,它找不到引用的程序集。通过将程序集放入 GAC 或应用程序路径中,确保它可以找到正确的程序集。
运行以下命令,将程序集 DLL 文件添加到 GAC:
gacutil /i "path/to/my.dll"
另请参阅 https://learn.microsoft.com/archive/blogs/junfeng/the-located-assemblys-manifest-definition-with-name-xxx-dll-does-not-match-the-assembly-reference。
网友回答:
我自己刚刚遇到了这个问题,我发现这个问题与其他人遇到的问题不同。
我有两个我的主要项目引用的DLL:CompanyClasses.dll和CompanyControls.dll。我收到一个运行时错误,说:
无法加载文件或程序集
“公司类,版本=1.4.1.0,区域性=中性,公钥令牌=045746ba8544160c”或其
依赖项之一。找到
的程序集的清单定义与程序集引用
不匹配
问题是,我的系统上没有任何版本号为 1.4.1 的 CompanyClasses.dll 文件。GAC 中没有,应用文件夹中没有…任何地方都没有。我搜索了我的整个硬盘。我拥有的所有公司类.dll文件都是 1.4.2。
我发现,真正的问题是 CompanyControls.dll引用了 CompanyClasses.dll 的 1.4.1 版本。我刚刚重新编译了 CompanyControls.dll(在它引用 CompanyClasses.dll 1.4.2 之后),这个错误对我来说消失了。
模板简介:该模板名称为【找到的程序集的清单定义与程序集引用不匹配?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。