Я пытаюсь понять смысл сборок со строгими именами в .NET. Погуглив об этом, я заметил, что везде говорится, что он гарантирует, что код исходит от меня и не был подделан. Итак, я проверил это. Я создал простую DLL, подписал ее вновь созданным ключом PFX и сослался на нее в своем приложении WPF. И ладно, все работает. Когда я компилирую DLL с другим файлом PFX, я получаю сообщение об ошибке, так что все в порядке.
НО, когда я декомпилирую DLL с помощью ildasm, изменяю ее и перекомпилирую с помощью ilasm, приложение WPF по-прежнему работает без ошибок. Поэтому я подделал DLL со строгим именем и вручную заменил ее на старую, и приложение по-прежнему работает с поддельной DLL. Токен PublicKeyToken такой же. Так в чем же смысл сильного именования? Это не гарантирует, что код не был подделан с тех пор, как я дал ему строгое имя.