5

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

Imyinterface在命名空间中是模棱两可的anamespaceassembly

我试过没有成功:

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

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

我也尝试在另一台机器上编译,它编译正常。所以我认为这是构建机器的问题,但我不确定是什么。其他冲突的程序集不知何故未被项目引用,这可能吗?

有任何想法吗?

4

4 回答 4

6

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

于 2013-11-19T17:40:05.763 回答
2

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

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

Imports IM = yourAssembly.Imyinterface

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

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

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

于 2010-01-07T00:14:58.507 回答
1

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

于 2014-11-18T06:50:41.383 回答
0

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

我在原始问题中遗漏的一点信息是 VB.net 项目是 VB6 项目的升级。当时我认为这无关紧要。

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

不完全确定为什么会修复它,因为我没有引用 VB6 dll,我猜想与注册表中模糊的条目混淆 vb.net 项目有关。

于 2010-01-08T20:24:29.860 回答