我想在已编译的程序集中更改属性(将来我可能能够编译两次源代码,但暂时不能编译...)。 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 )
我的问题:缺少这些东西有什么影响?