命名空间类冲突

5
首先,我知道这是因为不好的库所致,但我没有代码来修复它们。
XXX.dll 包含全局命名空间中的 Util 类。Util.dll 有 Util 命名空间。
当我同时包含两个 .dlls 时,我无法使用 Util 命名空间(错误 1 在“..\Util.dll”中的命名空间“Util”与“\XXX.dll”中的类型“Util”冲突)。
由于它们都在全局命名空间中,我不知道别名如何解决此问题。
什么是最好的解决方案?目前我知道我可以创建另一个不包含两个 .dlls 的项目,并包装我需要的类。但这很难做到 ;(
5个回答

11

您应该能够使用extern别名做到这一点 - 它们允许您有效地指定您所指的程序集。Anson Horton为此提供了一个很好的演练


10

是的,有一个解决方案可以解决您的问题。前往引用这两个程序集的项目中的References子文件夹。对于具有全局Util的程序集,请右键单击并按下属性。在Aliases属性中,您应该有global。将其更改为DLL1或其他内容。现在,如果您想在文件中使用全局Util ,请在using语句之前添加以下代码:

extern alias DLL;

现在,您可以像这样使用全局UtilDLL.Util


1

升级DevExpress项目时,也可能出现此错误。

  1. 关闭 Visual Studio
  2. 通过清空以下文件夹来清除 Temporary ASP.NET Files 目录:

    • C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\
    • C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\
    • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\
    • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\
    • C:\Users\[your_user_name]\AppData\Local\Temp\Temporary ASP.NET Files\
    • 重新启动 World Wide Web Publishing 服务 (开始菜单\设置\控制面板\管理工具\服务)。
  3. 清空项目的 BinObj 文件夹,如果需要则部署新的程序集;

  4. 重新构建您的应用程序

1
这不是一个构建错误,而是一个命名冲突,无法通过重新构建来解决。 - watbywbarif
1
@watbywbarif - 我了解你的观点,但有时这个错误是由于未删除旧版本的 .dll 文件引起的。我已经考虑到了这种情况。今天我已经为同样的错误测试了这些步骤。 - Zameer Ansari
1
这是一个问题,我这样做是为了解决类似这样的问题。 - Greg
@Greg 我建议你将此作为建议添加到我所写的答案中,编辑它 - Zameer Ansari

1
你需要使用 "extern alias" 语言特性。请查看 Anson Horton 的 this 博客文章。
(或者只需查看 Jon 的答案。)

0

修复此问题的另一种方法是...在文件夹中的类文件将继承其命名空间。确保您添加的任何文件夹在同一项目的根目录中没有相应的文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接