Configure your .NET Core project
When trying to deploy on a Windows Service, make sure you already configure your Program.cs accordingly. On the Program.cs add this config,
Configure your Windows Server
Downloading the required packages
Install the required packages before configuration.
Downloading the dotnet SDK
Deployments only need runtime, but if you want to have a more flexible environment that allows you to build and publish dll files rather than only running it you would want to install the latest .NET Core SDK,
here.
Install the Azure Artifacts Credential Provider
If you use private NuGet packages you might want to install Azure Artifacts Credentials. You can find the latest release
here and download the .zip package.
After downloading the zip archive, copy the plugins folder to %USERPROFILE%/.nuget.
Set your environment variables, open User Variable, and create a new entry.
Set the variable name to NUGET_PLUGIN_PATHS and because in this case, we are going to be using the azure credential provider, so set the value to
%USERPROFILE%\.nuget\plugins\netcore\CredentialProvider.Microsoft\CredentialProvider.Microsoft.dll
Then finish the setup by clicking OK on the Environment Variables dialog. Install the Azure Artifacts Credential Provider, full instructions can be seen
here.
Publish your .NET Core application
Pull the project using Git
Get into the directory where you want to put the application.
Get inside the newly formed folder and run the dotnet publish command. Do dotnet publish -r win-x64 -c Release to make a windows installer on publishing.
If an authorization prompt to https://microsoft.com/devicelogin pops up, login using the Microsoft account and enter the code shown in the window.
Otherwise, it should show a successful build like so,
In this case, let’s assume D:\Projects\api.test\bin\Release\netcoreapp3.1\publish\zoom-service.exe is the physical path.
Run your .NET Core Service
Create the Service
First, create a Windows Service using the sc create command and enter the service name, in this case, would be ZoomService, and add the physical path to the BinPath.
An example command would be: sc create ZoomService BinPath=D:\Projects\api.test\bin\Release\netcoreapp3.1\publish\zoom-service.exe
Start the Service
After creating the Windows Service start it by using the sc start command. An example command would be: sc start ZoomService.
Make the Service auto initialize on Startup
Go to the Task Manager, and open the services tab, and right-click on your newly created service
Then click the Open Services option.
Right-click on the newly created service and choose Properties.
Change the Startup type from Manual to Automatic.
Finally, click Apply and then click OK.
Summary
In this tutorial, you have learned how to serve a .NET Core application Windows service. To recap what we have done:
- We have configured our .NET Core project as a Windows service.
- We installed the required dotnet SDKs and the corresponding Azure authentication providers.
- We have deployed the project as a Windows service.
You now have an open playbook to use when you want to deploy .NET Core applications as a service. Hope this tutorial was of help and have a nice day!