代码之家  ›  专栏  ›  技术社区  ›  Vilx-

VB。NET:不存在歧义时出现歧义类名错误

  •  4
  • Vilx-  · 技术社区  · 15 年前

    我们的一位客户报告说,当试图使用我们的。网VB中的DLL。NET他们收到错误信息:

    错误BC31429:“我们的类”不明确,因为命名空间“我们的”中存在多种具有此名称的成员。公司nspace'

    我还能够用一个包含一行代码的虚拟项目重现错误

    Dim x as our.company.nspace.OurClass
    

    通常这是因为有几种类型的名称只是大小写不同。但在这种情况下,并不存在这种模糊性。 OurClass 不仅在特定命名空间中,而且在整个程序集和项目引用的任何其他程序集中,都是唯一的名称。反射器也显示了这一点。也没有具有相同名称的类成员,也由Reflector验证。

    还有一件奇怪的事情是,在我创建虚拟项目后,错误就不存在了,然后它突然出现了,现在它不再消失了。事实上,我甚至没有在两个重新编译之间做任何改变,第一个重新编译成功了,第二个没有。

    所以有什么好处?

    (注意:.DLL使用并引用vjslib(J#),如果相关的话)

    3 回复  |  直到 15 年前
        1
  •  1
  •   Quango    15 年前

    你试过使用全球网络吗。前缀例如

    Dim x as Global.our.company.nspace.OurClass
    

    看见 http://msdn.microsoft.com/en-us/library/k701czy1(VS.90).aspx

        2
  •  1
  •   brianc    8 年前

    发现了问题。有两个名称重复的类,一个小写(标记为“过时”),一个大写,但都留在代码中。显然不符合CLS标准,会炸毁VB。Net,它不区分大小写。

    生成并生成

    generateAsync和generateAsync

    今天的解决方案是从GitHub下载,删除小写违规者,重新编译并手动添加到project中,至少直到更新的补丁发布到他们的端部。

        3
  •  0
  •   Fake    15 年前

    我以前在部署web应用时遇到过这个问题。我在开发环境中没有遇到错误,但当我试图将其部署到测试服务器时,我遇到了不明确的名称空间错误。我不得不从数据库中删除所有DLL bin 文件夹,然后重新部署应用程序。

    听起来这可能是一个参考问题。也许客户端只需要删除并重新添加对DLL的引用,然后对其解决方案进行重建?