# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net

trigger:
- master

pool:
  vmImage: 'VS2017-Win2016'

variables:
  solution: 'MailKit.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  majorVersion: 2
  minorVersion: 1
  patchVersion: 3

steps:
- script: git submodule update --init --recursive

- task: NuGetToolInstaller@0
  displayName: 'Install NuGet 4.9.2'
  inputs:
    versionSpec: 4.9.2

- task: NuGetCommand@2
  displayName: 'Restore NuGet Package Dependencies'
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  displayName: 'Build $(solution) for $(buildConfiguration)|$(buildPlatform)'
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- powershell: '.\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -filter:"+[MailKit]* -[UnitTests]* -[submodules]*" -target:"packages\NUnit.Runners.2.6.4\tools\nunit-console.exe" -targetargs:"/framework:net-4.5 /noshadow /domain:single /out:UnitTests\bin\Release\TEST-UnitTests.xml UnitTests\bin\Release\UnitTests.dll" -output:opencover.xml'
  displayName: 'Run Unit Tests'

- task: PublishTestResults@2
  displayName: 'Publish Unit Test Results'

- task: NuGetCommand@2
  displayName: 'Package MailKit'
  inputs:
    command: pack
    packagesToPack: nuget/MailKit.nuspec
    versioningScheme: byBuildNumber
    majorVersion: '$(majorVersion)'
    minorVersion: '$(minorVersion)'
    patchVersion: '$(patchVersion)'

- task: PublishBuildArtifacts@1
  displayName: 'Publish MailKit NuGet package'
  inputs:
    ArtifactName: 'MailKit-$(majorVersion).$(minorVersion).$(patchVersion)'

Set up CI with Azure Pipelines
Set up CI with Azure Pipelines