Как поменять публичный токен сборки - PullRequest
3 голосов
/ 08 октября 2010

У меня две сборки. Одна сборка относится к другой. Я проверил манифест первой сборки и обнаружил, что он ссылается на второй с каким-то конкретным ключом токена.

Но я проверил токен второй сборки и обнаружил, что у него другой публичный токен. Так что я как-то пропустил правильную вторую сборку. Итак, я хочу знать, есть ли способ изменить открытый токен второй сборки на тот, который нужен первой сборке.

Также у меня есть еще одна вторая сборка, которая имеет открытый токен = null.

Ответы [ 3 ]

10 голосов
/ 08 октября 2010

Звучит так, будто вы хотите перестроить вторую сборку и подписать ее другим ключом, что было бы легко, если бы у вас был исходный код, поэтому, я думаю, у вас его нет?

Я думаю, что было бы легчеперестройте первую сборку так, чтобы она ссылалась на вторую имеющуюся у вас сборку, используя маркер открытого ключа, присутствующий во второй сборке.Проще, но не совсем просто.

Я думаю, что вы сможете достичь этого, пропустив первую сборку через ildasm.exe, изменив токен открытого ключа в ссылке на вторую сборку, а затем запустите результатдо ilasm.exe, чтобы создать новую версию первой сборки.

Грубый набросок необходимых шагов ...

  1. Выполнить ildasm.exe /out=first.il first.dll (или first.exe)
  2. Отредактируйте first.il и найдите внешний блок .assembly для ссылки на second.dll
  3. Измените маркер открытого ключа в этом блоке
  4. Запустите ilasm.exe first.il, чтобы получить first.dll (или first.exe)

Имейте в виду, я давно не использовал эти инструменты, и никогда не манипулирует публичнымиключевые токены таким образом, так что вам, вероятно, придется добавить немного собственной изобретательности.Но с другой стороны, я не могу придумать причину, по которой такой подход не работает.

6 голосов
/ 08 октября 2010

Вы спрашиваете, "как я могу подделать подпись второй сборки, чтобы заставить первую сборку думать, что она оригинальная".Если у вас нет пары ключей, используемой для подписи «правильной» сборки, вы не сможете.Поэтому лучший подход - попросить поставщика сборок предоставить правильную пару.

0 голосов
/ 23 августа 2012

Исходя из моего личного опыта, вы можете изменить свое приложение .Net framework, чтобы оно соответствовало dll.

...