DLL беспорядок в .NET, как разделить одно решение на несколько DLL? - PullRequest
1 голос
/ 27 апреля 2009

У меня большой проект VS.NET с 5-6 проектами, и один из этих проектов - Core DLL.

Теперь, чтобы добавить поддержку некоторых плагинов, я извлек интерфейс, однако для использования некоторых других классов требовался интерфейс, а для Core.dll требовался интерфейс, поэтому мне пришлось разделить их. (Я не могу ссылаться друг на друга)

После этого мой день испортился, потому что даже проведя около 4 часов, я не смог их разлучить! В конце я создал более 20 проектов, и все равно он не работает ( на самом деле даже не близко ). Похоже, я собираюсь закончить с 50 проектами, и мне нужно изменить много кода, чтобы все было правильно.

Я знал, что мой код был сильно связан, и вернулся назад.

Я правильно делаю? Теперь я должен платить свои взносы и страдать из-за моего сильно связанного кода? Или я что-то упустил?

Ответы [ 4 ]

3 голосов
/ 27 апреля 2009

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

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

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

3 голосов
/ 27 апреля 2009

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

1 голос
/ 27 апреля 2009

Рассматривали ли вы использование MEF

0 голосов
/ 27 апреля 2009

Вы уже создали граф зависимостей? Graphviz точка может помочь визуализировать (и объяснить) проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...