【问题标题】:Conflicting Namespace Resolution冲突的命名空间解析
【发布时间】:2023-04-03 12:25:01
【问题描述】:

我使用的是一个名为BCrypt.net的库,作者将Namespace与Class同名,所以Class全路径为:BCrypt.Net.BCrypt,其中BCrypt.Net是Namespace,BCrypt是Class名字。

我正在尝试在我的代码中使用,就像我能找到使用的所有示例一样,例如:

BCrypt.HashPassword("234");

但 Visual Studio 抱怨说:

错误 3 类型或命名空间名称“HashPassword”不存在于 命名空间“BCrypt”(您是否缺少程序集 参考?)

我的项目中有程序集(因为我是从 NuGet 获得的):

如果我在我的命名空间之前添加using BCrypt.Net;using BCrypt;,则错误表示相同。 我将它添加到我的命名空间中,发生了一些有趣的事情。我工作,代码编译并执行。但是 Visual Studio 显示错误!我无法理解它是如何编译错误的。

namespace Test.Data
{
    using BCrypt.Net; // The 'Net' is marked with a Red Error line in VS2013
    ....
    string s = BCrypt.HashPassword("234");

错误 3 类型名 'Net' 不存在于类型 >'BCrypt.Net.BCrypt'

错误(但编译和执行正常)与using BCrypt = BCrypt.Net.BCrypt; 相同

那么发生了什么?


编辑:

我知道我可以将它用作BCrypt.Net.BCrypt.HashPassword("234");,但我想避免它。

【问题讨论】:

    标签: c# .net visual-studio-2013 namespaces


    【解决方案1】:

    我认为您可以通过向命名空间添加别名来解决此问题。像这样的:

    using BCr = BCrypt.Net;
    
    namespace Program {
    
       public class MyClass {
    
         public void MyMethod() {
            var s = BCr.BCrypt.HashPassword("234");
         }
      }
    }
    

    【讨论】:

    • 不幸的是,是的。请参阅blogs.msdn.com/b/ericlippert/archive/2010/03/09/… 了解为什么他们不应该对类和命名空间使用相同的名称。
    • 我看到了@sprinter252 的答案,它也能正常工作。在这种情况下,您应该为类型而不是命名空间定义别名。
    • 对我来说,只在命名空间内使用using BCrypt.Net; 是有效的,但Net 被VS2013 显示为错误,所有其他有效的选项也显示它。
    • 我使用该库在 VS2013 Ultimate 上创建了一个项目,它运行良好。当我在命名空间内添加 using BCrypt.Net; 时,没有显示错误。即使使用@sprint252 建议也可以正常工作。可能是 VS 安装问题?
    • hmmm 也许,我在一个类库项目中顺便说一句
    【解决方案2】:

    添加

    using BCrypt = BCrypt.Net.BCrypt;
    

    到你的用途:

    namespace YourNamespace
    {
        using BCrypt = BCrypt.Net.BCrypt;
    
        class Program
        {
            static void Main(string[] args)
            {
                BCrypt.HashPassword("234");
            }
        }
    

    校对屏幕:

    【讨论】:

    • 在命名空间内与using BCrypt.Net;作用相同,VS2013报同样的错误,编译ok,执行ok。
    • mFeinstein 我添加了一个显示我的工作室的屏幕截图。编译运行也可以。
    • 试试using BCrypt.Net;而不是别名,看看你的VS是否显示任何错误。我在VS2013,你的呢?
    • 我使用 VS 2015 企业版
    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2010-11-15
    相关资源
    最近更新 更多