我有一个.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文件中到底有什么内容,但是我可以将其与我手动创建的任何其他assemlby的元数据信息进行交换,然后根据需要对其进行反编译以替换原始程序集的元数据。

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

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

10-12 00:01
查看更多