Вам потрібно підписати збірки, якщо ви хочете помістити їх у GAC .
Якщо ви підписуєте виконуваний файл, то будь-які бібліотеки класів, на які він посилається, також повинні бути підписані. Це може бути складно, якщо ви використовуєте сторонні бібліотеки (особливо якщо вам потрібно використовувати елемент управління ActiveX або подібне).
Річард Грімс написав хороший семінар з питань безпеки в .NET, який включає в себе розділ про це: Семінар з безпеки
Причиною того, що всі збірки будуть підписані одним і тим же .snk-файлом, може бути, якщо він використовував тестування одиниць із покриттям коду. Щоб мати можливість охопити код (принаймні, за допомогою інструментів, вбудованих у тестувальну версію Visual Studio 2005) та якщо збірки підписані, вам потрібно вказати, які .snk файли використовуються для підписання, але, думаю, ви можете лише вкажіть один .snk-файл для всього рішення, тому якщо ви підписуєте різні бібліотеки класів з різними .snk-файлами, ви можете одночасно перевіряти покриття коду на одному з них.