Разобранные и повторно собранные DLL не разрешат взаимные ссылки
Я пытаюсь подписать набор DLL через этот процесс:
ildasm
оригинальная DLL для ILilasm
(и строгое именование) IL обратно в DLL
Каждая из DLL, видимая через обозреватель объектов Visual Studio, является правильной, но если перестроенная DLL ссылается на объект в другой перестроенной DLL (например, расширяет определенный в ней объект), то ссылка не может быть разрешена. Ссылки на системные сборки правильно разрешены.
Может кто-нибудь сказать мне, почему?
Я использую.Net SDK v2 с архитектурой x86.
1 ответ
Основываясь на полезном комментарии Марвина Смита, я попытался отредактировать .il
файлы, созданные ildasm.exe
и нашел решение.
открытие .il
файлы в текстовом редакторе, первые строки файла показывают ссылки на внешние сборки:
.assembly extern MY_EXT_ASSEMBLY
{
.ver 10:0:1:0
}
Я изменил каждый случай этих ссылок на это:
.assembly extern MY_EXT_ASSEMBLY
{
.publickeytoken = (4B DC CA FF 2F A8 6D EE )
.ver 10:0:1:0
}
Где значение .publickeytoken
свойство найдено с помощью следующей команды (форма SDK):
sn -T MY_EXT_ASSEMBLY.dll
Это должно дать результат следующим образом:
Public key token is 4bdccaff2fa86dee.
Я перестроил свое решение VS и все скомпилировал.