2013-12-18 49 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位。