5

我的托管服务使用 Azure Storage 2.0(正好是 Nuget 的 2.0.5.1)。在 Visual Studio 2010 下我没有问题。我切换到 Visual Studio 2012,现在在我的主要网络角色的某个网站中,我得到以下类型的异常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 存储 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。

4

1 回答 1

4

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

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

另一种选择是,我也可以移动Microsoft.WindowsAzure.StorageClient到另一个位置并更改项目中的引用——但这将毫无用处,因为我计划完全移动到 Azure Storage 2.0(例如,我希望在 Azure SDK 2.0 中诊断使用 Storage 2.0)。

于 2013-05-02T18:54:27.993 回答