OutOfMemoryException из aspnet_merge при попытке опубликовать веб-сайт как одну DLL

Я думал, что это будет легко исправить, но после того, как я попробовал несколько решений, которые я нашел в Google (очистка temp для системы, запуск сборки через 64-битный IIS Express и сборка в режиме выпуска вместо отладки), я ' Я все еще получаю следующую ошибку:

Команда, которая выполняется:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\aspnet_merge.exe C:\Users\jmckinnon\AppData\Local\Temp\WebSitePublish\cv_net_2008--650083730\obj\Debug\AspnetCompileMerge\TempBuildDir -o xxxxx -copyattrs C:\Users\jmckinnon\AppData\Local\Temp\WebSitePublish\cv_net_2008--650083730\obj\Debug\AssemblyInfo\AssemblyInfo.dll -a -debug 

Я получаю эту ошибку, запустив публикацию в zip-файле со следующими настройками прекомпиляции: настройки прекомпиляции

Несколько вещей, на которые стоит обратить внимание:

  • Сайт НЕ является веб-приложением!
  • На сайте более 9100 файлов
  • Запуск.Net 4.5
  • Попытка собрать на 64-битной машине Windows 7 Professional с 16 ГБ оперативной памяти
  • Единственная причина, по которой я пытаюсь встроить одну DLL, заключается в том, что мне нужно сделать вывод выходных данных пакета. Я обнаружил, что могу создать версию App_Code, используя файл AssemblyInfo.vb, но единственный способ, которым я могу создать версию всех других DLL (по умолчанию без слияния публикация генерирует DLL для каждой страницы), это добавить директиву версии на каждой странице, которая слишком много, чтобы поддерживать более 1000 страниц.

1 ответ

aspnet_merge - это 32-разрядный процесс, который, похоже, завершается сбоем, когда он приближается к использованию памяти объемом 2 ГБ, что произошло с нашим проектом. Мы исправили это, сделав aspnet_merge.exe большим адресом с помощью editbin.exe (в комплекте с VS2015, но не с VS2017, кажется...).

editbin /LARGEADDRESSAWARE "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\aspnet_merge.exe"

Другие вопросы по тегам