Как я могу строго подписать внешнюю DLL, сохранив метаданные ее сборки?

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

Я подписываю эти библиотеки, используя:

"%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\Bin\ildasm.exe" /nobar /all /out=library.il library.dll
"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe" /dll /key=MyKey.snk library.il

Проблема в том, что любые метаданные, такие как номера версий, теряются в подписанной сейчас DLL. Это проблема, потому что теперь некоторые зависимости между библиотеками нарушены. Как мне сохранить номера версий, не прибегая к фактической компиляции исходного кода этих библиотек?

ОБНОВЛЕНИЕ

Это на самом деле конкретная DLL, которая показывает эту проблему, и я обнаружил, что она построена с использованием ILMerge. Возможно, это вызывает проблему. Просто чтобы прояснить: DLL, создаваемая ILMerge, имеет правильные метаданные, только после разборки и повторной сборки метаданные исчезают.

ОБНОВЛЕНИЕ 2

Я открыл DLL в Reflector, и кажется, что по крайней мере номер версии все еще там. Я все время проверял использование диалогового окна свойств файла / вкладки сведений в проводнике Windows. Поэтому я полагаю, что вместо этого отсутствует манифест.

6
задан Sandor Drieënhuizen 17 August 2010 в 06:30
поделиться