When should a Reference be used and when should a ProjectReference be used
===

I believe i fully understand the difference between the two.

A *Reference* simply points to a certain assembly that is used (whether a full path is specified, or it is looked up in the GAC).

A *ProjectReferences* assumes the referenced project resides in the same VS solution as the referencing project, and uses the project GUID to determine which project should be referenced.

The benefit of having a *ProjectReference* is that Visual Studio can detect the dependencies and rebuild them if necessary (if i reference project A and it's not built, it will be rebuilt). Moreover, the referenced project output will be taken (based on the current active configuration, etc).

This drove us to strive and go for an "All ProjectReference" approach. 

My problem is this leads to solution files where many dependency projects are included. If dependencies themselves have references assemblies, these would be added as ProjectReferences, forcing these to be ever built by the same .sln file, and not be independent.

My question is -- In what case should ProjectReferences be used without any question? and in what case should they be absolutely avoided? (if ever)