vb.net编译错误'abc'在命名空间'xyz'中是不明确的

时间:2010-01-06 23:51:29

标签: vb.net compilation ambiguous

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

命名空间Imyinterface

anamespaceassembly含糊不清。

我尝试过没有成功:

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

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

我也尝试在另一台机器上编译,编译好了。所以我认为它与构建机器有关,但我不确定是什么。项目未引用的其他冲突组件是可能的吗?

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

此错误可能有几个原因。在VB中,您应该知道,在没有类规范的情况下,您可以使用更多来自C#的名称。此外,案例在VB中无关紧要,这可以进一步比较碰撞的机会。

即使您没有找到实际的冲突问题,也可以像在C#中一样解决此问题:在Imports语句中重命名:

Imports IM = yourAssembly.Imyinterface

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

注意:如果错误未指向特定行,则冲突可能无法解决。通常,完整的清理解决方案和重建有很大帮助,但偶尔会出现行为不当的文件(即另一个错误)导致此错误首先弹出而没有明确的来源。尝试将最近的更改回滚到它工作的位置。

你还说它适用于另一台机器。您的计算机可能具有不同版本的MS Visual Studio或.NET。检查并比较确切的版本。

答案 2 :(得分:1)

我遇到了同样的问题。我将我的应用程序从vb6升级到vb.net,当我将构建配置从DEBUG更改为RELEASE时,我得到了AMBIGUOUS错误。 我在解决方案资源管理器中找到了dulicate references文件夹我删除了那些重复的引用和构建成功。我希望它可以帮助别人。

答案 3 :(得分:0)

感谢您的回复!我尝试了每一个,但仍然有问题。

我从原始问题中遗漏的一点信息是VB.net项目是VB6项目的升级。当时我并不认为那是相关的。

在进一步调查之后,构建机器也用于构建VB6项目。所以我在vb6 dll上运行'reg32 / u',这似乎解决了VB.net问题。

由于我没有引用VB6 dll,所以不确定为什么修复它,我猜测与注册表中模糊条目混淆vb.net项目有关。