# .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: none pr: none pool: name: '1ES-Hosted-DurableTaskFramework' demands: - ImageOverride -equals MMS2022TLS steps: # Install specific .NET sdk required by build or signing tasks - task: UseDotNet@2 displayName: 'Use the .NET Core 2.1 SDK (required for build signing)' inputs: packageType: 'sdk' version: '2.1.x' - task: UseDotNet@2 displayName: 'Install .NET Core 2.2 SDK' inputs: packageType: 'sdk' version: '2.2.x' - task: UseDotNet@2 displayName: 'Install .NET Core 3.1 SDK' inputs: packageType: 'sdk' version: '3.1.x' - task: UseDotNet@2 displayName: 'Install .NET Core 5.0 SDK' inputs: packageType: 'sdk' version: '5.0.x' - task: UseDotNet@2 displayName: 'Install .NET Core 7.0 SDK' inputs: packageType: 'sdk' version: '7.0.x' # Start by restoring all the dependencies. - task: DotNetCoreCLI@2 displayName: 'Restore nuget dependencies' inputs: command: restore verbosityRestore: Minimal projects: 'src/dirs.proj' # Build the filtered solution in release mode, specifying the continuous integration flag. - task: DotNetCoreCLI@2 displayName: 'Build' inputs: command: build arguments: --no-restore -c release -p:GITHUB_RUN_NUMBER=$(Build.BuildId) -p:ContinuousIntegrationBuild=true projects: 'src/dirs.proj' # Manifest Generator Task - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 displayName: 'Manifest Generator ' inputs: BuildDropPath: '$(System.DefaultWorkingDirectory)' # Authenticode sign all the DLLs with the Microsoft certificate. # This appears to be an in-place signing job, which is convenient. - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 displayName: 'ESRP CodeSigning: Authenticode' inputs: ConnectedServiceName: 'ESRP Service' FolderPath: 'src' Pattern: 'DurableTask.*.dll' signConfigType: inlineSignParams inlineOperation: | [ { "KeyCode": "CP-230012", "OperationCode": "SigntoolSign", "Parameters": { "OpusName": "Microsoft", "OpusInfo": "http://www.microsoft.com", "FileDigest": "/fd \"SHA256\"", "PageHash": "/NPH", "TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" }, "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-230012", "OperationCode": "SigntoolVerify", "Parameters": {}, "ToolName": "sign", "ToolVersion": "1.0" } ] # Packaging needs to be a separate step from build. # This will automatically pick up the signed DLLs. - task: DotNetCoreCLI@2 displayName: Generate nuget packages inputs: command: pack verbosityPack: Minimal configuration: Release nobuild: true packDirectory: $(build.artifactStagingDirectory) packagesToPack: 'src/dirs.proj' # Digitally sign all the nuget packages with the Microsoft certificate. # This appears to be an in-place signing job, which is convenient. - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 displayName: 'ESRP CodeSigning: Nupkg' inputs: ConnectedServiceName: 'ESRP Service' FolderPath: $(build.artifactStagingDirectory) Pattern: '*.nupkg' signConfigType: inlineSignParams inlineOperation: | [ { "KeyCode": "CP-401405", "OperationCode": "NuGetSign", "Parameters": {}, "ToolName": "sign", "ToolVersion": "1.0" }, { "KeyCode": "CP-401405", "OperationCode": "NuGetVerify", "Parameters": {}, "ToolName": "sign", "ToolVersion": "1.0" } ] # Make the nuget packages available for download in the ADO portal UI - publish: $(build.artifactStagingDirectory) displayName: 'Publish nuget packages to Artifacts' artifact: PackageOutput