Как создать объединяющий проект библиотеки c # в «visual studio 2013», состоящий из других библиотечных проектов

1

Может быть, решение прост, но я не мог найти его так, как хотел.

У меня есть основной проект библиотеки С# со всеми моими приложениями, используя ссылку на этот проект.

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

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

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

* Поэтому я хочу добавить ссылку на эту библиотеку в мою основную * библиотеку и сделать все мои приложения видя код новой библиотеки. Однако идея классная, и я ожидал ее работы, но она не сработала.

Я что-то упускаю? Как еще я могу расширить свою основную библиотеку? Заранее спасибо.

Теги:
namespaces
visual-studio-2013
reference
project

2 ответа

0
Лучший ответ

Я согласен с Бобом Хорном в том, что это не так, как это делается (в целом). Однако у меня есть другое возможное решение. Возможно, если проект еще не слишком велик, то есть его все еще практично это сделать. Я нашел, что это можно сделать на всех, кроме самых больших приложений.

По существу, ваша проблема была решена многими лунами назад древними программистами еще в эпоху каменного века, когда они реализовали идею под названием "N-Tier". Это должно дать вам подсказку, что, поскольку ваш проект сейчас растет, вам необходимо реструктурировать/реорганизовать и переосмыслить его по-новому/старому.

Пример. В большинстве проектов требуется следующее:

  • Уровень базы данных (классы, которые создаются инфраструктурами Entity, или nhibernate, или любое другое)
  • Уровень репозитория (традиционно называемый уровнем доступа к базе данных)
  • Уровень домена (также называемый словом бизнес-логики среди других не очень приятных имен)
  • Уровень тестирования (для тестов на единицу продукции/интеграции)
  • Сервисный уровень (это позволяет всем вашим задним концам находиться в одном месте)
  • UI (это позволяет вашему пользовательскому интерфейсу получить доступ к вашей системе через уровень сервиса)

Обратите внимание, что единственным слоем с множественным числом являются слои пользовательского интерфейса. Это связано с тем, что вы можете написать пользовательский интерфейс консоли, веб-интерфейс пользователя, пользовательский интерфейс для Apple ICoffeeMaker или IWashingMachine или IBoobImplanter или другое новое устройство, которое Apple решит придумать дальше, пользовательский интерфейс для Windows, пользовательский интерфейс для Linux, пользовательский интерфейс для Android, и в основном пользовательский интерфейс для любого устройства, которое вы хотите.

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

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

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

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

  • Вы можете создать шаблон, чтобы сделать его очень быстрым и легким в использовании.
  • Если шаблон правильно, вам нужно только добавить нужные вам слои по мере роста вашей системы.
    • Хотя как только вы это сделаете, вы увидите преимущества и, как правило, начнете все новые проекты одинаково (потому что это проще начать, чем конвертировать в него позже, как вы узнаете).
  • Вы должны учитывать, что любая успешная система всегда начинается небольшая, но неизбежно
    • превращается в более крупную систему,
    • Становится частью более крупных систем,
    • Части снова используются другими системами.

и правильная структура с самого начала помогает этому росту.

Я не знаю, отвечает ли это на ваш вопрос, но когда я получаю свободное время, я буду делать видеоуроки YouTube, объясняющие, как это сделать должным образом.

  • 0
    Спасибо за усилия, это не совсем отвечает моей проблеме, но то, что вы предлагаете, это правильный способ делать проекты, чем я и занимаюсь. Мне будет интересно смотреть ваши видео, когда они будут готовы. Я начал добавлять новые функции, "которые находятся в определении этого слоя", как классы внутри папок. Таким образом, в моем основном проекте другие ссылочные проекты могут сразу увидеть новые интерфейсы и классы и т. Д. Однако все еще есть проблемы, но, что интересно, я просто не могу найти некоторые решения моей проблемы. И мой следующий вопрос - один из них ..
0

Да, тебе что-то не хватает. :) Это не работает. Просто потому, что ваша основная библиотека ссылается на другую библиотеку, не делает эту библиотеку доступной для ваших приложений. Ваши другие приложения должны ссылаться на другие библиотеки.

Поскольку я не могу/не должен добавлять ссылку на этот новый проект ко всем моим проектам.

Зачем? Если ваши приложения должны ссылаться на них, то ссылайтесь на них. Вот как это работает.

  • 0
    Спасибо за ответ ! Это действительно неприятная ситуация, я делал это так, как вы сказали, до сих пор, и я ожидал, наконец, решить эту проблему, как только у меня будет время. Видите, у меня есть много приложений xamarin ios, которые используют основную библиотеку A, и много приложений Windows, которые используют основную библиотеку B Теперь они используют отдельные библиотеки, потому что внутренние окна dll не работают в ios большую часть времени. Но у меня все еще есть много общих * классов файлов внутри библиотек A и B, и они не синхронизированы. Я хотел создать библиотеку C и подпроектировать это внутри A и B ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню