Xbuild для сборки F# 3 для.NET 3.5

У меня есть msbuild, который я использую, чтобы построить проект для распространения nuget. Он собирает целевые версии моей сборки.net 3.5, .net 4.0 и.net 4.5 для упрощения упаковки. В Windows это всегда прекрасно работало, но сейчас я использую xbuild в моно, и все работает, кроме целевой сборки.NET 3.5.

Я получаю ошибку как

/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*

-

Редактировать:

Интересно, что на самом деле я получаю ту же ошибку при настройке моего проекта на.NET 3.5 в Xamarin Studio. Я не уверен, если это ошибка или что-то еще изменилось, и это не должно сработать в первую очередь.

1 ответ

Решение

IIRC последние версии компилятора F# с открытым исходным кодом (который находится на github) по умолчанию.NET 4.0. Вам нужно будет скомпилировать F# самостоятельно, чтобы настроить сборку, чтобы она могла установить необходимые.NET 3.5 биты.

Другие вопросы по тегам