如何从 .NET Core 3.1 中的 F# 访问 WCF 服务?

How to access a WCF service from F# in .NET Core 3.1?

在 .Net Framework 4.7.2 F# 中,我一直在使用:

FSharp.Data.TypeProviders

  type WSDL =  WsdlService<"http://...ServiceHost.svc">
  type AV   =  WsdlService<"http://...ServiceHost.svc">

从 F# .fs 文件访问我的本地 WCF 网络服务。

如何在使用.NET Core 3.1 时从 F# 客户端访问 WCF 服务?

TIA

如果不是,WCF/petapoco/PostgreSQL的推荐升级路径是什么?

这是来自 F# 3.0 的旧类型提供程序,它依赖于 svcutil 来生成代码。您可以参考其 nuget 包,但可能(很可能)不支持 dotnet-svcutil 工具。但是您可以在 C# 中使用 WCF,因此:

  1. 将新的 C# 项目添加到您的解决方案
  2. 在 Visual Studio 中添加连接服务并配置您的端点,这将生成必要的代码,构建您的项目(并测试它是否有效)
  3. 从您的 F# 项目中,添加对此 C# 项目的引用,然后 open ProjectName
  4. 创建您的类型,并在 F# 中使用它。您将获得有关类型的智能感知,因此用户体验与类型提供程序没有太大区别。
  5. 如果需要,您可以发布 self-contained exe:
    dotnet publish -r win10-x64 -c Release -p:PublishSingleFile=true -p:PublishTrimmed=true