Предупреждение компилятора CS0436 с общим проектом

У нас есть два решения (C#, VS2015), которые состоят из нескольких проектов. В базовом решении с пространством имен Wpf есть некоторые классы, которые переписаны в разделе "Дополнительно" - "Решение" в пространстве имен Wpf.Advanced, поскольку в более продвинутом решении используются, например, другие типы данных.

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

Теперь мы используем "usings" в сочетании с блоками прекомпилятора #iF#else #endif для объединения двух файлов в один, изменяя типы данных, основанные на проекте (через символ компиляции ADVANCED).

Теперь к проблеме:

Поскольку некоторые из наших примеров проектов должны ссылаться как на Wpf, так и на общий проект, мы получаем упомянутые предупреждения CS0436, потому что некоторые объекты, которые теперь существуют в общем проекте и в пространстве имен Wpf.

Как я могу решить эту проблему? Я имею в виду, что все работает, но никакое предупреждение не лучше, чем любое предупреждение, спасибо!

2 ответа

У меня просто была похожая ситуация. В exe-проекте я ссылался на dll и общий проект. DLL в свою очередь ссылалась на общий проект. Решением было исключить общий проект из exe-проекта. Поскольку на общий проект ссылаются из dll, exe тоже получает их все.
Это может выглядеть тривиально, если у вас нет опыта работы с общими проектами.

Пространство имен NamespaceName1 в NamespaceName2 конфликтует с типом TypeName1 в NamespaceName3

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

Другие вопросы по тегам