1

好吧,我在堆栈上的第三个问题以及关于同一主题的第三个问题:-)

所以我决定在 appharbor 上上传我在 websharper 中构建的应用程序,但当然存在问题。在尝试使用 Visual Studio 2012 和 .NET Framework 4.5 并遇到对我来说无法解决的奇怪错误(我不想整天谷歌)后,我决定使用 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看看。

4

2 回答 2

6

使用类型提供程序的代码将在 .NET 4.0 上运行,前提是该代码已使用 F# 3.0 编译器(针对 .NET 4.0)进行编译并引用 FSharp.Core 和 FSharp.Data.TypeProviders 4.3.0.0 并将 Copy Local 设置为 True。

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

如果 AppHarbor 有办法让您编译自己的二进制文件并部署它们,那将是可行的。

编辑:

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

于 2012-08-13T18:07:50.420 回答
0

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

于 2012-08-13T09:16:17.357 回答