Вам необходимо подписывать сборки, если вы хотите поместить их в GAC .
Если вы подписываете исполняемый файл, то любые библиотеки классов, на которые он ссылается, также должны быть подписаны. Это может быть сложно, если вы используете стороннюю библиотеку (особенно если вам нужно использовать элемент управления ActiveX или аналогичный).
Ричард Граймс написал хороший семинар по безопасности в .NET , в котором есть глава об этом: Мастерская безопасности
Причиной того, что все сборки были подписаны одним и тем же файлом .snk, может быть, если он использовал модульное тестирование с покрытием кода. Чтобы иметь возможность выполнять покрытие кода (по крайней мере, с помощью инструментов, встроенных в тестовую версию Visual Studio 2005) и если сборки подписаны, необходимо указать, какие файлы .snk используются для подписи, но я думаю, что вы можете только укажите один файл .snk для всего решения, поэтому, если вы подписываете различные библиотеки классов разными файлами .snk, вы можете проверять покрытие кода только для одного из них за раз.