Ссылка на общий проект в структуре решения

Я пытаюсь решить проблему со ссылкой на общий проект в нескольких библиотеках классов.

Внутри решения ссылки между проектами:

  • Библиотека классов 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, и все должно быть в порядке (за исключением несовпадения версий).

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