仅当从GitHub部署时,Azure中的F#编译错误

时间:2013-09-22 18:15:09

标签: azure f# kudu

我正在从GitHub存储库向Azure部署C#网站。这个网站引用了几个F#库,它们在我的机器上编译得很好,但是在Azure中,构建失败并出现了许多编译错误。

以下是构建日志的片段:

FS0001: A generic construct requires that the type 'Company' have a public default constructor [C:\DWASFiles\Sites\eureka-servicestack-poc\VirtualDirectory0\site\repository\Eureka.ServiceStack.FSharp.Poc\Services\Services.fsproj]
C:\DWASFiles\Sites\eureka-servicestack-poc\VirtualDirectory0\site\repository\Eureka.ServiceStack.FSharp.Poc\Services\CompaniesService.fs(28,17): error FS0039: The field, constructor or member 'PopulateWith' is not defined [C:\DWASFiles\Sites\eureka-servicestack-poc\VirtualDirectory0\site\repository\Eureka.ServiceStack.FSharp.Poc\Services\Services.fsproj]
C:\DWASFiles\Sites\eureka-servicestack-poc\VirtualDirectory0\site\repository\Eureka.ServiceStack.FSharp.Poc\Services\AppHost.fs(17,55): error FS0072: Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved. [C:\DWASFiles\Sites\eureka-servicestack-poc\VirtualDirectory0\site\repository\Eureka.ServiceStack.FSharp.Poc\Services\Services.fsproj]
An error has occurred during web site deployment.

在我将CLIMutable属性放在有问题的记录类型上之后应该修复第一个错误,并且在包含适当的命名空间之后应该修复第二个错误。我不知道第三个错误到底是什么,特别是因为它们都不是在本地发生的。

为确保我在两个地方都拥有相同版本的F#,我在解决方案中包含了FSharp.Core dll,并参考了本地版本。这没有帮助,但它删除了一个警告,它找不到文件的4.3.1版本。

我是否有可能运行另一个版本的F#编译器,如何检查?它一直工作到现在,这让我怀疑某些东西的版本略有不同。不幸的是,很难深入了解构建环境中实际发生的情况。它是一个免费的网站Azure网站,看起来你不会直接访问它。

我现在可以解决个别问题,但似乎有更深层次的问题在这里工作。

1 个答案:

答案 0 :(得分:1)

对于正在使用的不同版本的F#编译器,这是一个问题。使用Visual Studio 2013 RC,我使用的是3.1版本,其中有一些improvements导致我的特定问题无法显示。

问题很难识别,因为更改我的F#项目以在Visual Studio中使用3.0编译器没有任何效果(它仍然编译得很好)。我甚至在Visual Studio 2012中打开了解决方案,这一切都编译得很好。只有当我在VS 2012中从头开始创建一个新项目时,才开始获得与服务器上相同的编译错误。所以我想这应该是创建的项目文件中的错误(或至少不是非常理想的功能)。我不确定这是否应归类为VS 2013的错误,特别是因为我不确切知道导致错误的原因。

所以直到Azure(或者这是一个Kudu的东西?)支持3.1编译器的简单解决方案是在VS 2012中重新创建项目文件,或者将不编译的代码复制到可以测试修复的测试解决方案