我想在一个已经编译的程序集中更改一个属性(将来我也许可以两次编译我的源代码,但不能马上编译……)。 这个答案表明我使用ildasm ,修改文本文件中的属性,然后使用ilasm重新组装。 用Ildasm和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很奇怪,因为我确实使用ILSpy看到AssemblyVersion。
  • System.Diagnostics, DebuggableAttribute, DebuggingModes DebuggableAttribute 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 ) 

我的问题:这些东西丢失了有什么作用?

  ask by Jonathan translate from so

本文未有回复,本站智能推荐: