Lately I've been working on a few little .NET applications that share some common code. The code has some interfaces introduced to abstract away [I/O](http://en.wikipedia.org/wiki/Input/output) calls for unit testing. 

I wanted the applications to be standalone EXEs with no external dependencies. This seems like the perfect use case for static libraries. Come to think of it third party control vendors could benefit from this model too.

Are there some hidden nasties with static libraries that I've missed?

Is there any reason why the C# designers left them out?

Edit: I'm aware of ILMerge but it doesn't offer the same convenience as static libraries.