8
votes

I have started with asp.net core 2 web app and I can publish it to App Service from Visual Studio using web deploy.

I've created new clean .net core 2 console app. I'm able to upload it as webjob and run using Azure Portal, but how do I publish it from local command line or Visual Studio?

Basically, I don't care whether it will be published alongside the Web Application or as standalone.

EDIT: I've somehow managed to get the publish dialog by right clicking the project and selecting Publish (not Publish as Azure WebJob) as menioned in the docs. But I still don't know what did the trick. Installing Azure SDK? Adding webjob-publish-settings.json? Adding Setting.job?

3

3 Answers

6
votes

Publish .net core as webjob with Azure portal:

As you know:

A WebJob looks for specific file type, for example (.cmd, .bat, .exe, etc…) To run a .NET Core console application you use the DOTNET command

Therefore, you need to create a file with an extension which is WebJob looking for that executes.

1.You could create a .net core conosole application. After running it, you will have the follow file in your projectname/bin/Debug/netcoreapp2.0

enter image description here 2.Create a run.cmd file under it. And the run.cmd content is as below:

@echo off

dotnet ConsoleApp7.dll

3.To deploy the .NET Core console application to an Azure App Service Web App Web Job access the Azure portal and navigate to the Azure App Service where you will host the WebJob. Click on the WebJobs link and the Add button. enter image description here 4.Upload the netcoreapp2.0.zip

enter image description here

5.Once the WebJob is successfuly uploaded, it will render in the WebJob blade. Click on it and you will see the Run button.

enter image description here 6.When you write output to the console using the WriteLine() method, it will show in the Run Details window on KUDU/SCM.

enter image description here

For more detail, you could refer to this article and this one.

Update:(publish with command line)

1.First, download your publish settings file of your webapp from Azure Portal. enter image description here

2.Prepare the .zip folder you have created.

As David said, you could use WAWSDeploy to publish webjob with command line. You could download WAWSDeploy with this link.

3.Then go to WAWSDeploy/bin/Debug folder to open the local command line. Try the following command to deploy the webjob:

WAWSDeploy.exe DotNetCoreWebJobSample.zip [WEBSITE_NAME].PublishSettings /t app_data\jobs\triggered\DotNetCoreWebJobSample /v

Target directory will be app_data\jobs\triggered\[WEBJOB_NAME]. If this web job is a continuously running one, replace triggered with continuous.

Note:you could put the WAWSDeploy.exe and publish settings file and the .zip into a folder. If not, you should give the full path of publish settings and .zip file. So that you could publish webjob successfully.

For more detail about WAWSDeploy, refer to this article.

3
votes

Make sure your csproj includes correct SDK's:

<Project Sdk="Microsoft.NET.Sdk;Microsoft.NET.Sdk.Publish">

Then just right click on the project in Visual Studio and click publish, select Microsoft Azure App Service and you should see the WebJob publish options: enter image description here

Also notice that you should use Microsoft.NET.Sdk and not Microsoft.NET.Sdk.Web

If you are using Microsoft.NET.Sdk.Web, Visual Studio assumes that you are deploying to WebSite and not WebJob. The publish dialogs are slightly different for WebSite and WebJob. For example, for WebJob project you can specify WebJob Name.

You might be interested in:

0
votes

There is a great articel about Develop and deploy WebJobs using Visual Studio - Azure App Service that covers your question.

Basically after installing the prerequisites (depending on your VS version) you can Right-click the Console Application project in the Solution Explorer, and then click Publish as Azure WebJob.