Как бороться с типом «Foo» в «File1.cs» конфликтует с импортированным типом «Foo» в предупреждении «File2.dll» - PullRequest
2 голосов
/ 21 июня 2011

У меня следующая структура решения: Проект A Проект B (WCF) Проект C (модульное тестирование)

Я создаю прокси из Проекта B. Затем прокси включается в Проект A и Проект C. ПроектC также ссылается на проект A. В результате при компиляции я получаю более тысячи предупреждений типа:

Тип 'Foo' в 'File1.cs' конфликтует с импортированным типом 'Foo'в 'File2.dll'.

Как лучше всего решить эту проблему?Я пытался использовать #PRAGMA IGNORE, но не смог найти номер предупреждения в этом случае.

Спасибо!

Ответы [ 6 ]

2 голосов
/ 21 июня 2011

Лучше всего использовать разные пространства имен.

Итак, ProjectA

namespace Project.Library

ProjectB

namespace Project.Service

ProjectC

namespace Project.Test

Тогда, вы можете использовать псевдоним в своем классе конфликта.

Например, скажем, Project.Library.User и Project.Service.User оба существуют.

Вы хотите получить доступ к пользовательскому классу вашей библиотеки вк вашим услугам, вы можете сделать:

using Library = Project.Library;

namespace Project.Service
{
     public class User
     {
          public int GetUserId()
          {
              Library.User myLibUser = new Library.User();
              return myLibUser.Id;
          }
     }
}
1 голос
/ 12 декабря 2011

У меня была такая же проблема. Я использую VS 2010 Pro. Я проигнорировал это в течение приблизительно 10 часов; не просто ошибка, а ошибки во время выполнения. Тогда БАМ!

Все, что я сделал, это перешел на вкладку Build и щелкнул чистое решение.
Задача решена. Убедитесь, что вы не используете в своих заявлениях об использовании ничего такого, что не нужно удалять.

1 голос
/ 21 июня 2011

Когда вы получаете доступ к своему типу, полностью определите его (вызвав его через пространство имен (s) .class, чтобы не было двусмысленности.

Например:

  • MyNamespace.Foo
  • YourNamespace.Foo

Таким образом, у вас одинаковое имя класса, но в разных пространствах имен.

Если в любом случае вы используете то же пространство имен, что ив импортированном материале (что маловероятно) вам или внешним поставщикам кода придется изменить пространство имен.

0 голосов
/ 16 апреля 2015

Когда вы знаете, что делаете, вы можете подавить предупреждения с помощью Pragma 0246 .

Я нашел код ошибки, запустив сборку, а затем заглянул в окно вывода.Убедитесь, что в выпадающем списке выбрано «build».

0 голосов
/ 07 июля 2014

В свойствах класса измените действие сборки с содержимого на компиляцию

0 голосов
/ 08 июня 2013

Удалить ссылку на ваш скомпилированный файл из Solution \ References:)

...