In this guide I will explain how to build a service fabric solution using cmd and also Azure DevOps to automate your deployments.
Given that you already have in place your Service Fabric solution, you should edit and add the below Target directive on your .sfproj file inside your visual studio solution.
This is needed in order to create the package that will be deployed on the service fabric cluster.
<Target Name="ForcePackageTarget" AfterTargets="Build" Condition="'$(ForcePackageTarget)' =='true'"> <CallTarget Targets="Package"/> </Target>
That’s all. With this option enabled you can now perform a build using the msbuild tool. You should edit servicefabric.sln to reflect your project name.
msbuild servicefabric.sln /t:Build /p:ForcePackageTarget=true /p:Configuration=Debug /p:Platform=x64
The package output will be located on solution/pkg folder depending on your build configuration specified on the command line (Debug, Release).
In order to automate this procedure, you will have to create your pipeline and place it on your repository.
Three steps are needed in order to build your service fabric solution.
- Firstly you should download the latest .NET version if your project targets .NET 6. If not, then you should select another version.
- Secondly you should restore your Nuget packages on your solution in order to reference any services that come with the application.
- The third step is the actual build using the msbuild task.
The example pipeline is shown below:
trigger: - none pr: none pool: vmImage: windows-latest steps: - task: UseDotNet@2 inputs: packageType: sdk version: '6.0.x' - task: NuGetCommand@2 inputs: command: 'restore' restoreSolution: '**/*.sln' feedsToUse: 'select' - task: MSBuild@1 inputs: solution: '**\*.sln' msbuildArchitecture: 'x64' configuration: 'release' msbuildArguments: '/p:ForcePackageTarget=true' clean: true
In order to get this pipeline working with .NET 6, you should edit Stateless1.csproj and add also LangVersion.
The output of the build will be located on pkg folder.
Finally you could create a release pipeline and upload the artifacts pkg directory on your service fabric cluster.
Microsoft Documentation for service fabric deployments: