繁体   English   中英

Azure 和 Microsoft.Azure 命名空间之间的冲突

[英]Conflict between Azure and Microsoft.Azure namespaces

我需要添加对我的代码的新引用,因此我通过 nuget Azure.Messaging.ServiceBus管理器添加了 Azure.Messaging.ServiceBus。 安装成功,我可以在我的 package 的参考资料中看到。

但是,当我尝试将 using Azure.Messaging.ServiceBus添加到给定文件时,它找不到它,据我所知,因为还有对Microsoft.Azure.X的其他引用,并且 Azure 命名空间被路由到Microsoft.Azure命名空间。

我能够通过以下方式在名称空间之外添加引用来暂时避免该问题:

#pragma warning disable SA1200 // Using directives must be placed correctly
//using Azure.Messaging.ServiceBus;
#pragma warning restore SA1200 // Using directives must be placed correctly

namespace X.Y.Z
{
    using System;
    ...
    using Microsoft.Azure.ResourceProvider.Common.Exceptions;
    ...

然而,这有点痛苦,因为我必须将它添加到许多类中,而且它还阻止我做一些事情,比如使用完全限定的 object 名称Azure.Messaging.ServiceBus.ServiceBusMessage不与另一个 class 冲突已在我的解决方案中命名为ServiceBusMessage

我可以做些什么来让Azure.Messaging.ServiceBus像任何其他导入一样被对待并且不与现有引用冲突?

  • Using语句是为了提高可读性,而不是为了提高性能。

假设 Headers 部分( using statements 部分)中的 using 指令是将命名空间带入 scope 作为完全限定的命名空间(例如: System.Text.StringBuilder ) - 这种语句用于正确使用(创建和处理)一个 object 实现了IDisposable接口。

  • <fully-qualifed-type-name>是可以在不指定类型名称的情况下引用其 static 成员和嵌套类型的类型的名称。 如果您不提供完全限定的类型名称,C# 会生成编译器错误 CS0246,如MSFT Doc所引用。

正如 Panagiotis Kanavos 所建议的那样,另一种选择是使用两个或多个文件来分隔需要访问每个命名空间的类/方法。

很高兴 Nimish Todi,你正在努力,

  • 通过重构代码来解决问题,使类只执行它们自己的功能,而不是在此时进行许多更改,而导入的别名确实有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM