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

时间:2013-05-02 18:54:28

标签: .net azure visual-studio-2012 nuget azure-storage

我的托管服务使用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)

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

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

1 个答案:

答案 0 :(得分:4)

经过一番调查后,我发现这个网站从SDK路径加载Microsoft.WindowsAzure.Storage,与我在其他程序集中加载Microsoft.WindowsAzure.StorageClient的路径相同 - 在Visual Studio I的模块窗口中可以看到iisexpress使用文件版本2.0.0.0加载程序集。据我所知,对Microsoft.WindowsAzure.StorageClient的引用可以强制Visual Studio从错误的路径加载Microsoft.WindowsAzure.Storage

经过一些摆弄后,我已将Microsoft.WindowsAzure.Storage程序集移出SDK文件夹,强制Visual Studio引用Nuget下载的程序集 - 这样我没有问题。

另一种选择,我也可以将Microsoft.WindowsAzure.StorageClient移动到另一个位置并更改项目中的引用 - 但由于我打算完全迁移到Azure Storage 2.0,因此这将毫无用处(例如,我希望Azure SDK 2.0诊断中的内容使用Storage 2.0)。