VB.NET:当没有歧义时,模糊的类名错误

时间:2010-08-16 09:02:46

标签: vb.net ambiguity

我们的客户报告说,在VB.NET中尝试使用.NET .DLL时会收到错误:

  

错误BC31429:'OurClass'不明确,因为名称空间'our.company.nspace'中存在多种具有此名称的成员

我还能够通过包含单行

的虚拟项目重现错误
Dim x as our.company.nspace.OurClass

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

另外一个奇怪的事情是,在我创建虚拟项目之后错误并不是立即出现,然后突然出现,现在它不再消失了。事实上,我甚至没有改变第一个工作的两个重新编译之间的任何东西,第二个没有。

那么...给出了什么?

(注意:.DLL使用和引用vjslib(J#),如果它有任何相关性)

3 个答案:

答案 0 :(得分:0)

您是否尝试过使用Global。字首?例如

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

请参阅http://msdn.microsoft.com/en-us/library/k701czy1(VS.90).aspx

答案 1 :(得分:0)

之前部署网络应用时遇到过这个问题。我没有在我的开发环境中收到错误,但是当我尝试将其部署到测试服务器时,我得到了模糊的命名空间错误。我不得不从bin文件夹中删除所有DLL,然后重新部署应用程序。

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

答案 2 :(得分:0)

发现了这个问题。有两个类具有重复名称,一个小写(标记为"过时")和一个大写,但两个都在代码中。显然不符合CLS并且爆炸了VB.Net,它不区分大小写。

生成并生成

generateAsync和GenerateAsync

今天的解决方案是从GitHub下载,删除小写违规者,重新编译并手动添加到项目至少,直到最终发布更新的修订。