4

WCF5.0とWindowsAzureSDKを使用するプロジェクトがあります。

Microsoft.Data.Services.Client.dllとSystem.Data.Services.Client.dllの2つの参照があり、それらは競合しています。(これに従って)システムDLLを削除すると、windowsAzureSDKを使用できなくなります。Microsoft DLLを削除すると、WCFの新機能、特にODataバージョン3.0を利用できなくなります。

システムDLL参照を削除した後:

'System.Data.Services.Client.SaveChangesOptions [c:\ Program Files(x86)\ Microsoft WCF Data Services \ 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、Version = 3.5.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'への参照を追加する必要があります。

Microsoft.Data.Services.Clientへの参照を削除し、System.Data.Services.Clientへの参照を追加すると、エラーは発生しません。WCF5.0も発生しません。

4

2 に答える 2

2

私はこの問題をかなり迅速に再現することができました。Microsoft.WindowsAzure.StorageClient.Dllは、以下に示すようにSystem.Data.Service.Client.Dllに直接参照依存しているため、Azure Storage Client APIを使用する場合は、System.Data.Service.Client.Dllを参照する必要があります。アプリケーションで、WCF5.0SDKが提供するoData3.0を使用できないことを確認してください。詳細については、以下のSOの質問に掲載されています。

WCF5.0およびoData3.0APIは、Azureテーブルストレージでは機能しません

于 2012-06-04T23:48:46.323 に答える
0

externエイリアスを使用して、それらが含まれているアセンブリを除いて同一である2つのタイプ名を区別できます。

  1. System.Data.Services.Clientのエイリアスを設定します-たとえばSystemDataV4

    MSDNブログ-Extern Alaisウォークスルーを参照)

  2. .csファイルの最上部で使用する

    externエイリアスSystemDataV4;

次に、あなたはどちらかを持つことができます

using SystemDataV4.System.Data.Services.Client;

また

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

名前空間のプレフィックスとエイリアスに注意してください(例:SystemDataV4 .System.Data.Services ...)。

于 2014-02-09T22:35:44.180 に答える