vb.net 编译错误“abc”在命名空间“xyz”中不明确

Ger*_*ton 5 vb.net compilation ambiguous

我有另一个开发人员创建的 VB.Net 解决方案,我正在尝试在我们的构建机器上编译它(它在他们的机器上编译),但是在其中一个项目中,我收到一个错误消息,内容如下:

Imyinterface在命名空间中是不明确的anamespaceassembly

我试过没有成功:

  • 检查参考文献以查看任何明显错误
  • 删除并重新添加了有问题的程序集
  • 在系统中搜索相同的 dll
  • 试图编译原始 deve 的 src(.v 源代码控制版本)
  • 用 ildasm.exe 检查程序集

我通常在 C# 中编码并且之前没有看到过这个错误(至少在这种形式中),不是因为它是 VB.Net 特定的,而是用于添加/查看引用的 UI 略有不同,所以我认为 VB.Net 可能会做一些不同的事情与参考。

我也尝试在另一台机器上编译,它编译正常。所以我认为它与构建机器有关,但我不确定是什么。项目以某种方式没有引用其他冲突的程序集,这可能吗?

有任何想法吗?

小智 6

如果您有相同参考的两个版本(例如 Microsoft.ReportViewer.Webforms 10.0.0.0 和 Microsoft.ReportViewer.Webforms 8.0.0.0),请检查您的参考,您将收到此错误。删除最旧的,你应该很好。我一直对自己这样做。


Abe*_*bel 2

导致此错误的原因可能有多种。在 VB 中,您应该意识到,在没有类规范的情况下,可以使用比 C# 中习惯的更多名称。另外,在 VB 中大小写并不重要,这可以进一步比喻碰撞的可能性。

即使您没有找到实际的冲突问题,也可以按照与 C# 中相同的方式解决此问题:在语句中重命名它Imports

Imports IM = yourAssembly.Imyinterface
Run Code Online (Sandbox Code Playgroud)

然后更改代码,将 的使用Imyinterface替换为IM

注意:如果错误没有指向特定行,则冲突可能超出您的控制范围。通常,完整的清理解决方案和重建会有很大帮助,但有时,行为不当的文件(即另一个错误)会导致在没有明确来源的情况下首先弹出此错误。尝试将最近的更改回滚到它起作用的地方。

你还说它在另一台机器上工作。您的计算机可能装有不同版本的 MS Visual Studio 或 .NET。检查并比较确切的版本。