Microsoft.Azure.Storage和WindowsAzure.Storage Nuget包有什么区别?

47

我一直觉得这很令人困惑:

  • WindowsAzure.Storage NuGet包由微软开发,可以让你处理诸如Blob Storage(创建blob等)之类的任务。
  • 还有Microsoft.Azure.Storage.* 包也由微软开发,完成相同的任务。

如果你的项目同时依赖于这两者,就会出现命名冲突,例如(类型“CloudStorageAccount”存在于“Microsoft.Azure.Storage.Common”和“Microsoft.WindowsAzure.Storage”中)。

以下是两种方案的链接:

https://learn.microsoft.com/en-us/dotnet/api/overview/azure/storage?view=azure-dotnet

https://github.com/Azure/azure-storage-net/blob/master/README.md

它们之间的区别是什么?我何时应该使用其中一个而不是另一个?


2
我想扩展这个问题,以涵盖Azure.Storage.Blobs。 - Andy
2个回答

52

WindowsAzure.Storage(最新版本为v9.3.2)是我们一直在使用的旧版存储SDK,而Microsoft.Azure.Storage.*(最新版本为v9.4.0)则是它的新版,已经发布了一年左右的时间,可以通过NuGet获取。

查看Storage .NET SDK的变更日志,列出了其中的一些重要差异和变化。

  1. Microsoft.Azure.Storage将库分成了三个部分:Blob、Queue 和 File,这意味着我们可以安装单独的包,而不是整个版。

  2. Microsoft.Azure.Storage不再支持Table API,它被转移到了Microsoft.Azure.Cosmos.Table

  3. Microsoft.Azure.Storage从9.4.0-preview开始添加了NetStandard2.0目标支持,它支持对异步API进行同步方法的封装,而WindowsAzure.Storage仅支持异步API。

  4. Microsoft.Azure.Storage v9.4包暂时回到使用Microsoft.WindowsAzure.Storage命名空间,以便于现有库的过渡。

根据我们的需求做出选择即可。


从新包中删除对Table Storage的访问(基本上阻止TS用户使用.NET Core)有望得到解决,但现在仍然仅支持完整框架。 - hko
9
我不理解微软为什么要在新的Microsoft.Azure.Storage库中保留旧的WindowsAzure.Storage命名空间。现在我遇到了命名空间冲突的问题,因为我还引用了一个使用旧的WindowsAzure.Storage的第三方库。我试着在我的.NET Core项目中设置一个外部别名,但它没有起作用。真是该死,这是微软多么愚蠢的选择。 - Jérôme MEVEL
3
微软在Microsoft.Azure.Storage的9版本中使用了旧的命名空间,在2019年4月9日发布的10版本(https://www.nuget.org/packages/Microsoft.Azure.Storage.Blob/10.0.0)中更改为 Microsoft.Azure.Storage.* 。只需使用版本10及以上,就不会有问题。 - Dai
@戴谢谢,将库更新到最新版本解决了冲突问题。 - Pramod mishra

38
现在有三个级别:
  1. WindowsAzure.Storage - 最高版本为v9.3.3 - 不要再使用它了。
  2. Microsoft.Azure.Storage - v9.4.0至v11.1.7 - 较老版本。
  3. Azure.Storage - v12.x - 使用这个库。

所有Azure库正在合并到Azure命名空间中,因此更新的库都以Azure开头(而不是Microsoft.AzureWindowsAzure),您应该在可用时使用这些库。


似乎只有部分正确:例如,Microsoft.Azure.Storage.DataMovement是最新的命名空间;没有非“Microsoft”前缀的命名空间。 - Ofer Zelig
我相信这些被称为Track 0、1和2,基于我从这里学到的:https://github.com/Azure/azure-sdk-for-net/issues/10842 - 但我不是100%确定。 - Sabuncu
Azure.Storage和其已弃用的库是否相同? - aj go

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接