如何用 Microsoft.Azure.Storage.Blob 替换 Microsoft.WindowsAzure.Storage
Posted
技术标签:
【中文标题】如何用 Microsoft.Azure.Storage.Blob 替换 Microsoft.WindowsAzure.Storage【英文标题】:How to replace Microsoft.WindowsAzure.Storage with Microsoft.Azure.Storage.Blob 【发布时间】:2021-01-18 23:15:38 【问题描述】:在我的 asp.net mvc 应用程序中,我使用 Microsoft.WindowsAzure.Storage 8.0.1 向/从 azure 云容器上传/下载 blob。现在 NuGet 包管理器通知我 Microsoft.WindowsAzure.Storage 已弃用,我应该使用 Microsoft.Azure.Storage.Blob。
问题:
-
当我继续使用 Microsoft.WindowsAzure.Storage 8.0.1 时,我会遇到哪些问题?
是否有任何推荐的方法将 Microsoft.WindowsAzure.Storage 8.0.1 替换为 Microsoft.Azure.Storage.Blob?
当我用 Microsoft.Azure.Storage.Blob 替换 Microsoft.WindowsAzure.Storage 8.0.1 时,我是否必须重新编写处理上传/下载 Blob 的代码?
我们将不胜感激任何帮助和建议。
【问题讨论】:
【参考方案1】:首先,稍微修正一下。 Microsoft.Azure.Storage.Blob 已被更新的 SDK Azure.Storage.Blobs 替换,建议您升级到新的 SDK (v12 SDSK)。这是微软更新所有 SDK 以遵循统一 API 标准的举措。你可以阅读更多关于here
当我继续使用 Microsoft.WindowsAzure.Storage 8.0.1 时,我会遇到什么问题?
WindowsAzure.Storage 已弃用,最新版本 9.3.3 已于 2018 年 11 月发布。虽然它仍然有效且尚未失去支持,但建议移至较新的 Azure.Storage.Blobs 包以利用更好的性能,更新、功能发布和未来的持续支持。
是否有任何推荐的方法将 Microsoft.WindowsAzure.Storage 8.0.1 替换为 Microsoft.Azure.Storage.Blob?
如开头所述,正确的包实际上是Azure.Storage.Blobs。有一篇不错的文章更新指南和提示here
当我用 Microsoft.Azure.Storage.Blob 替换 Microsoft.WindowsAzure.Storage 8.0.1 时,我是否必须重新编写处理上传/下载 blob 的代码?
升级到旧包Microsoft.Azure.Storage.Blob 只需要对代码进行很少的更改。但是最新的 SDK Azure.Storage.Blobs 需要您进行一些更改。如here 所述,命名空间、类、方法有一些变化。
| Package | Old Microsoft.Azure.Storage.Blob | v12 Azure.Storage.Blobs |
|:---------:|:-------------------------------------:|:-----------------------------:|
| Namespace | Microsoft.Azure.Storage.Blob.Protocol | Azure.Storage.Blobs.Models |
| Namespace | Microsoft.Azure.Storage.Blob | Azure.Storage.Blobs |
| Namespace | Microsoft.Azure.Storage | Azure |
| Class | CloudBlobClient | BlobServiceClient |
| Class | CloudBlobContainer | BlobContainerClient |
| Class | CloudBlockBlob | BlobClient or BlockBlobClient |
| Class | StorageException | RequestFailedException |
| Class | BlobErrorCodeStrings | BlobErrorCode |
更新:由于您使用的是 .net framework 4.5.2,因此您不支持 Azure.Storage.Blobs。你必须选择Microsoft.Azure.Storage.Blob。
【讨论】:
我的应用程序面向 .NET Framework 4.5.2,但 Azure.Storage.Blobs 至少需要 4.6.1。没有机会在 4.5.2 中使用 Azure.Storage.Blobs? 很遗憾没有。在这种情况下,我建议使用较旧的 V11 SDK,即支持 4.5.2 的 Microsoft.Azure.Storage.Blob 这个的替代品是什么? docs.microsoft.com/en-us/dotnet/api/… 您并不真的需要 CloudBlobDirectory 来做任何真实的事情。 V12 SDK 中的 BlobContainerClient 和 BlobServiceClient 实际上可以使用它的方法做的任何事情。以上是关于如何用 Microsoft.Azure.Storage.Blob 替换 Microsoft.WindowsAzure.Storage的主要内容,如果未能解决你的问题,请参考以下文章
脑筋急转弯:如何用两个栈实现一个队列 && 如何用两个队列实现一个栈