【问题标题】:What is the difference between the Microsoft.Azure.Storage and WindowsAzure.Storage Nuget packages?Microsoft.Azure.Storage 和 WindowsAzure.Storage Nuget 包有什么区别?
【发布时间】:2019-04-12 09:17:18
【问题描述】:

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

  • 有一个由 Microsoft 创作的 WindowsAzure.Storage NuGet 包,可让您使用例如 Blob 存储(创建 Blob 等)。
  • 还有Microsoft.Azure.Storage.* 包可以完成同样的事情,也是由 Microsoft 编写的。

如果您的项目碰巧对两者都有依赖关系,则可能会出现命名冲突,例如(“Microsoft.Azure.Storage.Common, ... 和“Microsoft.WindowsAzure.Storage, ...”中都存在“CloudStorageAccount”类型。

以下是两个备选方案的链接:

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

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

有什么区别?我什么时候会被激励使用其中一种?

【问题讨论】:

  • 我想将问题扩展到 Azure.Storage.Blobs

标签: azure azure-storage


【解决方案1】:

WindowsAzure.Storage(latest is v9.3.2) 是我们一直使用的旧版 Storage SDK,Microsoft.Azure.Storage.*(latest v9.4.0) 是它的新版本,nuget 可用大约一年。

查看 Storage .NET SDK 的changelog。列出这些重要差异/变化的一部分。

  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 上的同步方法。 NetStandard 上的WindowsAzure.Storage 仅具有异步 API。

  4. Microsoft.Azure.Storage v9.4 包暂时移回使用 Microsoft.WindowsAzure.Storage 命名空间,以简化现有库的转换。

只需根据我们的要求做出选择。

【讨论】:

  • 从较新的包中删除 Tablestorage 访问(基本上阻止 .NET Core 的 TS 用户)有望得到修复,现在它仍然只是完整的框架
  • 我不理解 Microsoft 选择将旧的 WindowsAzure.Storage 命名空间保留在新的 Microsoft.Azure.Storage 库中。现在我以命名空间冲突告终,因为我还引用了使用旧 WindowsAzure.Storage 的第 3 方库。我正在尝试在我的 .NET Core 项目中设置 extern alias,但它不起作用。什么鬼,这么愚蠢的选择微软
  • @JérômeMEVEL 微软在 Microsoft.Azure.Storage 的第 9 版中使用了旧的命名空间,在第 10 版(2019 年 4 月 9 日发布:nuget.org/packages/Microsoft.Azure.Storage.Blob/10.0.0)中,命名空间已更改为 Microsoft.Azure.Storage.*)。坚持使用 10+ 版本就可以了。
  • @Dai 谢谢,将库更新到最新版本可以解决冲突。
【解决方案2】:

现在有三个级别:

  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.-前缀一个
  • 根据我从这里学到的知识,我相信这些被称为轨道 0、1 和 2:github.com/Azure/azure-sdk-for-net/issues/10842 - 但我不是 100% 确定。
  • Azure.Storage 是否与其弃用的库相同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
相关资源
最近更新 更多