ILASM不设置FileVersion

问题描述:

我有一个.il文件,我可以编译没有任何问题。我可以强烈地命名它,所以没有任何问题。但我无法像我期望的那样通过属性设置文件版本。如何在使用ilasm时为组件设置FileVersion?ILASM不设置FileVersion

如果我做了一个往返,我总是得到一个.res文件,它只包含不可读的二进制数据。这个res文件里面有什么,我可以编辑它吗?

代码不起作用

.assembly myAssembly 
{ 
    .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = { string('1.2.3.4') } 

问题可以通过使用res文件来解决。用ildasm和ilasm进行往返旅行是不够的。 IL文件不引用.res文件。我必须手动将它添加到ilasm呼叫。 res文件中的数据似乎包含写入PE标头的信息,这对我来说确实很好。

所需的最终命令行是

ilasm test.il /dll /res:test.res 

我还是不知道究竟是什么RES文件中,但我可以用我手动,然后编译创建任何其他assemlby的元数据信息exhange它它根据需要替换原始组件的元数据。

似乎没有多少人在做这样的事情。

+1

每个C/C++程序员都这样做。创建.res文件的最简单方法是使用虚拟C++项目。您可以手动编辑.rc文件,也可以使用C++ IDE中的资源编辑器。 rc.exe SDK工具将其转换为.res – 2012-02-08 14:10:37

+0

谢谢我没有想到VS实际上可以编辑二进制编辑器中的版本资源。很高兴知道ilasm不使用一些神秘的二进制格式。 – 2012-02-08 20:40:21