Я пытаюсь развернуть веб-приложение ASP.NET для Azure. Это гибридные веб-формы, MVC и WebAPI, и есть TON из файлов aspx/ascx, так что их действительно нужно предварительно скомпилировать, или каждое развертывание покажет сайт вялым на некоторое время.Не удается развернуть предварительно скомпилированный, объединенный webapp в Azure
Я пытаюсь развернуть через интеграцию SCM с GitHub через kudu, с предварительно скомпилированными видами, все они объединены с одной сборкой.
Обратите внимание, что:
- Deploy отлично работает с отключенной прекомпиляцией.
- Deploy прекрасно работает с Visual Studio
- Сборка работает нормально, если я копирую команду msbuild из журнала Azure, заменяю соответствующие пути и запускаю ее локально на моей машине с Windows 8.1.
Я настроил параметры Advanced PreCompile как:
- Не допускать предкомпилированный сайт, чтобы быть udpatable
- Не испускает отладочную информацию
- Объединить все страницы и выходы в одной сборке = AppViews.dll
Вот .deployment файл для Azure
[config]
project = WebSite/WebSite.csproj
SCM_BUILD_ARGS=/p:Configuration=Release;PublishProfile=azure-prod /v:n
Вы заметили, я посылаю многословие /v
к «нормальным» для дополнительной диагностической информации.
Вот информация я к хвосту журнала развертывания:
AspNetPreCompile:
D:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v \ -p D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\Source -c D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\TempBuildDir
GenerateAssemblyInfoFromExistingAssembleInfo:
Creating directory "obj\Release\AssemblyInfo".
D:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /out:obj\Release\AssemblyInfo\AssemblyInfo.dll /target:library Properties\AssemblyInfo.cs
AspNetMerge:
Running aspnet_merge.exe.
D:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\aspnet_merge.exe D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\TempBuildDir -w AppViews.dll -copyattrs obj\Release\AssemblyInfo\AssemblyInfo.dll -a
aspnet_merge : error 1003: The directory 'D:\home\site\repository\WebSite\obj\Release\AspnetCompileMerge\TempBuildDir' does not exist. [D:\home\site\repository\WebSite\WebSite.csproj]
Done Building Project "D:\home\site\repository\WebSite\WebSite.csproj" (Build;pipelinePreDeployCopyAllFilesToOneFolder target(s)) -- FAILED.
Build FAILED.
Похоже работает aspnet_compiler.exe, но не делать то, что он должен, поэтому каталог TempBuildDir (предполагается, для вывода компилятора) не существует во времени для цели AspNetMerge. Сравните это с моей системой, где эта директория действительно существует, содержащую маркер aspx/ascx/etc. файлы, статический контент, файл PrecompiledApp.config и целый беспорядок в каталоге bin.
aspnet_compiler.exe имеет -errorstack
флаг, но это мне не ясно, как я мог бы получить MSBuild, чтобы добавить этот раз с помощью файла .deployment
, или даже если это приложение действительно даже бросает ошибку.
Я мог бы просто развернуть через Visual Studio, но я бы действительно хотел бы воспользоваться интеграцией SCM, чтобы я мог просто нажать на мою ветку prod и отпустить ее. Какие-либо предложения?
aspnet_compiler заменяется заглушкой exe на сайтах Azure. Вы можете указать здесь проблему - https://github.com/projectkudu/kudu - для команды развертывания, чтобы отслеживать ее и определять решение. – Pranav
@Pranav У вас есть документация для того, чтобы быть заглушкой exe? Я загрузил exe из URL-адреса Kudu Services (sitename.scm.azurewebsites.net) и при проверке с помощью dotTrace, похоже, в основном то же самое.Я даже попытался добавить свою локальную копию в мой репозиторий и использовать настраиваемую цель MSBuild, чтобы изменить путь использования моего собственного, но безрезультатно. –