Мы столкнулись с интересной проблемой, с которой я не сталкивался раньше. У нас есть крупномасштабный производственный проект веб-приложения ASP.NET 3.5 с пакетом обновления 1 (SP1) в Visual Studio 2008 с пакетом обновления 1 (SP1), который компилируется и развертывается с использованием проекта развертывания веб-сайта. В прошлом году все работало нормально, пока вчера после регистрации приложение не начало критически работать с BadImageFormatException
.
Рассматриваемая регистрация не меняет ничего особенно особенного, и ошибки происходят из областей приложения, которые даже не изменились. Используя Reflector, мы проверили оскорбительные методы и обнаружили, что в коде были строки мусора (, которые .NET Reflector шутливо интерпретировал как китайские символы ). Мы последовательно воспроизводили это на нескольких машинах, поэтому, похоже, это не связано с аппаратным обеспечением.
Дальнейшая проверка показала, что эти строки мусора не существуют в сборках, используемых в качестве входных данных для aspnet_merge.exe во время развертывания.
aspnet_merge.exe / Вывод проекта веб-развертывания
Свойства сборки:
- Объединить все выходы в одну сборку
- Объединить каждый отдельный вывод папки в свою сборку
- Объединение всех страниц и управляющих выходов в одну сборку
- Создать отдельную сборку для каждой страницы и контрольный вывод
В свойствах проекта веб-развертывания, если мы установили параметры слияния для первого параметра («Объединить все выходные данные в одну сборку»), мы столкнемся с проблемой, но все других параметров работают отлично!
Мой вопрос: Кто-нибудь знает, почему это происходит? Есть ли ограничение по размеру для возможностей aspnet_merge.exe (итоговая объединенная DLL составляет около 19,3 МБ)? Есть ли другие известные проблемы со слиянием выходных данных WAP?
Буду рад, если любой гуру формата Assembly / aspnet_merge.exe узнает о таких ограничениях, как это. Мне кажется, что сборка 25 МБ, хотя и большая, но не возмутительно.