0

I have the following tasks in my yaml file in Azure DevOps It publishes my console application and zip it in a file

- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: '**/MyApp.csproj'
    arguments: '-r win-x64 -p:PublishSingleFile=True --self-contained true -o $(Build.ArtifactStagingDirectory)'
  • task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'

I set the project version directly on the project file in Visual Studio when I make any changes. Now I'm trying to get that version when I am publishing the project in AzureDevOps and customise the file name, lets say for a project version 1.2.1 the archived file output of the publish in azure should be MyApp-v1.2.1.zip Currently it only output file as MyApp.zip

Not sure if even my approach towards versioning is correct, so appreciate any input!

user65248
  • 101
  • 1
  • 1

1 Answers1

1

I had a similar need and I did it as below. In my case it is archived and published differently but I think you get the main idea.

    - task: PowerShell@2
      displayName: 'Get version number'
      inputs:
        targetType: 'inline'
        script: |
         $VERSION=([xml](Get-Content **\MyApp.csproj)).Project.PropertyGroup.Version
         Write-Host("##vso[task.setvariable variable=VERSION]$VERSION")
... // heare I archive the built files.

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/MyApp_$(VERSION).zip'
    artifact: 'MyApp_$(VERSION)'
    publishLocation: 'pipeline'

In the first powershell task I get the version number from the project file and set it to a variable called VERSION. I learned it from this https://stackoverflow.com/a/56039297/275940 answer which has done the same for maven project.

In the second task I used the variable to make correct file path.

Ehsan
  • 11
  • 1