This is still an issue but as a workaround you can use the DotNetCoreInstaller task to switch .netcore sdk version as you go through your steps:
steps:
- task: DotNetCoreInstaller@0
displayName: 'Use .NET Core SDK 2.2.103 For Sonar Cloud'
inputs:
version: '2.2.103'
- script: dotnet --list-sdks
displayName: 'Check dotnet sdks'
- task: SonarCloudPrepare@1
displayName: 'Prepare SonarCloud analysis'
inputs:
SonarCloud: 'SonarCloudConnection'
organization: '$(organization)'
projectKey: '$(projectKey)'
projectName: '$(projectName)'
projectVersion: '$(Build.BuildNumber)'
extraProperties: |
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/TestResults/Coverage/coverage.opencover.xml
- task: DotNetCoreInstaller@0
displayName: 'Use .NET Core SDK $(dotnetSdkVersion) For Project'
inputs:
packageType: sdk
version: '$(dotnetSdkVersion)'
- script: dotnet --list-sdks
displayName: 'Check dotnet sdks'
- task: DotNetCoreCLI@2
displayName: 'Restore Project Dependencies'
inputs:
command: 'restore'
projects: '**/*.csproj'
feedsToUse: 'select'
vstsFeed: 'GUID'
- task: DotNetCoreCLI@2
displayName: 'Build the project - $(buildConfiguration)'
inputs:
command: 'build'
arguments: '--no-restore --configuration $(buildConfiguration)'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
displayName: 'Install ReportGenerator'
inputs:
command: custom
custom: tool
arguments: 'install --global dotnet-reportgenerator-globaltool'
- task: DotNetCoreCLI@2
displayName: 'Run unit tests - $(buildConfiguration)'
inputs:
command: 'test'
arguments: '--no-build --configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)/TestResults/Coverage/'
publishTestResults: true
projects: '**/*.Tests.csproj'
- script: |
reportgenerator -reports:$(Build.SourcesDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:HtmlInline_AzurePipelines
displayName: 'Create code coverage report'
- task: DotNetCoreInstaller@0
displayName: 'Use .NET Core SDK 2.2.103 For Sonar Cloud'
inputs:
version: '2.2.103'
- script: dotnet --list-sdks
displayName: 'Check dotnet sdks'
- task: SonarCloudAnalyze@1
displayName: 'Run SonarCloud code analysis'
- task: SonarCloudPublish@1
displayName: 'Publish SonarCloud quality gate results'
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage report'
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '$(Build.SourcesDirectory)/**/coverage.cobertura.xml'
Another possible solution is to get multiple DotNet Core sdks installed using the scripts provided by Microsoft here: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script