Dans le .NET BCL, il existe des références circulaires entre:
System.dll
etSystem.Xml.dll
System.dll
etSystem.Configuration.dll
System.Xml.dll
etSystem.Configuration.dll
Voici une capture d'écran de .NET Reflector qui montre ce que je veux dire:
La façon dont Microsoft a créé ces assemblages est un mystère pour moi. Un processus de compilation spécial est-il nécessaire pour permettre cela? J'imagine que quelque chose d'intéressant se passe ici.