这是我第一次尝试使用 NUnit。我已经使用 NuGet 将 NUnit 安装到了我的 Visual Studio 项目中。如下图所示,它引用了 nunit.framework,版本 2.6.1.12217...
...然后我安装了最新的 Windows 应用程序 (NUnit-2.6.1.msi)....
...并试图加载我的测试程序集...
...但由于某种原因,它需要 nunit.framework 的 2.5.10.11092 版本。
知道我做错了什么吗?
这是我第一次尝试使用 NUnit。我已经使用 NuGet 将 NUnit 安装到了我的 Visual Studio 项目中。如下图所示,它引用了 nunit.framework,版本 2.6.1.12217...
...然后我安装了最新的 Windows 应用程序 (NUnit-2.6.1.msi)....
...并试图加载我的测试程序集...
...但由于某种原因,它需要 nunit.framework 的 2.5.10.11092 版本。
知道我做错了什么吗?
另一种可能性是您正在引用第三方程序集,该程序集在特定版本的 nunit.framework 上具有引用。
例如,我遇到了同样的问题,因为我有一个参考TeamAgile.UnitTestExtensions.dll
要检查特定程序集是否有对 nunit.framework.dll 的引用,请使用 ILDASM 并extern
检查MANIFEST
.
从截图可以看出,这个程序集引用了 nunit.framework 的 2.4.6 版本。
要解决此问题,请将绑定重定向条目添加到应用程序配置文件以将旧版本映射到新版本。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="Neutral" />
<bindingRedirect oldVersion="2.5.10.11092" newVersion="2.6.1.12217" />
</dependentAssembly>
...
您的一个测试项目(或他们引用的第三方/项目)引用了该特定版本。检查所有引用 NUnit 的 csproj 文件并查找该版本。
一种简单的确保方法是在 *.csproj 中“在文件中搜索”“ 2.5.10.11092 ”(我为此使用记事本++)。
如果任何地方都没有对旧版本的具体引用,那么旧版本可能仍在 GAC 中 - 尝试具体引用新版本,这应该会“战胜”它。
编辑 - 参考示例:
<Reference Include="nunit.framework">
<HintPath>..\..\..\ExternalLibrary\NUnit\nunit.framework.dll</HintPath>
</Reference>