2011-10-19 90 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