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