2012-05-20 66 views
4

我們有一個使用WCF 5.0和WindowsAzure SDK的項目。使用Microsoft.Data.Services.Client.dll而不是System.Data.Services.Client.dll會導致Azure.StorageClient出現問題

有兩個引用Microsoft.Data.Services.Client.dll和System.Data.Services.Client.dll,它們有衝突。如果我刪除了系統DLL(根據this),我無法使用windowsAzure SDK。如果我刪除了Microsoft DLL,我無法利用WCF特別是OData 3.0版的新功能。

之後,我刪除系統DLL參考:\ Program Files文件 (x86)的\微軟WCF數據 服務\ 5.0:

無法從 「System.Data.Services.Client.SaveChangesOptions [C轉換\ 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, Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用。

如果我刪除提及Microsoft.Data.Services.Client並添加引用System.Data.Services.Client那麼我們沒有錯誤 - 我們還沒有得到WCF 5.0!

+0

我最近更新了對WCF 5.0的引用,但沒有發現任何問題。唯一不同於你所做的是,我已經在我的項目中替換了其他引用(如System.Data.Services到Microsoft.Data.Services)。您的問題似乎與Azure.StorageClient不相關,但與命名空間衝突有關。 – Chopin

+0

不知何故Azure.Storage.Client需要System.Data.Services.Client而不是Microsoft.Data.Services.Client。我會更新我的原始帖子以顯示其他錯誤。 – Telmo

回答

2

我能夠很快地重現這個問題。 Microsoft.WindowsAzure.StorageClient.Dll對System.Data.Service.Client.Dll具有直接引用依賴關係,如下所示,所以如果要使用Azure Storage Client API,則必須引用System.Data.Service.Client.Dll在您的應用程序中,並確保您不能使用WCF 5.0 SDK提供的oData 3.0。更多信息張貼在下面的SO問題:

WCF 5.0 and oData 3.0 API not work with azure table storage

0

您可以使用外部別名是從它們包含在程序除了兩個相同類型名稱區分。

  1. 設置System.Data.Services.Client一個別名 - 說SystemDataV4

    (見MSDN Blogs - Extern Alais Walkthrough

  2. 在你的最頂端。cs文件使用

    extern alias SystemDataV4;

然後你就可以有

using SystemDataV4.System.Data.Services.Client; 

serviceContext.SaveChangesWithRetries(SystemDataV4.System.Data.Services.Client.SaveChangesOptions.ReplaceOnUpdate); 

注意命名空間的前綴與別名,如SystemDataV4 .System.Data.Services ...

相關問題