F#单元测试:nunit.framework程序集未引用错误

时间:2015-02-10 00:20:19

标签: f# assembly-binding-redirect fsunit

我在F#玩单元测试。我正在运行Visual Studio 2013社区版。我创建了一个测试项目并安装了NUnit 2.6.4FsUnit 1.3.0.1。我使用了Package Manager Console。我添加了对项目中库的引用,并在我的脚本文件中引用了DLL并添加了open子句:

#r @"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\packages\FsUnit.1.3.0.1\Lib\Net40\FsUnit.NUnit.dll"
#r @"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\packages\NUnit.2.6.4\lib\nunit.framework.dll" 

open NUnit.Framework
open NUnit.Framework.Constraints
open FsUnit

1 |> should equal 1

我的代码中没有错误也没有警告。但是,当我在F#Interactive中运行代码时,最后一行会触发以下错误:

  

Test.fsx(8,6):错误FS0074:通过'NUnit.Framework.Constraints.Constraint'引用的类型是在未引用的程序集中定义的。您必须添加对程序集'nunit.framework'的引用。

但我已经添加了nunit.framework的引用。

我清理了项目,重新安装了软件包,删除并添加了引用,但结果是一样的。我仍然得到错误。知道问题是什么以及如何解决它?

1 个答案:

答案 0 :(得分:2)

如果您可能已注意到,app.confignunit.framework具有<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.6.4.14350" newVersion="2.6.4.14350" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> 的绑定重定向。

NUnit 2.6.3

F#Interactive不考虑此问题,因此您必须使用FsUnit.NUnit.dll引用的NUnit

请将2.6.3降级为{{1}}并确保重置F#互动会话。