
Signature
Oliver Sturm
Developer Express Inc.
> The obvious thing is that potential circular dependencies between a set
> of assemblies would complicate the algorithms enormously that need to
[quoted text clipped - 4 lines]
> dependencies, although their code might not be needed. OTOH, the current
> restriction results in a nice and clean dependency hierarchy.
According to Reflector (1), System.dll depends on System.Xml.dll, which
in turn depends on System.dll again. (At least on 1.1.)
Classes in the System.Configuration namespace appear to use classes in
the System.Xml namespace.
Classes in the System.Xml assembly appear to use classes in the
System.CodeDom, System.Collections.Specialized, System.ComponentModel,
System.Diagnostics, System.Net, System.Text and System.Uri namespaces.
(1) http://www.aisto.com/roeder/dotnet/
Oliver Sturm - 27 Oct 2005 09:29 GMT
>According to Reflector (1), System.dll depends on System.Xml.dll, which
>in turn depends on System.dll again. (At least on 1.1.)
[quoted text clipped - 3 lines]
>System.CodeDom, System.Collections.Specialized, System.ComponentModel,
>System.Diagnostics, System.Net, System.Text and System.Uri namespaces.
One important thing: be careful with the terms here. Although namespaces
tend to live completely in single assemblies (I mean, that's how I and
most other people I know usually do it in our own projects), they don't
have to - and in the case of the .NET framework assemblies there are
actually a lot of cases where namespaces overlap assembly borders. So to
say that classes in a given namespace depend on ones in another doesn't
say anything about the assembly structure.
Anyway, you're right about the dependencies in System.dll. I have no idea
why - or even exactly how - Microsoft did that. I don't think there's any
legitimate way to achieve this result and I stand by my opinion that
there's nothing desirable about it.

Signature
Oliver Sturm
Developer Express Inc.
Robert Jordan - 27 Oct 2005 09:35 GMT
>> According to Reflector (1), System.dll depends on System.Xml.dll, which
>> in turn depends on System.dll again. (At least on 1.1.)
[quoted text clipped - 16 lines]
> there's any legitimate way to achieve this result and I stand by my
> opinion that there's nothing desirable about it.
It's done with conditional compiling. The corlib gets first compiled
w/out the XML stuff. After that, System.Xml is compiled as usual.
When System.Xml is ready, the corlib is recompiled, now with
conditionally enabled System.Xml references.
Rob