如何为 Silverlight 5 生成 OData v4 客户端?
How to generate OData v4 Client for Silverlight 5?
我们正在尝试为 ASP.NET + Silverlight 5 安装 Web API 2.2 和 OData v4。
初始 POC 有一个使用 Simple.OData 连接的单元测试项目。这很好用。但是我们无法在 Silverlight 5 上设置 OData 客户端。
使用客户端代码生成器 v4 并不断出现错误
The type or namespace name 'Client' does not exist in the namespace
'Microsoft.OData' (are you missing an assembly
reference?) C:\Workspaces\GKS\Main\Source\Simutek.Gks\Source\Simutek.Gks.UI.SL.Common\GksODataClient.cs Simutek.Gks.UI.SL.Common
包:
<package id="Microsoft.OData.Client" version="6.12.0" targetFramework="sl50" />
<package id="Microsoft.OData.Core" version="6.12.0" targetFramework="sl50" />
<package id="Microsoft.OData.Edm" version="6.12.0" targetFramework="sl50" />
<package id="Microsoft.Spatial" version="6.12.0" targetFramework="sl50" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="sl50" />
引用看起来不错,我们还在 app.config:
中尝试了 AssemblyBinding
<dependentAssembly>
<assemblyIdentity name="Microsoft.OData.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.OData.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
</dependentAssembly>
更新: 事实上,虽然 Microsoft.OData.Client NuGet 包安装在 Silverlight 上,但它实际上并没有在其目标。
我现在看到该软件包仅针对
portable-net45+wp8+win8+wpa
所以虽然我可以在 PCL 项目中进行,但我不能在一个针对 Silverlight 5 的项目中进行。
是否有解决方法,有人实现了吗?
您应该使用支持 Silverlight 的 PCL 之一,两个候选者是 ODataLib (Microsoft.OData.Core) 和 Simple.OData.Client,后者建立在 ODataLib 之上。 None 其中支持 class 生成,但自己生成应该没什么大不了的。
Silverlight 不支持微软的OData v4 Client Code Generator visx (OData Client T4) 生成的代码,但是没有人强迫你使用生成的代码。
只需使用您选择的库创建与 OData 服务的连接并重用您自己的类型(业务对象)。
我们正在尝试为 ASP.NET + Silverlight 5 安装 Web API 2.2 和 OData v4。
初始 POC 有一个使用 Simple.OData 连接的单元测试项目。这很好用。但是我们无法在 Silverlight 5 上设置 OData 客户端。
使用客户端代码生成器 v4 并不断出现错误
The type or namespace name 'Client' does not exist in the namespace 'Microsoft.OData' (are you missing an assembly reference?) C:\Workspaces\GKS\Main\Source\Simutek.Gks\Source\Simutek.Gks.UI.SL.Common\GksODataClient.cs Simutek.Gks.UI.SL.Common
包:
<package id="Microsoft.OData.Client" version="6.12.0" targetFramework="sl50" />
<package id="Microsoft.OData.Core" version="6.12.0" targetFramework="sl50" />
<package id="Microsoft.OData.Edm" version="6.12.0" targetFramework="sl50" />
<package id="Microsoft.Spatial" version="6.12.0" targetFramework="sl50" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="sl50" />
引用看起来不错,我们还在 app.config:
中尝试了 AssemblyBinding<dependentAssembly>
<assemblyIdentity name="Microsoft.OData.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.OData.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.12.0.0" newVersion="6.12.0.0" />
</dependentAssembly>
更新: 事实上,虽然 Microsoft.OData.Client NuGet 包安装在 Silverlight 上,但它实际上并没有在其目标。 我现在看到该软件包仅针对
portable-net45+wp8+win8+wpa
所以虽然我可以在 PCL 项目中进行,但我不能在一个针对 Silverlight 5 的项目中进行。
是否有解决方法,有人实现了吗?
您应该使用支持 Silverlight 的 PCL 之一,两个候选者是 ODataLib (Microsoft.OData.Core) 和 Simple.OData.Client,后者建立在 ODataLib 之上。 None 其中支持 class 生成,但自己生成应该没什么大不了的。
Silverlight 不支持微软的OData v4 Client Code Generator visx (OData Client T4) 生成的代码,但是没有人强迫你使用生成的代码。
只需使用您选择的库创建与 OData 服务的连接并重用您自己的类型(业务对象)。