Ссылка на общий проект в структуре решения
Я пытаюсь решить проблему со ссылкой на общий проект в нескольких библиотеках классов.
Внутри решения ссылки между проектами:
- Библиотека классов A -> SharedProject
- Библиотека классов B -> SharedProject
- Библиотека классов C -> SharedProject
- Библиотека классов C -> Библиотека классов A
- Библиотека классов C -> Библиотека классов B
В общем проекте у меня есть только один класс с логикой, которым я хочу поделиться, поэтому в каждом проекте библиотеки классов я использую один и тот же класс из общего проекта. Но после сборки я получаю следующую ошибку в библиотеке классов C:
Тип "один и тот же класс" существует как в библиотеке классов A, так и в библиотеке классов B
Есть ли способ сделать эту работу, или я должен заменить общий проект классической библиотекой классов?
1 ответ
"Общий проект" - это эффективный способ совместного использования исходного кода между несколькими проектами без необходимости создания библиотеки DLL (как в библиотеке классов). Вы можете думать об этом как о буквальном копировании и вставке исходного кода SharedProject в библиотеку классов A и библиотеку классов B.
В этот момент должно быть совершенно очевидно, что библиотека классов A и библиотека классов B имеют одинаковые классы, определенные в SharedProject, однако они оба определяют их, а не ссылаются на одни и те же классы.
Ваша первоначальная интуиция верна, правильный способ сделать это - заменить ее библиотекой классов, для чего она и нужна. Затем у вас будет SharedProject.dll, на который ссылаются как A, так и B, а затем C будет ссылаться на A.dll, B.dll и SharedProject.dll, и все должно быть в порядке (за исключением несовпадения версий).