Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: mckameyОтветов: 2

Мы столкнулись с интересной проблемой, с которой я раньше не сталкивался. У нас есть крупномасштабный производственный проект веб-приложения 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 МБ, хоть и большая, но не возмутительна.

  • Можно картинку исправить, или ссылку убрать? Laurel 22.04.2016

assembliesbadimageformatexceptionilmergeaspnet-merge

Ответы

Ответ 1 · рейтинг 2 · Jason Haley

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

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

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

Ответ 2 · Peter T. LaComb Jr.

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы