You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从PCL项目调用远程WCF?VS2017 Xamarin Forms无服务引用入口求助

解决VS2017中Xamarin Forms项目添加WCF服务引用的问题

嘿,我之前在VS2017里开发Xamarin Forms时也碰到过这个头疼的问题——项目里找不到添加WCF服务引用的入口!后来摸索出几个可行的方案,分享给你:

方案一:用类库中转最省心

Xamarin项目本身确实不支持直接添加服务引用,我们可以找个“中间层”:

  • 先在解决方案里新建一个**.NET Standard类库**(或者共享项目)
  • 右键这个类库项目,就能看到「添加」→「服务引用」的选项了!输入你的WCF服务地址,跟着向导完成配置
  • 生成服务代理后,把类库里的代理类文件复制到你的Xamarin Forms项目里,同时把类库App.config里的绑定、端点配置信息提取出来
  • 因为Xamarin对配置文件的支持有限,建议把这些配置逻辑写到代码里(比如手动创建Binding和EndpointAddress实例),或者把配置文件添加到Xamarin项目并设置为「始终复制到输出目录」

方案二:手动用SvcUtil生成代理

如果不想额外建类库,可以用VS自带的SvcUtil.exe工具手动生成客户端代码:

  1. 找到你VS2017的SvcUtil路径,一般在C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\svcutil.exe(根据你的VS版本和安装路径调整)
  2. 打开命令提示符,运行下面的命令(替换成你的服务地址):
    svcutil.exe http://你的WCF服务地址?wsdl /out:WcfClient.cs /config:App.config
    
  3. 把生成的WcfClient.cs添加到Xamarin Forms项目,然后把App.config里的配置转换成代码(示例如下):
    // 手动创建绑定和端点
    var basicBinding = new BasicHttpBinding();
    var serviceEndpoint = new EndpointAddress("http://你的WCF服务地址");
    // 实例化服务客户端
    var wcfClient = new YourWcfServiceClient(basicBinding, serviceEndpoint);
    // 调用服务方法
    var result = await wcfClient.YourServiceMethodAsync();
    

方案三:试试Connected Services(限VS2017较新版本)

如果你的VS2017更新到了比较新的版本,可以试试这个更便捷的方式:

  • 右键Xamarin Forms项目,选择「添加」→「Connected Service」
  • 在弹出的窗口里找到「Microsoft WCF Web Service Reference Provider」,跟着向导输入服务地址就能生成代理了

⚠️ 注意:Xamarin对WCF的支持主要集中在BasicHttpBinding这类基础绑定,像WSHttpBinding这类高级绑定可能会有兼容性问题,建议先测试基础绑定的服务哦。

内容的提问来源于stack exchange,提问作者David Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:52:03