在DLL后面添加属性';s已经建成
本文关键字:DLL 添加 属性 | 更新日期: 2023-09-27 18:28:15
我有一组已经构建的C#DLL——它们已经完成了在AssemblyInfo.cs中设置版本号的过程,它们已经由我们的配置管理团队正式构建,并且已经归档到它们所属的位置,这样我们就不会丢失构建的DLL。
现在我必须收集这些DLL,并将它们打包成几把伞,这些伞可以有不同的版本。例如:
Collection1 v1.0 Collection1 v1.1 Collection2 v1.0
---------------- ---------------- ----------------
MyDll1.dll v1.0 MyDll1.dll v1.0 MyDll1.dll v1.0
MyDll2.dll v1.1 MyDll2.dll v1.2 MyDll4.dll v1.0
MyDll3.dll v1.2 MyDll3.dll v1.2 MyDll5.dll v1.1
通过查看每个DLL的属性,我已经看到了它的常用字段,包括设置为其相应版本号的文件版本和产品版本。
我想做的是在某个地方捕获集合名称和版本号,以便显示它在打包时属于哪个集合。同样,DLL已经构建好了,所以我现在不能向AssemblyInfo.cs添加任何内容。
理想情况下,这将是显示在DLL的"详细信息"选项卡上的另一个属性,我可以使用某些工具将其注入到DLL中,但我不熟悉任何可以添加/修改这些属性的Windows API调用。
请记住,这是针对这些DLL的内部版本,这样我们就可以在开发过程中跟踪自己安装的内容;那些将被打包并"真正"发布的将是正式建造的原始建筑,不会在其中添加任何属性。
编辑:第三方工具将难以使用;如果它没有随Windows或Visual Studio一起提供,那么如果它是一个可以很快编写的东西,那么它将是强烈的首选。
谢谢。
您可以尝试Microsoft提供的ILMerge工具:http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx
只需创建一个包含所有要合并的自定义程序集级别属性的DLL。然后运行ILMerge,将MyDll.dll指定为主程序集,将具有自定义属性的dll指定为辅助程序集。不要忘记指定/copyattrs标志。
完整的ILMerge文档可在此处找到:http://research.microsoft.com/en-us/people/mbarnett/ilmerge.doc
如果您的输入程序集已签名,您还可以选择提供.snk文件,这样您的输出程序集也将被签名。
另一种选择是使用ILdasm/ILasm工具的组合,这些工具似乎是SDK的一部分。但这需要付出更多的努力,因为您需要在两者之间修改IL代码。