mck*_*mey 6 asp.net ilmerge assemblies aspnet-merge badimageformatexception
我们遇到了一个我以前从未体验过的有趣问题.我们在Visual Studio 2008 SP1中有一个大规模生产的ASP.NET 3.5 SP1 Web App项目,它使用网站部署项目进行编译和部署.去年一切都运行良好,直到昨天办理登机手续后,应用程序开始严重失败BadImageFormatException.
有问题的登记不会改变任何特别特别的错误,错误来自应用程序的区域甚至没有改变.使用Reflector我们检查了有问题的方法,发现代码中有垃圾字符串(.NET Reflector幽默地解释为中文字符).我们一直在几台机器上重现这一点,因此它似乎与硬件无关.
进一步检查显示,在部署期间用作aspnet_merge.exe输入的程序集中不存在这些垃圾字符串.
aspnet_merge.exe/Web部署项目输出程序集属性:
- 将所有输出合并到单个程序集
- 将每个单独的文件夹输出合并到其自己的程序集
- 将所有页面和控制输出合并到单个装配中
- 为每个页面和控件输出创建单独的程序集
在Web部署项目属性中,如果我们将合并选项设置为第一个选项("将所有输出合并到单个程序集"),我们会遇到问题,但所有其他选项都可以正常运行!
我的问题:有谁知道为什么会这样?aspnet_merge.exe的功能是否有大小限制(生成的合并DLL大约为19.3 MB)?合并WAP的输出还有其他已知问题吗?
如果任何汇编格式/ aspnet_merge.exe专家知道任何此类限制,我会很高兴.对我来说就像一个25MB的程序集,虽然很大,但并不令人发指.
您可以尝试在其上运行PEVerify并看看会得到什么。
对我来说,这听起来像是一个编码问题......但我不确定为什么会发生这种情况。从技术上讲,可以放入程序集中元数据表的元数据量是有限制的,但我怀疑这是否是问题所在。
如果您在Ildasm中打开 exe ,您可以看到元数据表的大小,您可以尝试查看统计信息(查看->统计)或元数据表的计数,这是一个 2 步过程: 1. 查看->元信息->原始:计数、尺寸 2. 按 Ctrl+M
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |