我正在从 GitHub 存储库将 C# 网站部署到 Azure。这个网站引用了几个 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 网站,您似乎无法直接访问它。
我现在可能可以解决个别问题,但这里似乎有一个更深层次的问题。