it-swarm.com.ru

Командная строка dotnet publish пропускает развертывание в функции Azure.

Я настраиваю некоторые DevOps для своего сайта, и до сих пор я успешно использовал следующую команду для развертывания в двух приложениях ASP.NET Core:

dotnet publish ProjectName.csproj /p:PublishProfile="PublishProfileName" /p:Password=password

Я только что создал функцию Azure, используя среду выполнения V2 и .NET Core 2.1, как предлагается для всех новых проектов (см. Здесь https://Azure.Microsoft.com/en-us/blog/introduction-Azure- functions-2-0/ ), но если я использую ту же команду, я обнаружу, что она публикует ее только в локальной папке и, похоже, не развертывает проект в Azure.

Если я использую эквивалент MSBuild, он также пропускает этап развертывания.

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

Я могу загрузить параметры публикации из Azure, импортировать их в Visual Studio и опубликовать через VS, поэтому кажется, что если путь VS работает, это может быть регрессия или ошибка в инструменте где-то, а не что-то неподдерживаемое?

Я использую: 

  • Visual Studio 15.8.8 +28010.2048
  • Функции Azure и инструменты веб-заданий 15.9.02046.0

Если я не должен использовать dotnet-публикацию с функциями Azure, что я должен использовать вместо этого для CD с командной строкой? Я видел ссылки на инструменты CLI Azure Function, но я бы предпочел не устанавливать менеджер пакетов на наших агентах сборки, если это можно сделать с помощью других инструментов.

3
Andy

В конце, с помощью ответов и комментариев (спасибо всем), у меня есть командная строка MSBuild, которая работает для развертывания моего проекта .NET Core 2.1 Function:

msbuild /p:DeployOnBuild=True /p:PublishProfile=somename.pubxml /p:Configuration=Release

Однако стоит отметить следующее:

Общие примечания публикации .NET Core

  1. Если вы пропустите по буквам имя профиля публикации, он автоматически пропустит развертывание (без предупреждения или ошибки). 

Различия между развертыванием функций ASP.NET Core и .NET Core  

  1. Если вы используете «публикацию dotnet», она всегда будет пропускать развертывание.

  2. Если вы не укажете/p: DeployOnBuild = True, развертывание будет пропущено.

2
Andy

Вместо этого попробуйте использовать Azure CLI: https://docs.Microsoft.com/en-us/cli/Azure/functionapp/deployment?view=Azure-cli-latest

или инструменты ядра функций: https://docs.Microsoft.com/en-us/Azure/azure-functions/functions-run-local#publish

1
Josh

Если вы не хотите, чтобы на ваших агентах сборки был «менеджер пакетов», вы можете сделать Zip развертывание вашего функционального приложения. Подробности можно найти на MSDN здесь:

https://docs.Microsoft.com/en-us/Azure/azure-functions/deployment-Zip-Push#rest

1
Sebastian Achatz