Wcf 使用Microsoft.Data.Services.Client.dll而不是System.Data.Services.Client.dll会导致Azure.StorageClient出现问题

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

我们有一个使用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'


如果我删除对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问题中:


您可以使用外部别名来区分两个类型名,这两个类型名除了包含它们的程序集之外是相同的

  • 为System.Data.Services.Client设置别名-例如SystemDataV4

    (见附件)

  • 在.cs文件的最顶端使用

    外部别名SystemDataV4

  • 那么你可以选择

    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);