.net – 如何在保留其程序集元数据的同时强烈签署外部DLL?
我在项目中使用了一些未签名的库.因为我的应用程序是强签名的,所以库也必须如此.
我用以下方式签署这些库: "%PROGRAMFILES%Microsoft SDKsWindowsv7.1Binildasm.exe" /nobar /all /out=library.il library.dll "%WINDIR%Microsoft.NETFramework64v4.0.30319ilasm.exe" /dll /key=MyKey.snk library.il 问题是任何元数据(例如版本号)都会在现在签名的DLL中丢失.这是一个问题,因为现在库之间的某些依赖关系被破坏了.如何保留版本号而不需要实际编译这些库的源代码? UPDATE 它实际上是一个显示此问题的特定DLL,我发现它是使用ILMerge构建的.也许这就是问题所在.需要明确的是:ILMerge生成的DLL确实具有正确的元数据,只有在反汇编和重组后,元数据才会消失. 更新2 我在Reflector中打开了DLL,看起来至少版本号仍在那里.我一直在使用Windows资源管理器中的文件属性对话框/详细信息选项卡进行检查.所以我认为这是缺少的清单. 解决方法
我想知道为什么会这样.我同样使用ilasm和ildasm对未签名和签名的程序集进行往返编译有很好的经验.您是否可以验证ILasm输出的元数据是否仍包含版本信息(程序集范围的底部):
.assembly ConsoleApplication1 { //... .hash algorithm 0x00008004 .ver 1:0:0:0 } 再次检查,它“在我的机器上工作”(使用完全相同的命令行开关). 实际上会丢失的是FileVersion属性(当你将鼠标悬停在程序集上时,你在Windows资源管理器中看到的属性.ArchiveVersion属性仍然存在并且正确.你可能会混淆两者吗?只有AssemblyVersion对绑定信息很重要.有关详细信息,请参阅此SO post. 希望我能提供帮助,否则你需要提供更多背景信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows – .NET Core发布错误:“无法找到msdeploy.exe,请
- windows – 进程可以加载两个名称完全相同的DLL吗?
- window dos基本操作命令介绍
- windows-services – Play 2.0 – 在服务器重启后作为Windo
- windows – “预定义的计算机集”,在哪里定义?
- windows – 使用Subversion部署应用程序
- windows-server-2008 – 我是否应该在将域名升级到Server 2
- Windows Mobile – 如何让Windows Mobile设备中心连接到仿真
- 使用DLL有什么优缺点?
- winforms – 返回Object而不是DialogResult的Windows窗体模
- 【干货】Windows内存获取和分析---查找恶意进程,
- windows-server-2008 – 什么原因导致将受信任的
- windows – 如何检查是否使用PowerShell启用了Hy
- win10下python+selenium安装使用方法
- winapi – Win32 rsync端口的技术障碍
- windows-phone-7 – mgwt vs. GWT Mobile – 平台
- WinForm事件中的Object sender和EventArgs e参数
- windows – Html5 Canvas:旋转的文字在Google C
- 如何为Windows安装开源Qt库5二进制版本
- 在IIS 7 w/Windows Server 2008上使用委派设置Ke