Конфликт классов пространства имен - PullRequest
4 голосов
/ 04 января 2012

Прежде всего, я знаю, что это из-за плохих библиотек, но у меня нет кода для их исправления.

XXX.dll содержит класс Util в глобальном пространстве имен. Util.dll имеет пространство имен Util.

Когда я включаю оба .dll, я не могу использовать пространство имен Util (Ошибка 1 Пространство имен «Util» в «.. \ Util.dll» конфликтует с типом «Util» в «\ XXX.dll»). 1005 *

Поскольку оба находятся в глобальном пространстве имен, я не вижу, как псевдонимы могут это исправить.

Какое решение лучше для этого? На данный момент я знаю, что могу сделать еще один .proj, который не будет включать в себя как .dlls, так и классы переноса, которые мне нужны. Но это нелегко сделать; (

Ответы [ 5 ]

11 голосов
/ 04 января 2012

Вы должны быть в состоянии использовать для этого внешние псевдонимы - они позволяют эффективно определять ссылку, с которой вы имеете в виду сборку. У Энсона Хортона есть хорошее прохождение .

9 голосов
/ 04 января 2012

Да, есть решение вашей проблемы. Перейдите в подпапку References в своем проекте, ссылаясь на две сборки. Для сборки с глобальным Util щелкните правой кнопкой мыши и нажмите Properties. В свойстве Aliases у вас должно быть global. Измените это, например, на DLL1 или что-то еще. Теперь, если вы хотите использовать глобальный Util в файле, добавьте следующее перед вашими using утверждениями:

extern alias DLL;

Теперь вы можете использовать глобальный Util вот так DLL.Util

1 голос
/ 07 июня 2016

Эта ошибка также может отображаться при обновлении проекта 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. Очистите корзину и Obj папок и развертывание новых сборок, если это необходимо;

  4. Перестройте приложение
1 голос
/ 04 января 2012

Вам нужно будет использовать языковую функцию "extern alias".Проверьте эту запись в блоге Энсона Хортона.

(Или просто посмотрите ответ Джона.)

0 голосов
/ 19 марта 2018

Другой способ исправить это ... файлы классов в папках будут наследовать свое пространство имен от имени папки. Убедитесь, что у всех папок, которые вы добавляете, нет соответствующего имени файла в корне того же проекта.

...