pf-AzDotNetBuild.ps1

function Set-AzPipeline_Build_Version {
    Write-AzPipeline_log -message "Changing location to $scriptFolder"
    Set-AzPipeline_Variable -name "step_folder" -value $scriptFolder

    function Install-nbgv {
        # https://github.com/dotnet/Nerdbank.GitVersioning/blob/master/doc/nbgv-cli.md
        nbgv get-version  --help
        nbgv set-version 1.0.5
    }
    
    if (-not (Get-Command nbgv -ErrorAction SilentlyContinue)) {
        dotnet tool install -g nbgv
    }
    
    $step_repositoryUrl =  git remote get-url --push origin
    Set-AzPipeline_Variable -name "step_repositoryUrl" -value $step_repositoryUrl
    $step_version = nbgv get-version -v Version
    Set-AzPipeline_Variable -name "step_version" -value $step_version
    $step_gitHash = git rev-parse HEAD
    Set-AzPipeline_Variable -name "step_gitHash" -value $step_gitHash
    $step_SourceRevisionId = $step_gitHash.Substring(0,10)
    Set-AzPipeline_Variable -name "step_sourceRevisionId" -value $step_SourceRevisionId
    
    Set-AzPipeline_BuildNumber -value ($env:BUILD_BUILDNUMBER + "+" + $step_version)
}

function Invoke-DotNet_Build {
    Get-ChildItem -filter *.nupkg -Recurse | Remove-Item -Verbose

    dotnet build -p:Version=$step_version -p:SourceRevisionId=$step_SourceRevisionId `
        -p:RepositoryUrl=$step_repositoryUrl -p:RepositoryType=git `
        -p:RepositoryBranch=master
    
    dotnet test
}

function Publish-Nuget {
    $toPublish = Get-ChildItem -filter *.nupkg -Recurse

    $nugetApiKey = Get-SecureKey -name "nuget.org-ApiKey"
    
    # Goto https://www.nuget.org/account/apikeys
    # to get a new key
    # Set-SecureKey -name "nuget.org-ApiKey" -secureKey $nugetApiKey

    $toPublish | ForEach-Object { 
        dotnet nuget push $_.FullName -k $nugetApiKey -s https://api.nuget.org/v3/index.json --skip-duplicate
    }
}

function Invoke-Project_Build {
    Set-AzPipeline_Build_Version
    Invoke-DotNet_Build
    Publish-Nuget      
}