Существуют ли ограничения по размеру для формата сборки .NET?

Мы столкнулись с интересной проблемой, с которой я раньше не сталкивался. У нас есть крупномасштабный производственный проект веб-приложения ASP.NET 3.5 с пакетом обновления 1 (SP1) в Visual Studio 2008 с пакетом обновления 1 (SP1), который компилируется и развертывается с использованием проекта развертывания веб-сайта. В течение прошлого года все работало нормально, пока после вчерашней проверки приложение не начало критически отказывать с _ 1_.

Рассматриваемая регистрация не меняет ничего особенного, и ошибки исходят из областей приложения, которые даже не изменились. Используя Reflector, мы проверили методы, вызывающие нарушение, на предмет наличия в коде строк мусора (какой .NET Рефлектор юмористически интерпретирован как китайские иероглифы). Мы постоянно воспроизводили это на нескольких машинах, поэтому, похоже, это не связано с оборудованием.

Дальнейшая проверка показала, что эти строки мусора не существуют в сборках, используемых в качестве входных данных для aspnet_merge.exe во время развертывания.

aspnet_merge.exe / Свойства выходных сборок проекта веб-развертывания:

  • Объединить все выходы в единую сборку
  • Объедините выходные данные каждой отдельной папки с собственной сборкой
  • Объедините все страницы и управляйте выходными данными в единую сборку
  • Создайте отдельную сборку для каждой страницы и управляйте выводом

В свойствах проекта веб-развертывания, если мы установим для параметров слияния первый вариант («Объединить все выходные данные в одну сборку»), мы столкнемся с проблемой, но все остальные параметры работают отлично!

Мой вопрос: кто-нибудь знает, почему это происходит? Есть ли ограничение на размер возможностей aspnet_merge.exe (итоговая объединенная DLL составляет около 19,3 МБ)? Есть ли другие известные проблемы с объединением вывода WAP?

Я был бы рад, если бы какие-либо гуру формата Assembly / aspnet_merge.exe знали о подобных ограничениях. Мне кажется, что сборка размером 25 МБ, хоть и большая, но не возмутительна.


person mckamey    schedule 22.09.2009    source источник
comment
Можно картинку исправить, или ссылку убрать?   -  person Laurel    schedule 22.04.2016


Ответы (2)


Вы можете попробовать запустить на нем PEVerify и увидеть что вы получаете.

Для меня это звучит как проблема с кодировкой ... но я не уверен, почему это могло произойти. Технически существует ограничение на количество метаданных, которые могут поместиться в таблицы метаданных в сборке, но я сомневаюсь, что это проблема.

Вы можете увидеть размер таблиц метаданных, если откроете exe в Ildasm, вы можете попробовать посмотреть статистику (View-> Statistics) или количество таблиц метаданных, что представляет собой двухэтапный процесс: 1. View-> Metainfo-> Raw: Count, Sizes 2. Нажмите Ctrl + M

person Jason Haley    schedule 27.03.2010
comment
Спасибо за инструменты. Мне придется попробовать их и доложить о том, что он нашел. Когда я использую Reflector, чтобы посмотреть на вызывающий ошибку метод (см. Снимок экрана выше), совершенно ясно, где сборка неправильная. Будет ли PEVerify просто сказать мне где это неверно, или они также смогут сказать почему? - person mckamey; 27.03.2010
comment
Если я правильно помню (прошло некоторое время с тех пор, как я его использовал), да, он будет указывать, какие ошибки он обнаруживает в метаданных. Однако вам может потребоваться открыть его в ildasm, чтобы перевести некоторые вещи, такие как токены, которые будут упомянуты в сообщениях об ошибках. PEVerify также является довольно сырым инструментом - это означает, что он не предназначен для ежедневного разработчика, вам, возможно, придется погуглить некоторые сообщения об ошибках, чтобы узнать, о чем они говорят. - person Jason Haley; 29.03.2010

Не возникает ли исключение BadImageFormatException при попытке запустить код x64 на x86?

person Peter T. LaComb Jr.    schedule 27.03.2010
comment
Это одна из ситуаций, когда это происходит (msdn.microsoft.com/ en-us / library /), но в данном случае это не так. Отдельные сборки работают нормально сами по себе, но не работают после слияния. - person mckamey; 27.03.2010