在 .NET 解決方案中,多個項目之間出現相互引用(A 參考 B,B 又參考 A)會導致編譯失敗。本文提供幾種實用的解耦方案。
循環引用本質上是「職責不清」:兩個程序集在編譯時都需要對方的類型定義,形成死鎖。
Common.Interfaces(Class Library)Common.Interfaces,實現具體類依賴抽象優點:徹底打破編譯時循環,符合依賴倒置原則。
若業務耦合極高且短期不會拆分微服務,可直接將 A、B 合併為一個項目,內部用命名空間隔離。最簡暴力,但失去獨立部署能力。
編譯時去除引用,運行時用 Assembly.Load + 反射調用。僅適合插件架構,維護成本高。
解決循環引用不僅是為了編譯通過,更是重新審視模塊劃分的契機。