加载Azure存储2.0时出错 - 无法加载Microsoft.Data.OData 5.0.2

edy*_*mtt 5 .net azure azure-storage nuget visual-studio-2012

我的托管服务使用Azure Storage 2.0(来自Nuget的2.0.5.1).在Visual Studio 2010下我没有问题.我切换到Visual Studio 2012,现在在我的主要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)
Run Code Online (Sandbox Code Playgroud)

而Azure Storage 2.0.5.1需要Microsoft.Data.OData5.2.0.0.其他工作者角色工作正常,他们似乎找到了正确的程序集.在每个项目中,Azure Storage 2.0都是从Nuget安装的,所有引用都指向该packages文件夹.

我在.NET 4.0下使用Azure SDK 1.8 - 这意味着我还使用Azure Storage Client 1.7.

edy*_*mtt 4

经过一番调查,我发现这个网站是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 诊断中使用存储) 2.0)。

  • 您还可以使用绑定重定向,这似乎是库尝试执行的操作。 (2认同)