Why is GUID attribute needed in the first place?
.net, attributes, com, guid
Solution
If the compiler handled this automatically, you'd end up with one of two situations.
A new GUID every time you compiled - since GUIDs are supposed to be published, this would fail.
Collisions - if the GUID was the same every time, based on (say) a Hash of the name, multiple projects would end up using the same GUID for different purposes.
The existing approach - an explicit GUID gives developers the power to control these as required.
You only actually need to add a GUID attribute in limited cases - the primary one being for COM interop, if you're using .NET to write a COM object for use by another system. Depending on what kind of project you have, this might be an everyday event - or an annual one.
Problem
What is the necessity for the GUID attribute? why don't just let the compiler handle this automatically?!