Как настроить мое решение, которое содержит веб-приложение (нормально разворачивается и работает) и консольное приложение (создается локально, не построено на Azure), которое я хочу запускать как веб-задание?
Я добавил событие пост-сборки в проект, который строит Azure WAS, в форме:
dotnet publish "%25DEPLOYMENT_SOURCE%25\MySolutionName\MyWebJobProject\MyWebJobProject.csproj" --output "%25DEPLOYMENT_TEMP%25\app_data\jobs\continuous\mywebjob" --configuration Release
Необходимы %25
-> они декодируются до %
когда csproj XML читается, это означает, что %DEPLOYMENT_SOURCE%
передается в командную строку.Если вы поместите %DEPLOYMENT_SOURCE%
прямо в графический интерфейс событий после сборки в VS, %DE
будет декодирован как 0xDE, независимо от того, какой это символ, и вы увидите ошибки в журнале с символом подстановки �
%DEPLOYMENT_SOURCE%
вероятно D:\home\site\repository
.Файлы, кажется, встраиваются в этот корень, а затем публикуются в виде DLL-файлов во временную папку: %DEPLOYMENT_TEMP%
- это что-то вроде D:\local\temp\abcdef1234
.После того, как библиотеки DLL перемещены сюда в качестве шага публикации, KuduSync.Net.exe запускается и возвращает их обратно - KuduSync.Net.exe по сути является инструментом зеркалирования;он удаляет файлы и каталоги с вашего действующего сайта, которые были развернуты в прошлый раз, но не развернуты в этот раз, и добавляет новые файлы, развернутые в этот раз, которые не были развернуты в прошлый раз.Это не касается файлов, которые не изменились.Таким образом, если ваш сайт создает свои собственные файлы (т.е. не является частью развертывания), они не будут удалены
- Как только ваш проект веб-работы будет опубликован в расположении% DEPLOYMENT_TEMP%, в подпапке
app_data\jobs\continuous\somename
KuduSync синхронизирует его с иерархией файлов живого сайта, и он появится на панели мониторинга веб-заданий
, которая оставляет пару строк о том, как заставить консольное приложение dotnet работать в качестве веб-задания.Простейший маршрут выглядит следующим образом:
- Добавьте файл с именем
run.bat
в свой проект, установите для его действия «Построение» значение Content
и для параметра «Копировать в выходную папку» значение Copy Always
- .Внутри файла поместите
dotnet NameOfYourCoreApp.dll
Сохраните файл с простой кодировкой ASCII, а не UTF8, иначе метка порядка байтов станет частью первой строки команды, и ваше приложение не будет работать
Помните, что веб-задания могут быть триггерами разных типов;отредактируйте слово «непрерывный» соответствующим образом
В настоящее время, когда я проверяю журналы сборки в Azure, похоже, что kudu даже не потрудился собрать csproj
Если csprojЗдание Azure IS не зависит от этого, тогда оно не будет его строить.Это не имеет значения, потому что событие post build в проекте, который строит, строит тот, который не строит.