У меня есть несколько библиотек, которые я использую в своем проекте, которые не подписаны. Поскольку мое приложение строго подписано, библиотеки тоже должны быть.
Я подписываю эти библиотеки, используя:
"%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. Это проблема, потому что теперь некоторые зависимости между библиотеками нарушены. Как сохранить номера версий, не прибегая к фактической компиляции исходного кода этих библиотек?
UPDATE
На самом деле это конкретная DLL, которая показывает эту проблему, и я обнаружил, что она построена с использованием ILMerge. Возможно, это вызывает проблему. Просто чтобы прояснить: DLL, созданная ILMerge, имеет правильные метаданные, только после разборки и повторной сборки метаданные исчезают.
ОБНОВЛЕНИЕ 2
Я открыл DLL в Reflector, и кажется, что по крайней мере номер версии все еще там. Я все время проверял использование диалогового окна свойств файла / вкладки сведений в проводнике Windows. Поэтому я полагаю, что вместо этого отсутствует манифест.