我有一些在我的项目中使用的未签名库。因为我的应用程序是强制签名的,所以这些库也必须被签名。
我使用以下方式对这些库进行签名:
"%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资源管理器的文件属性对话框/详细选项卡进行检查。所以我认为缺少的是清单。