【问题标题】:ILASM does not set FileVersionILASM 未设置 FileVersion
【发布时间】:2012-02-08 11:08:52
【问题描述】:

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

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

代码不起作用

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

【问题讨论】:

    标签: clr ilasm


    【解决方案1】:

    该问题可以通过使用 .res 文件来解决。与 ildasm 和 ilasm 进行往返是不够的。 IL 文件不引用 .res 文件。我不得不手动将它添加到 ilasm 调用中。 res 文件中的数据似乎包含写入 PE 标头的信息,这对我来说没问题。

    最终需要的命令行是

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

    我仍然不知道 res 文件中的确切内容,但我可以将它与我手动创建的任何其他程序集的元数据信息交换,然后根据需要反编译它以替换原始程序集的元数据。

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

    【讨论】:

    • 每个 C/C++ 程序员都会这样做。创建 .res 文件的最简单方法是使用虚拟 C++ 项目。您可以手动或使用 C++ IDE 中的资源编辑器编辑 .rc 文件。 rc.exe SDK 工具将其转换为 .res
    • 谢谢 没想到VS真的可以在二进制编辑器中编辑Version资源。很高兴知道 ilasm 不使用某些神秘的二进制格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    相关资源
    最近更新 更多