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

问题描述

在.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中添加Connected Service并配置您的端点,这将生成必要的代码,构建您的项目(并测试其是否有效)
  3. 从您的F#项目中,添加对此C#项目的引用,然后添加open ProjectName
  4. 创建您的类型,然后在F#中使用它。您将对类型有一定的了解,因此用户体验与类型提供者没有什么不同。
  5. 如果需要,您可以发布独立的exe:
    dotnet publish -r win10-x64 -c Release -p:PublishSingleFile=true -p:PublishTrimmed=true