我有一个另一个开发人员创建的VB.Net解决方案,我正在尝试在我们的构建机器上编译它(它在他们的机器上编译)但是在其中一个项目中我得到一个错误,说明了以下内容:
命名空间Imyinterface
中 anamespaceassembly
含糊不清。
我尝试过没有成功:
我通常在C#中编码并且之前没有看到过这个错误(至少在这种形式下),而不是它是VB.Net特定的,但添加/查看引用的UI略有不同所以我想也许VB.Net可能做一些与参考不同的事情。
我也尝试在另一台机器上编译,编译好了。所以我认为它与构建机器有关,但我不确定是什么。项目未引用的其他冲突组件是可能的吗?
有什么想法吗?
答案 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项目有关。