diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 47be5cc9b3c87..9ee584e737d69 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -4,67 +4,67 @@
https://github.com/dotnet/standard
cfe95a23647c7de1fe1a349343115bd7720d6949
-
+
https://github.com/dotnet/icu
- 0b965227ab9c360bdd700c101c0d771846a1ca0a
+ 79fe4952def79fbf76a07a8ee7c0a43798ab5699
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
-
+
https://github.com/dotnet/arcade
- ee39cd1573dbb8011f343e1037af51d4fc00a747
+ d3cea00bba6539c68436ac9b3d9665318d76b47d
https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
@@ -126,37 +126,37 @@
https://github.com/dotnet/runtime-assets
ed9af8227ff01d9ab010cab1f32f0f362b81cb1f
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
-
+
https://github.com/dotnet/llvm-project
- 98467d795ced4b00d9cb890b9fabeb52fe373798
+ 57e96f31cf9115bd0ae2f5318338984abd2bbd88
https://github.com/dotnet/runtime
@@ -186,17 +186,17 @@
https://github.com/dotnet/runtime
38017c3935de95d0335bac04f4901ddfc2718656
-
+
https://github.com/mono/linker
- 24c3616ee88623bea1e068605eba15009a8a3043
+ 388d3905692d220e758f2f76987bf41aa8a8bb85
-
+
https://github.com/dotnet/xharness
- 8961af0d9f363a4023bc180eea7619f773e0d6e2
+ 653143a33490a41e52d366669515dc8bb158db8b
-
+
https://github.com/dotnet/xharness
- 8961af0d9f363a4023bc180eea7619f773e0d6e2
+ 653143a33490a41e52d366669515dc8bb158db8b
diff --git a/eng/Versions.props b/eng/Versions.props
index 1a3373ee672e6..fba8cc2613e0e 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -50,19 +50,19 @@
-
- 6.0.0-preview1.20513.4
+ 6.0.0-preview1.20513.4
3.8.0-4.20503.2
- 5.0.0-beta.20506.7
- 5.0.0-beta.20506.7
- 5.0.0-beta.20506.7
- 5.0.0-beta.20506.7
- 5.0.0-beta.20506.7
- 5.0.0-beta.20506.7
- 2.5.1-beta.20506.7
- 5.0.0-beta.20506.7
- 5.0.0-beta.20506.7
- 5.0.0-beta.20506.7
+
+ 6.0.0-beta.20514.1
+ 6.0.0-beta.20514.1
+ 6.0.0-beta.20514.1
+ 6.0.0-beta.20514.1
+ 6.0.0-beta.20514.1
+ 6.0.0-beta.20514.1
+ 2.5.1-beta.20514.1
+ 6.0.0-beta.20514.1
+ 6.0.0-beta.20514.1
+ 6.0.0-beta.20514.1
5.0.0-rc.1.20451.14
6.0.0-alpha.1.20501.4
@@ -71,7 +71,7 @@
5.0.0-preview.8.20359.4
- 1.2.0-beta.205
+ 1.2.0-beta.205
4.5.1
4.3.0
4.3.0
@@ -137,8 +137,8 @@
4.9.4
16.8.0-release-20201009-01
- 1.0.0-prerelease.20512.5
- 1.0.0-prerelease.20512.5
+ 1.0.0-prerelease.20516.1
+ 1.0.0-prerelease.20516.1
2.4.1
2.4.2
1.3.0
@@ -149,18 +149,18 @@
5.0.0-preview-20201009.2
- 6.0.0-alpha.1.20512.2
+ 6.0.0-alpha.1.20516.1
- 6.0.0-alpha.1.20506.2
+ 6.0.0-alpha.1.20512.1
- 9.0.1-alpha.1.20506.1
- 9.0.1-alpha.1.20506.1
- 9.0.1-alpha.1.20506.1
- 9.0.1-alpha.1.20506.1
- 9.0.1-alpha.1.20506.1
- 9.0.1-alpha.1.20506.1
- 9.0.1-alpha.1.20506.1
- 9.0.1-alpha.1.20506.1
+ 9.0.1-alpha.1.20512.1
+ 9.0.1-alpha.1.20512.1
+ 9.0.1-alpha.1.20512.1
+ 9.0.1-alpha.1.20512.1
+ 9.0.1-alpha.1.20512.1
+ 9.0.1-alpha.1.20512.1
+ 9.0.1-alpha.1.20512.1
+ 9.0.1-alpha.1.20512.1
diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1
index c7e7ae67d819d..1728b742b3b7b 100644
--- a/eng/common/post-build/sourcelink-validation.ps1
+++ b/eng/common/post-build/sourcelink-validation.ps1
@@ -161,9 +161,12 @@ $ValidatePackage = {
function CheckJobResult(
$result,
$packagePath,
- [ref]$ValidationFailures) {
- if ($jobResult.result -ne '0') {
- Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links."
+ [ref]$ValidationFailures,
+ [switch]$logErrors) {
+ if ($result -ne '0') {
+ if ($logError) {
+ Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links."
+ }
$ValidationFailures.Value++
}
}
@@ -228,16 +231,14 @@ function ValidateSourceLinkLinks {
foreach ($Job in @(Get-Job -State 'Completed')) {
$jobResult = Wait-Job -Id $Job.Id | Receive-Job
- CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures)
+ CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors
Remove-Job -Id $Job.Id
}
}
foreach ($Job in @(Get-Job)) {
$jobResult = Wait-Job -Id $Job.Id | Receive-Job
- if ($jobResult -ne '0') {
- $ValidationFailures++
- }
+ CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures)
Remove-Job -Id $Job.Id
}
if ($ValidationFailures -gt 0) {
diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml
index 0854e489615a5..761fb1a29c358 100644
--- a/eng/common/templates/post-build/post-build.yml
+++ b/eng/common/templates/post-build/post-build.yml
@@ -67,176 +67,180 @@ parameters:
VSMasterChannelId: 1012
stages:
-- stage: Validate
- dependsOn: ${{ parameters.validateDependsOn }}
- displayName: Validate Build Assets
- variables:
- - template: common-variables.yml
- jobs:
- - template: setup-maestro-vars.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+- ${{ if or(and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')), eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
+ - stage: Validate
+ dependsOn: ${{ parameters.validateDependsOn }}
+ displayName: Validate Build Assets
+ variables:
+ - template: common-variables.yml
+ jobs:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
+ - ${{ if and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')) }}:
+ - job:
+ displayName: Post-build Checks
+ dependsOn: setupMaestroVars
+ variables:
+ - name: TargetChannels
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'] ]
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: PowerShell@2
+ displayName: Maestro Channels Consistency
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/check-channel-consistency.ps1
+ arguments: -PromoteToChannels "$(TargetChannels)"
+ -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetDev5ChannelId}},${{parameters.NetDev6ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.Net5Preview8ChannelId}},${{parameters.Net5RC1ChannelId}},${{parameters.Net5RC2ChannelId}},${{parameters.NetCoreSDK313xxChannelId}},${{parameters.NetCoreSDK313xxInternalChannelId}},${{parameters.NetCoreSDK314xxChannelId}},${{parameters.NetCoreSDK314xxInternalChannelId}},${{parameters.VS166ChannelId}},${{parameters.VS167ChannelId}},${{parameters.VS168ChannelId}},${{parameters.VSMasterChannelId}}
- - ${{ if and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')) }}:
- job:
- displayName: Post-build Checks
+ displayName: NuGet Validation
dependsOn: setupMaestroVars
- variables:
- - name: TargetChannels
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'] ]
+ condition: eq( ${{ parameters.enableNugetValidation }}, 'true')
pool:
vmImage: 'windows-2019'
+ variables:
+ - name: AzDOProjectName
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
+ - name: AzDOPipelineId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
+ - name: AzDOBuildId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: PackageArtifacts
+
- task: PowerShell@2
- displayName: Maestro Channels Consistency
+ displayName: Validate
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/check-channel-consistency.ps1
- arguments: -PromoteToChannels "$(TargetChannels)"
- -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetDev5ChannelId}},${{parameters.NetDev6ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.Net5Preview8ChannelId}},${{parameters.Net5RC1ChannelId}},${{parameters.Net5RC2ChannelId}},${{parameters.NetCoreSDK313xxChannelId}},${{parameters.NetCoreSDK313xxInternalChannelId}},${{parameters.NetCoreSDK314xxChannelId}},${{parameters.NetCoreSDK314xxInternalChannelId}},${{parameters.VS166ChannelId}},${{parameters.VS167ChannelId}},${{parameters.VS168ChannelId}},${{parameters.VSMasterChannelId}}
-
- - job:
- displayName: NuGet Validation
- dependsOn: setupMaestroVars
- condition: eq( ${{ parameters.enableNugetValidation }}, 'true')
- pool:
- vmImage: 'windows-2019'
- variables:
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
- steps:
- - task: DownloadBuildArtifacts@0
- displayName: Download Package Artifacts
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- artifactName: PackageArtifacts
-
- - task: PowerShell@2
- displayName: Validate
- inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
- arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
- -ToolDestinationPath $(Agent.BuildDirectory)/Extract/
-
- - job:
- displayName: Signing Validation
- dependsOn: setupMaestroVars
- condition: eq( ${{ parameters.enableSigningValidation }}, 'true')
- variables:
- - template: common-variables.yml
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
- pool:
- vmImage: 'windows-2019'
- steps:
- - ${{ if eq(parameters.useBuildManifest, true) }}:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
+ arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
+ -ToolDestinationPath $(Agent.BuildDirectory)/Extract/
+
+ - job:
+ displayName: Signing Validation
+ dependsOn: setupMaestroVars
+ condition: eq( ${{ parameters.enableSigningValidation }}, 'true')
+ variables:
+ - template: common-variables.yml
+ - name: AzDOProjectName
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
+ - name: AzDOPipelineId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
+ - name: AzDOBuildId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - ${{ if eq(parameters.useBuildManifest, true) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download build manifest
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: BuildManifests
- task: DownloadBuildArtifacts@0
- displayName: Download build manifest
+ displayName: Download Package Artifacts
inputs:
buildType: specific
buildVersionToDownload: specific
project: $(AzDOProjectName)
pipeline: $(AzDOPipelineId)
buildId: $(AzDOBuildId)
- artifactName: BuildManifests
- - task: DownloadBuildArtifacts@0
- displayName: Download Package Artifacts
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- artifactName: PackageArtifacts
-
- # This is necessary whenever we want to publish/restore to an AzDO private feed
- # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
- # otherwise it'll complain about accessing a private feed.
- - task: NuGetAuthenticate@0
- displayName: 'Authenticate to AzDO Feeds'
-
- - task: PowerShell@2
- displayName: Enable cross-org publishing
- inputs:
- filePath: eng\common\enable-cross-org-publishing.ps1
- arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
-
- # Signing validation will optionally work with the buildmanifest file which is downloaded from
- # Azure DevOps above.
- - task: PowerShell@2
- displayName: Validate
- inputs:
- filePath: eng\common\sdk-task.ps1
- arguments: -task SigningValidation -restore -msbuildEngine vs
- /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
- /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
- ${{ parameters.signingValidationAdditionalParameters }}
-
- - template: ../steps/publish-logs.yml
- parameters:
- StageLabel: 'Validation'
- JobLabel: 'Signing'
-
- - job:
- displayName: SourceLink Validation
- dependsOn: setupMaestroVars
- condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true')
- variables:
- - template: common-variables.yml
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
- pool:
- vmImage: 'windows-2019'
- steps:
- - task: DownloadBuildArtifacts@0
- displayName: Download Blob Artifacts
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- artifactName: BlobArtifacts
-
- - task: PowerShell@2
- displayName: Validate
- inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
- arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
- -ExtractPath $(Agent.BuildDirectory)/Extract/
- -GHRepoName $(Build.Repository.Name)
- -GHCommit $(Build.SourceVersion)
- -SourcelinkCliVersion $(SourceLinkCLIVersion)
- continueOnError: true
-
- - template: /eng/common/templates/job/execute-sdl.yml
- parameters:
- enable: ${{ parameters.SDLValidationParameters.enable }}
+ artifactName: PackageArtifacts
+
+ # This is necessary whenever we want to publish/restore to an AzDO private feed
+ # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
+ # otherwise it'll complain about accessing a private feed.
+ - task: NuGetAuthenticate@0
+ displayName: 'Authenticate to AzDO Feeds'
+
+ - task: PowerShell@2
+ displayName: Enable cross-org publishing
+ inputs:
+ filePath: eng\common\enable-cross-org-publishing.ps1
+ arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
+
+ # Signing validation will optionally work with the buildmanifest file which is downloaded from
+ # Azure DevOps above.
+ - task: PowerShell@2
+ displayName: Validate
+ inputs:
+ filePath: eng\common\sdk-task.ps1
+ arguments: -task SigningValidation -restore -msbuildEngine vs
+ /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
+ /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
+ ${{ parameters.signingValidationAdditionalParameters }}
+
+ - template: ../steps/publish-logs.yml
+ parameters:
+ StageLabel: 'Validation'
+ JobLabel: 'Signing'
+
+ - job:
+ displayName: SourceLink Validation
dependsOn: setupMaestroVars
- additionalParameters: ${{ parameters.SDLValidationParameters.params }}
- continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }}
- artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }}
- downloadArtifacts: ${{ parameters.SDLValidationParameters.downloadArtifacts }}
+ condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true')
+ variables:
+ - template: common-variables.yml
+ - name: AzDOProjectName
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
+ - name: AzDOPipelineId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
+ - name: AzDOBuildId
+ value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Blob Artifacts
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: BlobArtifacts
+
+ - task: PowerShell@2
+ displayName: Validate
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
+ arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
+ -ExtractPath $(Agent.BuildDirectory)/Extract/
+ -GHRepoName $(Build.Repository.Name)
+ -GHCommit $(Build.SourceVersion)
+ -SourcelinkCliVersion $(SourceLinkCLIVersion)
+ continueOnError: true
+
+ - template: /eng/common/templates/job/execute-sdl.yml
+ parameters:
+ enable: ${{ parameters.SDLValidationParameters.enable }}
+ dependsOn: setupMaestroVars
+ additionalParameters: ${{ parameters.SDLValidationParameters.params }}
+ continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }}
+ artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }}
+ downloadArtifacts: ${{ parameters.SDLValidationParameters.downloadArtifacts }}
- ${{ if or(ge(parameters.publishingInfraVersion, 3), eq(parameters.inline, 'false')) }}:
- stage: publish_using_darc
- dependsOn: Validate
+ ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
+ dependsOn: Validate
+ ${{ if and(ne(parameters.enableNugetValidation, 'true'), ne(parameters.enableSigningValidation, 'true'), ne(parameters.enableSourceLinkValidation, 'true'), ne(parameters.SDLValidationParameters.enable, 'true')) }}:
+ dependsOn: ${{ parameters.validateDependsOn }}
displayName: Publish using Darc
variables:
- template: common-variables.yml
diff --git a/global.json b/global.json
index 6692397bbcc8f..75c15a7544e1f 100644
--- a/global.json
+++ b/global.json
@@ -5,17 +5,17 @@
"rollForward": "major"
},
"tools": {
- "dotnet": "5.0.100-rc.1.20454.5"
+ "dotnet": "5.0.100-rc.2.20479.15"
},
"native-tools": {
"cmake": "3.14.5",
"python3": "3.7.1"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.20508.4",
- "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20506.7",
- "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "5.0.0-beta.20506.7",
- "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20506.7",
+ "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.20514.1",
+ "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.20514.1",
+ "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "6.0.0-beta.20514.1",
+ "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.20514.1",
"Microsoft.FIX-85B6-MERGE-9C38-CONFLICT": "1.0.0",
"Microsoft.NET.Sdk.IL": "5.0.0-preview.8.20359.4",
"Microsoft.Build.NoTargets": "2.0.1",
diff --git a/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il b/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il
index bd391367f5233..9eac36900a799 100644
--- a/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il
+++ b/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il
@@ -7,7 +7,7 @@
.assembly InvalidCSharp { }
.class public auto ansi beforefieldinit InvalidCSharp.GenericClass`1
- extends System.Object
+ extends [System.Runtime]System.Object
{
.method public hidebysig static
void CallbackMethod (
@@ -73,3 +73,93 @@
IL_0006: ret
}
}
+
+.class public auto ansi beforefieldinit InvalidCSharp.CallingUnmanagedCallersOnlyDirectly
+ extends [System.Runtime]System.Object
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor () cil managed
+ {
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [System.Runtime]System.Object::.ctor()
+ IL_0006: ret
+ }
+
+ .method public hidebysig static
+ int32 ManagedDoubleCallback (
+ int32 n
+ ) cil managed
+ {
+ .custom instance void [System.Runtime.InteropServices]System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute::.ctor() = (
+ 01 00 00 00
+ )
+ .maxstack 1
+ .locals init (
+ [0] int32
+ )
+
+ IL_0000: nop
+ IL_0001: ldarg.0
+ IL_0002: call int32 InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::DoubleImpl(int32)
+ IL_0007: stloc.0
+ IL_0008: br.s IL_000a
+
+ IL_000a: ldloc.0
+ IL_000b: ret
+ }
+
+ .method private hidebysig static
+ int32 DoubleImpl (
+ int32 n
+ ) cil managed
+ {
+ .maxstack 2
+ .locals init (
+ [0] int32
+ )
+
+ IL_0000: nop
+ IL_0001: ldc.i4.2
+ IL_0002: ldarg.0
+ IL_0003: mul
+ IL_0004: stloc.0
+ IL_0005: br.s IL_0007
+
+ IL_0007: ldloc.0
+ IL_0008: ret
+ }
+
+ .method public hidebysig static
+ class [System.Runtime]System.Func`2 GetDoubleDelegate () cil managed
+ {
+ .maxstack 8
+
+ IL_0000: ldnull
+ IL_0001: ldftn int32 InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::ManagedDoubleCallback(int32)
+ IL_0007: newobj instance void class [System.Runtime]System.Func`2::.ctor(object, native int)
+ IL_000c: ret
+ }
+
+ .method public hidebysig static pinvokeimpl("UnmanagedCallersOnlyDll" as "DoesntExist" winapi)
+ int32 PInvokeMarkedWithUnmanagedCallersOnly (
+ int32 n
+ ) cil managed preservesig
+ {
+ .custom instance void [System.Runtime.InteropServices]System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute::.ctor() = (
+ 01 00 00 00
+ )
+ }
+
+ .method public hidebysig static
+ int32 CallPInvokeMarkedWithUnmanagedCallersOnly (
+ int32 n
+ ) cil managed
+ {
+ .maxstack 1
+
+ ldarg.0
+ call int32 InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::PInvokeMarkedWithUnmanagedCallersOnly(int32)
+ ret
+ }
+}
\ No newline at end of file
diff --git a/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs b/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs
index 0a2b5307da315..1ebe513e4566c 100644
--- a/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs
+++ b/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs
@@ -29,10 +29,6 @@ public static class UnmanagedCallersOnlyDll
[DllImport(nameof(UnmanagedCallersOnlyDll))]
// Returns -1 if exception was throw and caught.
public static extern int CallManagedProcCatchException(IntPtr callbackProc, int n);
-
- [UnmanagedCallersOnly]
- [DllImport(nameof(UnmanagedCallersOnlyDll), EntryPoint = "DoesntExist")]
- public static extern int PInvokeMarkedWithUnmanagedCallersOnly(int n);
}
private const string InvalidCSharpAssemblyName = "InvalidCSharp";
@@ -49,6 +45,12 @@ public static Type GetGenericClassOfIntType()
return asm.GetType("InvalidCSharp.GenericClass`1").MakeGenericType(typeof(int));
}
+ public static Type GetCallingUnmanagedCallersOnlyDirectlyType()
+ {
+ var asm = Assembly.Load(InvalidCSharpAssemblyName);
+ return asm.GetType("InvalidCSharp.CallingUnmanagedCallersOnlyDirectly");
+ }
+
private delegate int IntNativeMethodInvoker();
private delegate void NativeMethodInvoker();
@@ -347,7 +349,7 @@ public static void NegativeTest_ViaDelegate()
// Local function to delay exception thrown during JIT
void CallAsDelegate()
{
- Func invoker = ManagedDoubleCallback;
+ Func invoker = (Func)GetCallingUnmanagedCallersOnlyDirectlyType().GetMethod("GetDoubleDelegate").Invoke(null, BindingFlags.DoNotWrapExceptions, null, null, null);
invoker(0);
}
}
@@ -716,10 +718,11 @@ public static void TestPInvokeMarkedWithUnmanagedCallersOnly()
Console.WriteLine($"Running {nameof(TestPInvokeMarkedWithUnmanagedCallersOnly)}...");
// Call P/Invoke directly
- Assert.Throws(() => UnmanagedCallersOnlyDll.PInvokeMarkedWithUnmanagedCallersOnly(0));
+ var pInvokeWrapperMethod = GetCallingUnmanagedCallersOnlyDirectlyType().GetMethod("CallPInvokeMarkedWithUnmanagedCallersOnly");
+ Assert.Throws(() => pInvokeWrapperMethod.Invoke(null, BindingFlags.DoNotWrapExceptions, null, new[] { (object)0 }, null));
// Call P/Invoke via reflection
- var method = typeof(UnmanagedCallersOnlyDll).GetMethod(nameof(UnmanagedCallersOnlyDll.PInvokeMarkedWithUnmanagedCallersOnly));
+ var method = GetCallingUnmanagedCallersOnlyDirectlyType().GetMethod("PInvokeMarkedWithUnmanagedCallersOnly");
Assert.Throws(() => method.Invoke(null, BindingFlags.DoNotWrapExceptions, null, new[] { (object)0 }, null));
// Call P/Invoke as a function pointer
@@ -728,7 +731,7 @@ void TestPInvokeMarkedWithUnmanagedCallersOnly_Throws()
{
.locals init (native int V_0)
IL_0000: nop
- IL_0001: ldftn int UnmanagedCallersOnlyDll.PInvokeMarkedWithUnmanagedCallersOnly(int32)
+ IL_0001: ldftn int InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::PInvokeMarkedWithUnmanagedCallersOnly(int32)
IL_0007: stloc.0
IL_0008: ldc.i4 1234