Wcf 使用Microsoft.Data.Services.Client.dll而不是System.Data.Services.Client.dll会导致Azure.StorageClient出现问题
我们有一个使用WCF 5.0和WindowsAzure SDK的项目 有两个引用Microsoft.Data.Services.Client.dll和System.Data.Services.Client.dll,它们存在冲突。如果删除系统DLL(根据),则无法使用windowsAzure SDK。如果删除Microsoft DLL,我将无法利用WCF的新功能,特别是OData 3.0版 删除系统DLL引用后: 无法从转换 'System.Data.Services.Client.SaveChangesOptions[c:\Program Files (x86)\Microsoft WCF数据 服务\5.0\bin.NETFramework\Microsoft.Data.Services.Client.dll]“到” 'System.Data.Services.Client.SaveChangesOptions' 其他信息: 匹配的最佳重载方法 'Microsoft.WindowsAzure.StorageClient.TableServiceContext.SaveChangesWithRetries(System.Data.Services.Client.SaveChangesOptions)' 有一些无效的参数 已定义类型“System.Data.Services.Client.DataServiceContext” 在未引用的程序集中。您必须添加对的引用 程序集'System.Data.Services.Client,版本=3.5.0.0, 区域性=中性,PublicKeyToken=b77a5c561934e089'Wcf 使用Microsoft.Data.Services.Client.dll而不是System.Data.Services.Client.dll会导致Azure.StorageClient出现问题,wcf,azure,odata,Wcf,Azure,Odata,我们有一个使用WCF 5.0和WindowsAzure SDK的项目 有两个引用Microsoft.Data.Services.Client.dll和System.Data.Services.Client.dll,它们存在冲突。如果删除系统DLL(根据),则无法使用windowsAzure SDK。如果删除Microsoft DLL,我将无法利用WCF的新功能,特别是OData 3.0版 删除系统DLL引用后: 无法从转换 'System.Data.Services.Client.SaveCha
如果我删除对Microsoft.Data.Services.Client的引用并添加对System.Data.Services.Client的引用,则不会出现错误-我们也不会得到WCF 5.0 我能够相当快地重新处理这个问题。Microsoft.WindowsAzure.StorageClient.Dll对System.Data.Service.Client.Dll具有直接引用依赖关系,如下所示,因此如果要使用Azure存储客户端API,则必须在应用程序中引用System.Data.Service.Client.Dll,并确保不能使用WCF 5.0 SDK提供的oData 3.0。更多信息发布在下面的SO问题中:
您可以使用外部别名来区分两个类型名,这两个类型名除了包含它们的程序集之外是相同的
using SystemDataV4.System.Data.Services.Client;
或
请注意带有别名的名称空间前缀,例如SystemDataV4.System.Data.Services…我最近更新了对WCF 5.0的引用,但没有发现任何问题。与您所做的唯一不同之处在于,我已替换了项目中的其他引用(如System.Data.Services到Microsoft.Data.Services)。您的问题似乎与Azure.StorageClient无关,但与命名空间冲突有关。Azure.Storage.Client需要System.Data.Services.Client,而不是Microsoft.Data.Services.Client。我将更新我的原始帖子以显示其他错误。
serviceContext.SaveChangesWithRetries(SystemDataV4.System.Data.Services.Client.SaveChangesOptions.ReplaceOnUpdate);