【问题标题】:Why is Microsoft.Azure.EventHubs.Processor still referencing Microsoft.WindowsAzure.Storage?为什么 Microsoft.Azure.EventHubs.Processor 仍然引用 Microsoft.WindowsAzure.Storage?
【发布时间】:2019-08-20 13:24:38
【问题描述】:

为 dotnet core 2.2 构建

我包括以下内容:

using Microsoft.Azure.EventHubs;             (4.0.0)
using Microsoft.Azure.EventHubs.Processor;   (4.0.0)

我试图抛出一个异常:

_eventProcessorHost = new EventProcessorHost(
               hubName,
               PartitionReceiver.DefaultConsumerGroupName,
               _eventHubConnectionString,
               _storageConnectionString,
               blobName);

异常说:

“无法从程序集 'Microsoft.Azure.Storage.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 中加载类型 'Microsoft.WindowsAzure.Storage.CloudStorageAccount'”

当我查看存根时,我确实可以看到 EventProcessorHost 的各种构造函数确实引用了旧命名空间中的成员——例如 Microsoft.WindowsAzure.Storage.CloudStorageAccount。

我的理解是旧空间 Microsoft.WindowsAzure 已完全被新空间 Microsoft.Azure 取代。我还需要导入旧空间吗?

尝试安装 Microsoft.WindowsAzure.Common,卸载并重新安装 WindowsAzure 库。

【问题讨论】:

  • 您参考哪个版本的 EventHub nuget 包?
  • 我使用的是 4.0.0
  • 嗯,至少基于 Nuget 页面,它不应再引用 WindowsAzure...
  • 我下载了你引用的源码。在 \eventhub\Microsoft.Azure.EventHubs.Processor 中,您可以看到包含 WindowsAzure: namespace Microsoft.Azure.EventHubs.Processor { using System;使用 System.Threading.Tasks;使用 Microsoft.Azure.EventHubs.Primitives;使用 Microsoft.WindowsAzure.Storage; ...... }

标签: azure .net-core storage azure-eventhub


【解决方案1】:

更新 0822

这似乎是 4.0.0 版本的 Microsoft.Azure.EventHubs.Processor 中的一个错误,有一个 issue 可以跟踪它。目前,您可以根据需要使用 3.0.0 版本。

而且,我也跟着这个official doc 来测试事件中心接收器,对Microsoft.Azure.EventHubsMicrosoft.Azure.EventHubs.Processor 都使用4.0.0 包,它在我身边运行良好。并且默认安装的存储sdk是Microsoft.Azure.Storage.Blob,版本9.4.2。

注意:如您所见,EventProcessorHost的构造函数有5个,请使用第一个,所有参数都使用字符串类型。

测试结果:


请尝试使用最新版本的4.0.0 nuget Package Microsoft.Azure.EventHubs.Processor,它使用新版本的存储sdk,如Microsoft.Azure.Storage.Blob。截图如下:

4.0.0 之前的其他版本,如 3.0.0 / 2.2.1 仍在使用旧的存储 sdk,如 WindowsAzure.Storage

【讨论】:

  • 是的,我使用的是 4.0.0
  • 感谢您一直支持我! -- 今晚我会尝试 3.0.0 降级并通知您。
  • @MichaelDavidArner,如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。
  • 我已经这样做了。我的声誉仍然很低,所以他们没有公开展示它。 “感谢您的反馈!声望低于 15 人的投票会被记录下来,但不要更改公开显示的帖子得分。”
  • @MichaelDavidArner,关于如何标记为答案(不是投票),您可以关注此guide。您之前所做的是投票,而不是标记为答案。谢谢你:)
【解决方案2】:

好的,我想我现在弄清楚了您的实际“问题”:

尽管 EventHubsProcessorHost nuget 包的 4.0.0 版已使用新的 nuget 包 Microsoft.Azure.Storage.Blob,但仅在该包的新版本(自 10.0 起)中,命名空间已从 Microsoft.WindowsAzure... 更改为 Microsoft.Azure...。我还看不到 EHProcessorHost 正在使用的存储库的确切版本,它看起来是一个

有关存储库的更改日志,请参见此处: https://github.com/Azure/azure-storage-net/blob/master/Blob/BreakingChanges.txt

跟踪自 10.0 以来的重大更改:

  • 命名空间从 Microsoft.WindowsAzure.Storage.* 更改为 Microsoft.Azure.Storage.*,对于具有 9.4 之前版本的 SxS 是必需的 图书馆。

【讨论】:

  • 那么,添加最新版本的 Microsoft.Azure.Storage.Blob 就足够了吗?这样做只会更新同一错误消息中的版本:“无法从程序集“Microsoft.Azure.Storage.Common”中加载类型“Microsoft.WindowsAzure.Storage.CloudStorageAccount”,版本=11.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35 '。”
  • 看起来他们直到 9 点才具有破坏性依赖关系......并且它仍然在 11 点破坏?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
相关资源
最近更新 更多