One thing are do not understand it: the attribute is not attached to the project. It can be attached to the assembly. When you understand it, you won't have a problem with "different project" — is simply does not matter.
You have to isolate two different things: first, accessing of an attribute class declared in one assembly. This is done through referencing of one assembly by another assembly. This way, you can access any public types from the referenced assembly, not matter attribute of not. You can only access public members of those type.
Another, completely different thing is the application, or attachment of the attribute. First of all, each attribute class has a set of targets to be applied to. This is defined by the author of the attribute class by applying a special attribute called
to an attribute class.
Your attribute can only apply to assembly if the attribute
is included at the place of application of the attribute
[AttributeUsage(/* ... */)]
. See http://msdn.microsoft.com/en-us/library/system.attributetargets.aspx
Finally, attachment of the attribute to your assembly needs special syntax
. Maybe, this is what you missed.
You can see the examples on this syntax in your "AssemblyInfo.cs". For example: