200分:如何解决ilasm打包超过2000个资源文件到DLL时出错?
现在有个DLL,需要对DLL里面的几个 JS 文件 GIF 文件进行修改。我用
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ildasm.exe" /out=C:\extfiles\carpaerp.il C:\WeWaySoft\Program\bin\carpaerp.dll
语句对 DLL 进行了解包,成功。具体文件名列表请看:
大家可以看到是不分目录存放的,1500多个资源文件全部存放在一个目录中。
然后我用
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe" /resource="C:\ilsam\carpaerp.res" /dll /output=Carp1.dll "c:\ilsam\carpaerp.il"
语句进行打包,但是提示:
Method Implementations (total): 5
Resolving local member refs: 0 -> 0 defs, 0 refs, 0 unresolved
Error: failed to read expected 177481224 bytes from mgd resource file 'c:\ilsam\
CarpaERP.images.down.png'
但是我查看了目录,该文件的确存在,后来查了一些英文资料,说 ilasm.exe 包含的资源文件不能超过1024个,于是我手动编辑 carpaerp.il 文件,减少
.mresource public CarpaERP.Stat.QueryTypeBuyInput.gspx
{
// Offset: 0x00050868 Length: 0x00000D12
// 警告: 创建了托管资源文件 CarpaERP.Stat.QueryTypeBuyInput.gspx
}
这样的文件,到1024个,再编译打包,果然成功的生成了一个 DLL,但是如果我增加一个,到1025个 .mresource 文件,再执行编译,果然又不通过,而且提示与前面的错误提示一模一样。
另,我用 Reflector FileDisassembler 导出 DLL 中的文件时,它都是按分目录存放文件的。
提问!:如何用ilasm打包超过2000个资源文件到DLL中。
或者
提问!:如何修改 .il 文件,让他能使用分目录存放的资源文件进行编译到 DLL 的工作?
如果能够解决,另外100分在以下链接:
http://topic.csdn.net/u/20101016/21/5390a537-4fb7-4caf-8a42-b7785d69f37c.html?98345