Я настоятельно рекомендую вам использовать NDepend , который является отличным способом поиска скрытых зависимостей. Этот инструмент поможет вам найти все болевые точки в вашем коде. Рефакторинг, в конечном счете, зависит от вас.
Стандартный способ работы с циклической зависимостью, где A ссылается на B и B ссылается на A, состоит в том, чтобы извлечь элементы, на которые ссылаются как A, так и B, и поместить их в отдельную сборку C, чтобы A ссылалась на C и B ссылается на C, но C не ссылается ни на A, ни на B.
Исходя из прочтения вашей проблемы, я предполагаю, что у вас есть много статических методов или свойств, которые вы используете повсеместно. Избавьтесь от них или перенесите их все в один проект, на который все ссылаются. Я предпочитаю первое; статическое что-либо имеет тенденцию быть сложным для юнит-теста.
ттт. интересно, интересно ... а как насчет "бесплатных" "обходных путей"? :)
У вас есть для рефакторинга, для этого нет «обходного пути». NDepend - это просто инструмент, который поможет вам найти болезненные области; это не сделает работу за вас. К счастью, у него есть бесплатная пробная версия, которую вы можете использовать, чтобы помочь вам с вашей непосредственной проблемой.
Если вы не хотите его использовать, единственным «обходным путем» будет поиск циклической ссылки путем поиска в вашем коде. Одна вещь, которая может помочь вам найти проблемную область, состоит в том, чтобы удалить ссылку на Проект A из Проекта B и посмотреть, какие разрывы, а затем сравнить ее с тем, что ломается, когда вы удалите ссылку на Проект B из Проекта A. Объединение этих списков должен дать вам отправную точку.
Но вам придется реорганизовать ваш код; от этого никуда не деться.