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 Надеюсь, я каким-то образом помог вам.