Я унаследовал приложение C# .NET, которое нуждалось в незначительных изменениях в некоторых строках имени пути в одной из сборников DLL. К сожалению, у меня нет исходного кода.Подписание сборки DLL с открытым ключом
Я внесла необходимые изменения, используя ILSpy и плагин Reflexil. Когда я сохраняю DLL, мне говорят, что оригинальный файл подписан и что новый файл не будет работать без его подписания. Новый файл теперь «задержка подписана».
Я вижу открытый ключ, токен открытого ключа и хэш-алгоритм с Reflexil.
Я совершенно не знаком с .NET IL. Как я могу использовать информацию открытого ключа, которую я должен подписать исправленную DLL?
У меня есть Visual Studio 2013, поэтому у вас есть доступ к sn.exe, если это помогает.
Если бы вы могли это сделать, весь процесс подписания был бы абсолютно бесполезным. Единственный способ - полностью удалить подпись (которая может распространяться через несколько сборок). Вам понадобится секретный ключ для правильной подписи сборки. – Luaan
@ Luaan Я могу создать закрытый ключ с моей машины. Будет ли это помогать, или это должен быть оригинальный секретный ключ? –
Это зависит от того, что вы пытаетесь сделать. Возможно, было бы прекрасно оставить собрание без подписи. Возможно, было бы хорошо создать свой собственный ключ и подписать с этим. Но в обоих случаях у вас будет другая сборка - любые сборки, которые ссылаются на нее, должны быть перекомпилированы (ну, их ссылки должны будут измениться). Подпись является частью идентичности сборки - вы не хотите, чтобы кто-то дал вам свой собственный mscorlib, который молча заменил бы ваши собственные ссылки на mscorlib, не так ли? – Luaan