无法在NUnit中加载程序集

8
看起来这应该是一个普遍的问题,我希望可以通过快速的谷歌搜索找到答案,但无奈我似乎找不到答案。
我正在使用C#中的NUnit编写单元测试,测试方法依赖于第三方库Newtonsoft.Json。当我尝试从我的单元测试中调用该方法时,我遇到了常见的错误:
"未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配" 异常。
单元测试和应用程序都使用完全相同的newtonsoft库,并且在两个项目中都将dll设置为本地复制。
看起来我缺少一些非常明显的东西,但我似乎无法解决这个问题。

你使用的是哪个运行器? - UserControl
NUnit测试运行器中存在.NET Framework版本和目标的问题。 - abatishchev
1
位于程序集清单中的定义与程序集引用不匹配,这表示它能找到 DLL 文件,但程序集版本与项目清单中的版本不匹配。您能否在 Windows资源管理器中验证 DLL 文件的版本是否确实为 4.5.0.0? - Reacher Gilt
1
我也很想知道你的全局程序集缓存中是否有多个版本的这个程序集,或许 NUnit 正在使用不同的版本作为默认版本。 - Reacher Gilt
1
难以置信,包含 Newtonsoft dll 的目录有两个版本。创建单元测试项目的人使用了较旧的版本,目标应用程序中 dll 的产品版本为 4.5.11.15520,而单元测试应用程序中 dll 的产品版本为 4.0.7.14524。基本上,答案就在我面前,根据抛出的异常即可得出结论。感谢大家的帮助。@ReacherGilt,你可以将你的评论转换成答案,这样我就可以将其标记为已解决。 - pat8719
显示剩余3条评论
1个回答

2
“所在程序集的清单定义与程序集引用不匹配” 表示可以找到 DLL,但是程序集和项目清单中的版本不匹配。您能否在 Windows Explorer 中验证 DLL 的版本是否确实为 4.5.0.0?
我也很好奇您的 GAC 中是否有多个版本的此程序集 - 或许 NUnit 默认使用了另一个版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接