f#.net framework 4.0和typeproviders

时间:2012-08-13 08:05:55

标签: f# type-providers websharper

我的第三个问题是关于堆栈,还有关于同一主题: - )

所以我决定在appharbor上传我的应用程序内置的websharper,但当然有问题。在尝试使用visual studio 2012和.net framework 4.5并获得对我来说无法解决的奇怪错误(我不想整天google)之后我决定使用vstudio 2010和.NET framework 4.0。 一切都很顺利(我复制了typeproviders.dll)但appharbore上有编译错误。这是一个日志。 http://pastebin.com/r9MtegHH如果你懒得点击这里是一个问题:

D:\temp\ovuxcbrh.4p1\input\borkfork\borkfork\Website\borkData.fs(19,102): error FS0010: Unexpected symbol '=' in type arguments. Expected ',', '>' or other token. [D:\temp\ovuxcbrh.4p1\input\borkfork\borkfork\Website\Website.fsproj]

它在我的vstudio 2010上运行正常。 代码行是:

    type  internal dbSchema = Microsoft.FSharp.Data.TypeProviders.SqlDataConnection<ConnectionString = @"Data Source=IRON;Initial Catalog=borkdorkfork;Integrated Security=True">

可能存在问题,因为我还没有配置数据库,但它看起来像是其他东西。好吧,我将配置db overhere并查看。

2 个答案:

答案 0 :(得分:6)

使用类型提供程序的代码将在.NET 4.0上运行,前提是该代码已使用F#3.0编译器(针对.NET 4.0)进行编译,并引用FSharp.Core和FSharp.Data.TypeProviders 4.3.0.0并使用“复制本地”设置真实。

这种情况下的问题是AppHarbor为您构建代码。由于它们尚未更新到.NET 4.5,因此您的代码正在使用F#2.0编译器进行编译,该编译器不了解类型提供程序。

如果AppHarbor有办法编译你自己的二进制文件并进行部署,那就行了。

编辑:

我认为这会在VS 2010上为您编译,因为.NET 4.5是.NET 4.0的就地替代品。它必须替换VS 2010使用的F#编译器。

答案 1 :(得分:0)

类型提供商需要 .NET 4.5。该错误是标准语法错误,因为它希望您关闭三角括号,它认为它不是类型提供程序参数,而是泛型参数 - F#2.0中三角括号的唯一用途。