clr - ILASM 不设置 FileVersion

标签 clr ilasm

我有一个 .il 文件,我可以毫无问题地编译它。我可以强命名它,所以没有任何问题。但是我无法像预期的那样通过属性设置文件版本。使用 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 header 的信息,这对我来说没问题。

所需的最终命令行是

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

我仍然不知道 res 文件中究竟是什么,但我可以将它与我手动创建的任何其他组件的元数据信息进行交换,然后反编译它以根据需要替换原始程序集的元数据。

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

关于clr - ILASM 不设置 FileVersion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192145/

相关文章:

c# - 如何加载静态字段?

c# - 为什么我可以将 sbyte 与所有其他数字类型*except* ulong 进行比较?

.NET CLR - 将 CIL 编译为特定于平台的指令时,新的 CPU 体系结构等呢?

.net - 如何让 Nant 使用 4.0 编译器来定位 .Net 3.5

c# - 什么时候在 CLR 中为泛型的不同实例共享代码?

memory-management - WinRT 如何处理 BitmapImage 和 Image 内存

c# - 尾部。 ILAsm中的前缀–使用示例吗?

c# - ilasm 的问题

c# - 使用 .NET 3.5 和 C# 从文件在运行时编译 IL 代码

c# - 即时创建我的程序集的签名副本