Eoghan Murray read my blog on custom attributes and sent the following question:
I am interested in doing the following: Adding an attribute to certain classes, so that, at Compile time, information about them gets written to an xml file. I see that the built in System.ObsoleteAttribute can raise warnings at compile time, so I want to do something similar, except execute a piece of my own code at compile time.
Now that I've spelled it out, it seems impossible!
It is an interesting question. I don't think it is possible to execute the code at compile time. If anyone knows how, please explain.
What you can do is build a custom attribute and mark your classes with it. Then, have a post-build step that executes a program against the compiled assemblies that uses reflection to find the classes marked with your attribute and execute whatever code you want.
For example, you create a custom attribute called DocumentThis. You mark all of your classes with that attribute, then create a small Documentor program that reflects over a .NET assembly and writes the name of each class that has the DocumentThis attribute to a text file. Then your post-build step for the project can call Documentor with the project's output as the target.
That's the best I can think of, let me know how it works.