プロジェクトで使用する署名されていないライブラリがいくつかあります。私のアプリケーションは強力に署名されているため、ライブラリも同様に署名されている必要があります。
以下を使用してこれらのライブラリに署名します。
"%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 を使用してビルドされていることがわかりました。おそらくこれが問題の原因です。明確にするために: ILMerge によって生成された DLL には適切なメタデータがありますが、それを逆アセンブルして再アセンブルした後でのみ、メタデータは消えます。
更新 2
Reflector で DLL を開きましたが、少なくともバージョン番号は残っているようです。Windows エクスプローラーのファイル プロパティ ダイアログ/詳細タブを使用して常に確認していました。したがって、代わりに欠落しているのはマニフェストだと思います。