Насколько я понимаю, подпись строгого имени для сборки использует некоторый хэш содержимого сборки и подписывает его так, что если сборка изменяется после подписания, она больше не должна работать. Однако я только что создал небольшую утилиту для добавления дополнительных ресурсов win32 в приложение после его сборки, и, насколько я могу судить, это не приводит к тому, что сборка со строгим именем со знаком вообще перестает функционировать.
Я создал небольшое тестовое приложение, которое просто выводит имя сборки, строгое имя подписывает его, а затем добавляет к нему дополнительные значки. Ниже приведена программа:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("My name is " + Assembly.GetExecutingAssembly().GetName());
}
}
После того, как я изменил сборку, я все еще могу запустить ее, и она без проблем выводит имя своей сборки с моим токеном открытого ключа:
My name is TestApp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cd4a03be895200fa
Теперь мой вопрос заключается в том, проверяет ли подпись строгого имени только некоторые части сборки, т. Е. Не хэширует ли она ресурсы win32, или я совершенно не понимаю, как работает подпись строгого имени? Если моя сборка была изменена после подписания, не должна ли она перестать работать?