5

私のホステッド サービスは、Azure Storage 2.0 (正確には Nuget の 2.0.5.1) を使用しています。Visual Studio 2010 では問題ありませんでした。Visual Studio 2012 に切り替えたところ、メインの Web ロールの一部の Web サイトで、次のタイプの例外が発生しましたMicrosoft.WindowsAzure.Storage.StorageException

Could not load file or assembly 'Microsoft.Data.OData, Version=5.0.2.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The located assembly's manifest definition does not match
the assembly reference. (Exception from HRESULT: 0x80131040)

一方、Azure Storage 2.0.5.1 には 5.2.0.0 が必要Microsoft.Data.ODataです。他のワーカー ロールは正常に機能し、正しいアセンブリを見つけたようです。すべてのプロジェクトで、Azure Storage 2.0 が Nuget からインストールされ、すべての参照がpackagesフォルダーを指しています。

私は .NET 4.0 で Azure SDK 1.8 を使用しています。これは、Azure Storage Client 1.7 も使用していることを意味します。

4

1 に答える 1

4

少し調査した結果、この Web サイトMicrosoft.WindowsAzure.Storageが SDK パスから読み込まれたことを発見しました。これMicrosoft.WindowsAzure.StorageClientは、他のアセンブリで読み込んだのと同じパスです。Visual Studio の [モジュール] ウィンドウでiisexpress、ファイル バージョン 2.0.0.0 でアセンブリを読み込むことがわかります。私の理解では、への参照により、 Visual Studioが間違ったパスからMicrosoft.WindowsAzure.StorageClient読み込まれる可能性があります。Microsoft.WindowsAzure.Storage

少しいじった後、Microsoft.WindowsAzure.StorageアセンブリをSDKフォルダーから移動し、Visual StudioがNugetによってダウンロードされたアセンブリを参照するように強制しました-この方法で問題はありませんでした。

別の方法として、別の場所に移動Microsoft.WindowsAzure.StorageClientしてプロジェクト内の参照を変更することもできますが、Azure Storage 2.0 に完全に移行する予定であるため、これはまったく役に立ちません (たとえば、Azure SDK 2.0 の Diagnostics で Storage が使用されることを願っています)。 2.0)。

于 2013-05-02T18:54:27.993 に答える