While ago I talked about reasons for signing your executables. Now I will tell something about reasons against it.
In certain situations loading of .NET assemblies may be delayed. While usually this is not visible that much, it is something to keep in mind.
Not having trusted root certificate
If you don’t have one of trusted root certificates (e.g. VeriSign’s) you cannot count on Windows recognizing your signature. You will get same prompt as unsigned applications (on Windows Vista and 7). While your application may be signed, your users will not see that.
What do I do?
I do not sign my assemblies. I did try it for a while, but without proper certificate (expensive one), there is just no reason to do it.
However, I do strong-name my assemblies. This is not exactly same as signing them but it does provide you with integrity check which is only thing that I really need.