VS2017中WPF项目中的WCF数据服务引用

WCF Data Service reference in WPF Project in VS2017

我在 VS2017 中向我的 WPF 项目添加服务引用时遇到问题。该服务本身是一个使用 EntityFramework (EntityFrameworkDataService) 的 WCF 数据服务。在我之前使用的 VS2013 中,向我的 WPF 项目添加服务没有任何问题。上个月升级到VS2017,最近对WCF服务做了一些改动,需要刷新我WPF项目中的引用。我似乎无法刷新它,所以我删除了引用并开始尝试重新添加引用,现在我收到了这条错误消息:

The specified OData API cannot be added because OData APIs are now only supported with Connected Services.

For more information, please see: https://aka.ms/odatavsclientguidance

提供的 link 没有任何关于 VS2017 设置的信息。它建议使用 'OData Connected Service' 扩展,但该扩展不支持 VS2017(尝试过但收到 "not compatible" 消息)。我还找到了 VS2017 的 'VS WCF Connected Service' 扩展,但它似乎不支持 WPF 项目(或者至少我无法弄清楚)。

有没有人运行解决过这个问题,将 WCF 数据服务引用添加到 WPF 项目?还有其他我可以尝试的建议吗?

我通常通过 DataSvcUtil.exe 生成我的客户端,它是 .net 框架的一部分

例如

"%windir%\Microsoft.NET\Framework\v4.0.30319\DataSvcUtil.exe" /dataservicecollection /version:2.0 /language:CSharp /out:c:\temp\DataService.cs /uri:http://localhost:16584/DataService/

MSDN 文档: https://msdn.microsoft.com/en-us/library/ee383989(v=vs.110).aspx

正如 TGRA 雄辩地指​​出的那样,在撰写本文时,VS2017 的最佳选择是使用 dataserviceutil.exe。为了让我自己更简单,我做了以下事情:

  1. 在文件资源管理器中,使用如下路径导航至 datasvcutil.exe%windir%\Microsoft.NET\{{YOUR_PROCESSOR_ARCHITECTURE}}\{{YOUR_FRAMEWORKVERSION}}

  2. 按住 shift 并单击鼠标右键。 Select Open Commandwindow here(或命令提示符,如果您愿意的话。

  3. 现在对 C# 执行 datasvcutil.exe 命令:datasvcutil /language:Csharp /out:{{PATH_TO_PROJECT}}/{{SERVICE_NAME}}.cs /uri:{{URL_TO_SERVICE}}.svc

  4. 执行一个 datasvcutil.exe 命令,就像 Visual Basic 一样:datasvcutil /language:VB /out:{{PATH_TO_PROJECT}}/{{SERVICE_NAME}}.VB /uri:{{URL_TO_SERVICE}}.svc

瞧,大功告成。