我们有几个C#项目通过COM Interop使用传统的COM DLL。
为了正确使用COM DLL的某些方法,我们不得不首先将DLL反汇编为IL,修改它,然后重新组装DLL,从而执行手动中间语言(IL)修改。这是一次性过程,即COM DLL不会改变。
以下是对所执行步骤的高级描述:
然后添加生成的DLL作为对各种C#项目的引用。 此DLL没有与之关联的文件版本信息,即使用“文件属性/详细信息”选项卡时。
我们希望能够设置DLL的文件版本。使用外部实用程序或手动方法(从Windows资源管理器/属性/详细信息选项卡)进行的任何尝试都会使DLL失败以前签名的文件版本。
这是我们感兴趣的普通文件版本,与COM / Interop / etc无关。理想情况下,应该在使用ilasm从IL重新组装DLL的过程中设置文件版本。
非常感谢!
答案 0 :(得分:6)
ilasm实用程序有一个 / resource 选项,允许用户指定带有版本信息的资源。
以下是为生成(重新组装)的DLL设置文件版本的新命令示例:
ilasm.exe Interop.filename.il /dll /key=snkey.snk /resource:Interop.filename.res
ilasm.exe的MSDN文档可以在这里找到:
http://msdn.microsoft.com/en-us/library/496e4ekx(v=vs.110).aspx