Возможно, это звучит как глупый вопрос, но я все равно попробую.
Таким образом, в Visual Studio у вас не может быть двух проектов X и Y, таких, что X ссылается на Y, а Y ссылается на X.
В общем, я прекрасно понимаю, насколько проблематичной может быть круговая зависимость по разным причинам.
Но действительно ли невозможно скомпилировать таким образом два взаимозависимых проекта? Мне кажется, что это должно быть возможно, поскольку (на мой взгляд -- может быть, я совершенно ошибаюсь в этом) наличие двух взаимозависимых сборок на самом деле не так отличается от наличия двух взаимозависимых классов — случай, который является допустимым и может компилироваться.
Для меня было бы разумно, если бы вы сказали: «две сборки не могут зависеть друг от друга, потому что компилятор не может скомпилировать одну перед другой»; за исключением того, что кажется, что вы можете сделать один и тот же аргумент для двух классов в одной сборке, и очевидно, что компилятор может отлично справиться с этим сценарием.
По сути, причина, по которой я спрашиваю, не в том, что у меня есть какое-то отчаянное желание сделать это, что, как я знаю, в любом случае является опрометчивым. В частности, мне интересно, потому что было бы неплохо, если бы у меня было два проекта, скажем, MyProjectCS и MyProjectVB, которые существовали бы в основном как две взаимозависимые части одного модуля и были бы отдельными только потому, что некоторые части были написаны на C # и другие части были написаны на VB.NET.
Итак, мой вопрос (yikes, втрое):
- Можно ли включить это поведение (в Visual Studio или где-либо еще, если на то пошло)?
- Если это невозможно в какой-либо IDE, то возможно ли это хотя бы теоретически или взаимозависимые сборки не могут существовать?
- Если это даже теоретически невозможно, то почему? Другими словами, чем взаимозависимые сборки отличаются от взаимозависимого кода внутри одной сборки?