14

我正在尝试构建一个面向 .NET、Silverlight、Windows RT 和 Windows Phone 的可移植类库,充当 OData 客户端。我正在使用 Visual Studio 2012。

当我创建对我的 OData 服务器端的服务引用时,我收到以下错误消息:

无法添加对指定 OData 源的服务引用,因为没有为此目标框架安装 WCF 数据服务。要安装受支持的 WCF 数据服务版本,请参阅 http://go.microsoft.com/fwlink/?LinkId=253653

当我转到错误消息中列出的 URL 时,我可以在 Windows RT 库和 Windows Phone 库之间进行选择,因此这似乎不适用于可移植类库。

是否有任何秘密解决方法,或者我是否必须使用裸 HTTP 请求编写我自己的 Odata 客户端?

另外,如果我必须使用裸 HTTP 请求,是否至少有某种 API 可以在可移植类库中工作的 json 或 xml 序列化/反序列化构建?

谢谢,

阿德里安

4

2 回答 2

9

实际上我有一个用于 OData (Simple.OData.Client) 的可移植类库,但还没有为它制作 NuGet 包。它是 Simple.Data OData 适配器的一部分。

I am using Simple.OData.Client PCL in the app that I plan to port to various platform including iOS and Android (using Xamarin). If you are interested to give it a try I propose one of two alternatives:

a) Clone the Simple.Data.OData repo (https://github.com/simplefx/Simple.OData), switch to "winrt" branch, build it, there you have Simple.OData.Client that is a PCL supporting most of the platforms. Wiki currently describes Simple.Data adapter syntax, so you need to check Simple.OData.Client tests (https://github.com/simplefx/Simple.OData/tree/master/Simple.OData.Client.Tests) to understand the syntax. It has supports two syntax flavors: when you format filter string yourself and when you use its fluent API. Both of them are very straightforward to use.

b) 我可以加快处理 PCL 的 NuGet 包的工作(当前上传的 NuGet 包只支持 NET4),但需要更长的时间。

如果您有兴趣,请告诉我。

于 2013-01-20T10:22:27.747 回答
0

WCF DS 客户端库本身不是可移植类库的一部分,因此预计不会起作用(正如您所发现的那样)。它使用 ODataLib - Microsoft.Data.OData.dll,它没有作为可移植类库的一部分进行测试,但应该可以工作。

因此,如果您可以使用不受支持的解决方案,请随意使用它。它实际上是 OData 格式(ATOM/JSON,...)的读取器/写入器。它的源代码也可以在 codeplex 上找到,所以如果某些东西在可移植类库上下文中不能正常工作,你可以修复它(请告诉我们)。

无论如何,这个库被设计为在所有平台上尽可能接近相同,所以目标肯定是它成为可移植类库集的一部分,只是还没有实现。

于 2012-12-03T09:04:57.157 回答