使用iladsm + ilasm生成不同的程序集

时间:2015-05-17 11:22:01

标签: .net-assembly ildasm

我想在已编译的程序集中更改属性(将来我可能能够编译两次源代码,但暂时不能编译...)。 This answer建议我使用ildasm,在文本文件中删除属性,然后使用ilasm重新汇编。博文Signing a Third Party Library With Ildasm and Ilasm为类似问题提出了类似的解决方案。

[edit] 我这样做,使用:

ildasm MyBinaryLib.dll /output=MyBinaryLib.asm /all /caverbal
// no munging for now...
ilasm /nologo /dll MyBinaryLib.asm /resource=MyBinaryLib.res /output=MyBinaryLib2.dll

并且它有效,但似乎生成的程序集缺少一些东西 - 它是4096字节而不是4608.我比较了DLL中的一些文本块,似乎缺少以下内容:

  • AssemblyCultureAttribute - 我原来的assemblyinfo.cs有[assembly: AssemblyCulture("")],我想ildasm会忽略它。
  • AssemblyVersionAttribute - 这很奇怪,因为我确实看到了AssemblyVersion的使用 ILSpy
  • System.Diagnostics, DebuggableAttribute, DebuggingModes - ILSpy确实显示缺少[assembly: Debuggable]属性。 .asm文件还说:

-

  // --- The following custom attribute is added automatically, do not uncomment -------
  //  .custom /*0C00000C:0A00000E*/ instance void [mscorlib/*23000001*/]System.Diagnostics.DebuggableAttribute/*0100000F*/::.ctor(valuetype [mscorlib/*23000001*/]System.Diagnostics.DebuggableAttribute/*0100000F*//DebuggingModes/*01000010*/) /* 0A00000E */
  //           = {int32(263)}
  //    //     = ( 01 00 07 01 00 00 00 00 ) 

我的问题:缺少这些东西有什么影响?

0 个答案:

没有答案