2011-10-19 50 views
3

我想在.NET 4中使用xUnit的Unquote库,并且我没有任何运气让测试运行。所以,我把它分解成了我能做到的最简单的再现步骤。有人知道我可能错过了什么吗?解开:我错过了什么?

  1. 创建一个新的F#库项目。
  2. 使用NuGet添加xUnit和Unquote引用。
  3. 粘贴在下面的代码...

我直接从引文结束主页上得到了实际测试,但内容并不重要,因为它不会运行。

module Tests 

open Xunit 
open Swensen.Unquote 

[<Fact>] 
let ``demo Unquote xUnit support``() = 
    test <@ ([3; 2; 1; 0] |> List.map ((+) 1)) = [1 + 3..1 + 0] @> 

然后我编译组件和将其装载到xUnit.net GUI测试转轮(64位,CLR 4),并且当运行测试得到以下错误:

Tests.demo Unquote xUnit support : System.MissingMethodException : Method not found: 
'Microsoft.FSharp.Collections.FSharpList`1<Microsoft.FSharp.Quotations.FSharpExpr> Swensen.Unquote.Extensions.Expr.ReduceFully(Microsoft.FSharp.Quotations.FSharpExpr)'. 
Stack Trace: 
    at Tests.demo Unquote xUnit support() 

回答

6

决不介意,我明白了。我正在使用VS 11预览,并且即使我在我的项目中将.NET 4.0作为目标,但该项目引用了错误版本的FSharp.Core.dll:

C:\ Program Files(x86)\参考大会\微软\ FSharp \ 3.0 \运行\ V4.0 \ FSharp.Core.dll

我改变了它引用这一个代替,一切都开始正常工作:

C:\ Program Files文件(86 )\ Reference Assemblies \ Microsoft \ FSharp \ 2.0 \ Runtime \ v4.0 \ FSharp.Core.dll