PrecompileBeforePublish с использованием Msbuild
Мы используем Windows Azure
для размещения нашего приложения на Cloud Service
и используем Powershell
для сборки и упаковки веб-сайта с помощью msbuild
.
При выпуске нашего первого времени ответа очень медленно, поэтому, естественно, нам нужно предварительно скомпилировать приложение.
Есть много документации для Предварительная компиляция с использованием aspnet_compiler, однако я не могу найти официальную документацию по использованию:
msbuild Web.sln /p:PrecompileBeforePublish=true
A Поиск Google, нацеленный на MSDN, не дает мне ничего, в то время как обычно MSDN достаточно тщательно. Все, что я вижу, это полезный пост стека с начала этого года.
Знает ли кто-нибудь о какой-либо официальной документации для PrecompileBeforePublish
? Я смотрю на неправильный источник?
В противном случае, что именно дает нам флаг, это то же самое, что Precompilation for Deployment with an Updatable UI
(ссылка)?
Ответы
Ответ 1
Я думаю, ваша проблема не является предварительной компиляцией, и я вижу, вы хорошо подготовили предварительную компиляцию.
Я думаю, что ваш проект слишком велик (проверьте свой окончательный размер каталога bin). IIS читает каждую dll и отлаживает символы и загружает их в память перед запуском любой строки кода.
Если размер вашего проекта слишком велик, а ваши виртуальные срезы остаются низкими, магнитный диск, низкий барабан, низкий уровень процессора, поэтому в нем нет волшебства.
Рекомендации:
- Попробуйте уменьшить размер выходных данных проекта. (Удаление символов отладки
может быть вариантом).
- Удалить все неиспользуемые ссылки... (Both.net и 3rd Party) (изменить, добавить)
- Настройте конфигурацию среды.
С уважением...
Ответ 2
Прошло много времени с тех пор, как этот вопрос был опубликован, и до сих пор нет хорошего ответа Недавно я хотел изменить способ запуска MSBuild aspnet_compiler.exe, но не нашел документации. Я немного покопался и вот мой опыт.
Прекомпиляция будет происходить только при одновременном использовании DeployOnBuild
и PrecompileBeforePublish
параметров. Другими используемыми параметрами являются EnableUpdateable
и UseFixedNames
.
msbuild Web.sln /p:DeployOnBuild=true /p:PrecompileBeforePublish=true /p:EnableUpdateable=false /p:UseFixedNames=true
Вы можете добиться аналогичного результата, если измените параметры прекомпиляции в Visual Studio. Это можно сделать в Project > Publish > Configure > Settings > File Publish Options > Precompile during publishing > Configure
.
введите описание изображения здесь
Вот как параметры должны отображаться в вашем файле .pubxml:
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>False</EnableUpdateable>
<DebugSymbols>True</DebugSymbols>
<WDPMergeOption>CreateSeparateAssembly</WDPMergeOption>
<UseFixedNames>True</UseFixedNames>
Поскольку документация не найдена, вы можете изменить эти параметры и посмотреть получившийся файл .pubxml, чтобы увидеть, какие дополнительные параметры использовать в командной строке.
Ответ 3
rex решение вашей проблемы заключается в добавлении нового веб-проекта развертывания для вашего сайта, который автоматически предварительно скомпилирует ваш сайт, и проект будет содержать предварительно скомпилированные веб-выходы. Если вы не получите проект веб-развертывания в своем правом порядке, загрузите инструмент для Visual Studio в отношении 32 или 64 бит, который будет добавлен в вашу визуальную студию. Или если вы хотите сделать это через MS Build, вам нужно обратитесь к https://msdn.microsoft.com/en-us/library/ms227972.aspx, или вы также можете обратиться к http://www.asp.net/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/precompiling-your-website-vb
Надеюсь, я каким-то образом помог вам.