Mam kilka bibliotek, których używam w moim projekcie, które są niepodpisane. Ponieważ moja aplikacja jest mocno podpisana, biblioteki też muszą być.Jak mogę silnie podpisać zewnętrzną bibliotekę DLL, zachowując jednocześnie metadane zespołu?
podpisuję tych bibliotek przy użyciu:
"%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
Problem polega na tym, że wszelkie metadane, takie jak numery wersji, zgubić się w obecnie podpisane DLL. Jest to problem, ponieważ teraz niektóre zależności między bibliotekami są zepsute. Jak zachować numery wersji bez konieczności kompilowania kodu źródłowego tych bibliotek?
UPDATE
To rzeczywiście szczególności DLL, który pokazuje ten problem, a ja dowiedziałem się, że jest zbudowany przy użyciu ILMerge. Być może to powoduje problem. Żeby było jasne: biblioteka DLL, która jest produkowana przez ILMerge, ma odpowiednie metadane, dopiero po demontażu i ponownym zmontowaniu metadane znikają.
UPDATE 2
Otworzyłem DLL w reflektor i wydaje się, że przynajmniej numer wersji jest nadal. Przez cały czas sprawdzałem przy użyciu okna dialogowego właściwości/okna właściwości pliku w Eksploratorze Windows. Więc myślę, że to jest manifest, którego brakuje.
Próbowałem już raz w odizolowanym środowisku i znowu wszystkie metadane znikają. W wygenerowanym pliku IL widzę numer wersji na dole zakresu złożenia, tak jak sugerowałeś. Tymczasem zdałem sobie sprawę, że być może fakt, że ta konkretna biblioteka DLL jest zbudowana przy użyciu ILMerge, powoduje problem. –
Czy sprawdziłeś wyjście ILMerge? Zasadniczo nie mogę sobie wyobrazić, jak ważne jest to, co stało się z zespołem przed, jeśli wersja złożona jest obecna w ildazmie, ilasm powinien go obsłużyć poprawnie. –
Otworzyłem bibliotekę DLL w Reflectorze i wygląda na to, że przynajmniej numer wersji nadal tam jest. Przez cały czas sprawdzałem przy użyciu okna dialogowego właściwości/okna właściwości pliku w Eksploratorze Windows. Więc myślę, że to jest manifest, którego brakuje. To nie powinno mieć żadnego wpływu na wiązanie zespołu, prawda? –