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
System.AttributeUsageAttribute
to an attribute class.
See
http://msdn.microsoft.com/en-us/library/system.attributeusageattribute.aspx[
^].
Your attribute can only apply to assembly if the attribute
System.AttributeTargets.Assembly
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:
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
—SA