2013-12-18 24 views
2

我有一個msbuild,用於構建nuget分發項目。它爲我的程序集構建了.net 3.5,.net 4.0和.net 4.5目標版本,以便於打包。在Windows上,這一直很好,但現在我使用xbuild進行單聲道,除了.NET 3.5的目標構建外,其他所有工作都可以使用。Xbuild構建面向.NET 3.5的F#3

我得到這樣

/Users/akropp/Projects/code/ParsecClone/combinator.msbuild.proj (default targets) -> 
(Build target) -> 
/Users/akropp/Projects/code/ParsecClone/Combinator/Combinator.fsproj (default targets) -> 
/Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/4.0/Microsoft.FSharp.Targets (CoreCompile target) -> 

    : error FS0219: The referenced or default base CLI library 'mscorlib' is binary-incompatible with the referenced F# core library '/Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/gac/FSharp.Core/4.3.0.0__b03f5f7f11d50a3a/FSharp.Core.dll'. Consider recompiling the library or making an explicit reference to a version of this library that matches the CLI version you are using. 
    : error FS0218: Unable to read assembly '/Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/gac/FSharp.Core/4.3.0.0__b03f5f7f11d50a3a/FSharp.Core.dll' 

    0 Warning(s) 
    2 Error(s) 

錯誤不知道什麼,我缺少的,因爲該組件是可讀的所有其他目標。

只是可以肯定,該文件確實存在

>ls /Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/gac/FSharp.Core/4.3.0.0__b03f5f7f11d50a3a/FSharp.Core.* 
-rwxr-xr-x 1 root admin 1104896 Nov 14 15:14 /Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/gac/FSharp.Core/4.3.0.0__b03f5f7f11d50a3a/FSharp.Core.dll* 
-rwxr-xr-x 1 root admin 353617 Nov 14 15:18 /Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/gac/FSharp.Core/4.3.0.0__b03f5f7f11d50a3a/FSharp.Core.optdata* 
-rwxr-xr-x 1 root admin 488574 Nov 14 15:18 /Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/gac/FSharp.Core/4.3.0.0__b03f5f7f11d50a3a/FSharp.Core.sigdata* 
-rwxr-xr-x 1 root admin 592077 Nov 14 15:18 /Library/Frameworks/Mono.framework/Versions/3.2.5/lib/mono/gac/FSharp.Core/4.3.0.0__b03f5f7f11d50a3a/FSharp.Core.xml* 

-

編輯:

有趣的是,我居然得到了同樣的錯誤在Xamarin針對我的項目.NET 3.5工作室。我不確定這是否是一個錯誤,或者如果其他事情已經改變,這不應該在第一時間起作用。

回答

2

IIRC最新版本的開源F#編譯器(託管在github上)默認爲.NET 4.0。您需要自己編譯F#以調整構建以允許它安裝必需的.NET 3.5位。