Azure.Fluent.Management 和 Azure.Storage.Blobs 包之间的冲突?

Posted

技术标签:

【中文标题】Azure.Fluent.Management 和 Azure.Storage.Blobs 包之间的冲突?【英文标题】:conflict between Azure.Fluent.Management and Azure.Storage.Blobs packages? 【发布时间】:2020-08-08 01:11:24 【问题描述】:

在我的项目中,我安装了 Microsoft.Azure.Management.Fluent 包(版本 1.27)来为我的 azure 订阅进行资源管理。我的连接对象如下所示:

AzureCredentials credentials = GenerateCredentials(); // custom method that returns my creds.
IAzure azureConn = Azure
   .Configure()
   .Authenticate(credentials)
   .WithDefaultSubscription();

这很好用。今天,我用Nuget(12.4版)安装了Azure.Storage.Blobs包。安装此包后,出现错误:

> CS0234 C# The type or namespace name 'Configure' does not exist in the
> namespace 'Azure' (are you missing an assembly reference?)

当我卸载Azure.Storage.Blobs 包时,错误消失了。这里可能发生了什么?我在 Net Core 2.2 MVC 项目中使用它。

【问题讨论】:

【参考方案1】:

你应该使用全限定类名而不是Azure类来解决冲突,下面的代码是可以的:

IAzure azureConn = Microsoft.Azure.Management.Fluent.Azure
                  .Configure()
                  .Authenticate(credentials)
                  .WithDefaultSubscription();

原因是安装Azure.Storage.Blobs 后,有一个命名空间Azure 包含用于blob 存储。所以在代码中,当你输入Azure.Configure()时,编译器会混淆,Azurenamespace还是class?当然,它会将Azure 视为一个命名空间(这里Azure 命名空间用于存储blob),但Configure() 方法不在此命名空间中,则会抛出此类错误。

【讨论】:

谢谢,这确实是问题所在。只是一个后续问题:这是设计故障,还是无法避免的事情?我觉得这很奇怪,因为它们都是 Microsoft 库,而 Visual Studio 并没有为此提出解决方案。 @CMorgan,我不知道这是否是设计故障。我认为如果它们具有相同的名称,vs 将始终在类上使用命名空间。

以上是关于Azure.Fluent.Management 和 Azure.Storage.Blobs 包之间的冲突?的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理