我的托管服务使用 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 存储 2.0.5.1 需要 Microsoft.Data.OData 5.2.0.0 。其他 worker 角色工作得很好,他们似乎找到了正确的装配。在每个项目中,Azure Storage 2.0 都是从 Nuget 安装的,所有引用都指向 packages
文件夹。
我在 .NET 4.0 下使用 Azure SDK 1.8 - 这意味着我还使用 Azure 存储客户端 1.7。
最佳答案
经过一番调查,我发现该网站从 SDK 路径加载了 Microsoft.WindowsAzure.Storage
,与我加载 Microsoft.WindowsAzure.StorageClient
的路径相同> 在其他程序集中 - 在 Visual Studio 的模块窗口中,我可以看到 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 诊断中使用存储 2.0)。
关于.net - 加载 Azure 存储 2.0 时出错 - 无法加载 Microsoft.Data.OData 5.0.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16345631/