diff --git a/.vault-config/dnceng-partners-kv.yaml b/.vault-config/dnceng-partners-kv.yaml
index ee789347dec..9bf642c2c19 100644
--- a/.vault-config/dnceng-partners-kv.yaml
+++ b/.vault-config/dnceng-partners-kv.yaml
@@ -5,12 +5,6 @@ storageLocation:
name: dnceng-partners-kv
references:
- dotnetbuildskeys:
- type: azure-key-vault
- parameters:
- subscription: 11c6037b-227b-4d63-bee1-18c7b68c3a40
- name: dotnetbuildskeys
-
dotnetstagekeys:
type: azure-key-vault
parameters:
@@ -30,15 +24,6 @@ references:
name: helixkv
secrets:
- dotnetbuilds-internal-container-read-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: internal
-
dotnetstage-account-sas-read-token:
type: azure-storage-account-sas-token
parameters:
diff --git a/.vault-config/dotnetbuildskeys.yaml b/.vault-config/dotnetbuildskeys.yaml
deleted file mode 100644
index 90a841b6763..00000000000
--- a/.vault-config/dotnetbuildskeys.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-storageLocation:
- type: azure-key-vault
- parameters:
- subscription: 11c6037b-227b-4d63-bee1-18c7b68c3a40
- name: dotnetbuildskeys
-
-secrets:
- dotnetbuilds-access-key:
- type: azure-storage-key
- parameters:
- subscription: 11c6037b-227b-4d63-bee1-18c7b68c3a40
- account: dotnetbuilds
-
- dotnetbuilds-connection-string:
- type: azure-storage-connection-string
- parameters:
- storageKeySecret: dotnetbuilds-access-key
- account: dotnetbuilds
diff --git a/.vault-config/dotnetbuildstokens.yaml b/.vault-config/dotnetbuildstokens.yaml
deleted file mode 100644
index d5df0158a5d..00000000000
--- a/.vault-config/dotnetbuildstokens.yaml
+++ /dev/null
@@ -1,126 +0,0 @@
-storageLocation:
- type: azure-key-vault
- parameters:
- subscription: 11c6037b-227b-4d63-bee1-18c7b68c3a40
- name: dotnetbuildstokens
-
-references:
- dotnetbuildskeys:
- type: azure-key-vault
- parameters:
- subscription: 11c6037b-227b-4d63-bee1-18c7b68c3a40
- name: dotnetbuildskeys
-
-secrets:
- dotnetbuilds-internal-container-read-uri:
- type: azure-storage-container-sas-uri
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: internal
-
- dotnetbuilds-internal-container-read-uri-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-internal-container-read-uri
-
- dotnetbuilds-internal-container-read-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: internal
-
- dotnetbuilds-internal-container-read-token-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-internal-container-read-token
-
- dotnetbuilds-internal-checksums-container-read-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: internal-checksums
-
- dotnetbuilds-internal-checksums-container-read-token-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-internal-checksums-container-read-token
-
- dotnetbuilds-internal-container-uri:
- type: azure-storage-container-sas-uri
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rlwc
- container: internal
-
- dotnetbuilds-internal-container-uri-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-internal-container-uri
-
- dotnetbuilds-internal-container-checksum-uri:
- type: azure-storage-container-sas-uri
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rlwc
- container: internal-checksums
-
- dotnetbuilds-internal-container-checksum-uri-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-internal-container-checksum-uri
-
- dotnetbuilds-public-container-uri:
- type: azure-storage-container-sas-uri
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rlwc
- container: public
-
- dotnetbuilds-public-container-uri-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-public-container-uri
-
- dotnetbuilds-public-container-checksum-uri:
- type: azure-storage-container-sas-uri
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rlwc
- container: public-checksums
-
- dotnetbuilds-public-container-checksum-uri-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-public-container-checksum-uri
-
-
- dotnetbuilds-account-read-sas-token:
- type: azure-storage-account-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- service: blob
-
- dotnetbuilds-account-read-sas-token-base64:
- type: base64-encoder
- parameters:
- secret: dotnetbuilds-account-read-sas-token
diff --git a/.vault-config/product-builds-dnceng-pipeline-secrets.yaml b/.vault-config/product-builds-dnceng-pipeline-secrets.yaml
index df07df86120..22eafdf8df0 100644
--- a/.vault-config/product-builds-dnceng-pipeline-secrets.yaml
+++ b/.vault-config/product-builds-dnceng-pipeline-secrets.yaml
@@ -30,17 +30,6 @@ secrets:
name: BotAccount-dotnet-comment-bot
gitHubBotAccountName: dotnet-comment-bot
- #DotNet-DotNetCli-Storage
- dotnetcli-storage-key:
- type: text
- parameters:
- description: set to never expire
-
- dotnetclichecksums-storage-key:
- type: text
- parameters:
- description: set to never expire
-
# Service Principal used by the Guardian APIScan build task
apiscan-service-principal-app-id:
type: text
diff --git a/.vault-config/product-builds-engkeyvault.yaml b/.vault-config/product-builds-engkeyvault.yaml
index e8d866c5d1c..4148c58dbf3 100644
--- a/.vault-config/product-builds-engkeyvault.yaml
+++ b/.vault-config/product-builds-engkeyvault.yaml
@@ -10,12 +10,6 @@ references:
parameters:
subscription: a4fc5514-21a9-4296-bfaf-5c7ee7fa35d1
name: helixkv
-
- dotnetbuildskeys:
- type: azure-key-vault
- parameters:
- subscription: 11c6037b-227b-4d63-bee1-18c7b68c3a40
- name: dotnetbuildskeys
secrets:
BotAccount-dotnet-maestro-bot:
@@ -28,13 +22,6 @@ secrets:
parameters:
Name: dotnet-bot
- #DotNet-Blob-Feed
- dotnetfeed-storage-access-key-1:
- type: azure-storage-key
- parameters:
- subscription: a4fc5514-21a9-4296-bfaf-5c7ee7fa35d1
- account: dotnetfeed
-
#Publish-Build-Assets
BotAccount-dotnet-maestro-bot-PAT:
type: github-access-token
@@ -59,19 +46,10 @@ secrets:
organizations: dnceng
scopes: build_execute code_write
- akams:
- type: ad-application
-
- publishing-dnceng-devdiv-code-r-build-re:
- type: azure-devops-access-token
+ akams-client-id:
+ type: text
parameters:
- domainAccountName: dn-bot
- domainAccountSecret:
- location: helixkv
- name: dn-bot-account-redmond
- name: publishing-dnceng-devdiv-code
- organizations: dnceng devdiv
- scopes: code build_execute
+ description: Client id for akams app
dn-bot-dotnet-build-rw-code-rw:
type: azure-devops-access-token
@@ -162,66 +140,7 @@ secrets:
name: dn-bot-account-redmond
name: dn-symweb-symbol-server-pat
organizations: microsoft
- scopes: symbols_write
-
- dotnetfeedmsrc-storage-access-key-1:
- type: text
- parameters:
- description: Also located in dnceng-pipeline-secrets keyvault.
-
- dotnetfeedmsrc-connection-string:
- type: azure-storage-connection-string
- parameters:
- storageKeySecret: dotnetfeedmsrc-storage-access-key-1
- account: dotnetfeedmsrc
-
- dotnetfeedmsrc-read-sas-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString: dotnetfeedmsrc-connection-string
- permissions: r
- container: $root
-
- dotnetfeedmsrc-read-sas-token-base64:
- type: base64-encoder
- parameters:
- secret: dotnetfeedmsrc-read-sas-token
-
- dotnetbuilds-internal-container-read-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: internal
-
- dotnetbuilds-public-container-read-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: public
-
- dotnetbuilds-internal-checksums-container-read-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: internal-checksums
-
- dotnetbuilds-public-checksums-container-read-token:
- type: azure-storage-container-sas-token
- parameters:
- connectionString:
- name: dotnetbuilds-connection-string
- location: dotnetbuildskeys
- permissions: rl
- container: public-checksums
+ scopes: symbols_write
#OneLocBuildVariables
dn-bot-ceapex-package-r:
diff --git a/Directory.Packages.props b/Directory.Packages.props
index d1472f99509..8936cf01970 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -15,9 +15,9 @@
3.14.1-8722.20240403.1
- 2.8.1
- 1.14.0
- 2.8.1
+ 2.9.0
+ 1.15.0
+ 2.8.2
diff --git a/Documentation/AzureDevOps/SendingJobsToHelix.md b/Documentation/AzureDevOps/SendingJobsToHelix.md
index 2822cbc8294..02a60202384 100644
--- a/Documentation/AzureDevOps/SendingJobsToHelix.md
+++ b/Documentation/AzureDevOps/SendingJobsToHelix.md
@@ -83,7 +83,7 @@ The simplest Helix use-case is zipping up a single folder containing your projec
Simply specify the xUnit project(s) you wish to run (semicolon delimited) with the `XUnitProjects` parameter. Then, specify:
* the `XUnitPublishTargetFramework` – this is the framework your **test projects are targeting**, e.g. `netcoreapp3.1`.
* the `XUnitRuntimeTargetFramework` – this is the framework version of xUnit you want to use from the xUnit NuGet package, e.g. `netcoreapp2.0`. Notably, the xUnit console runner only supports up to netcoreapp2.0 as of 14 March 2018, so this is the target that should be specified for running against any higher version test projects.
-* the `XUnitRunnerVersion` (the version of the xUnit nuget package you want to use, e.g. `2.8.1`).
+* the `XUnitRunnerVersion` (the version of the xUnit nuget package you want to use, e.g. `2.9.0`).
Finally, set `IncludeDotNetCli` to true and specify which `DotNetCliPackageType` (`sdk`, `runtime` or `aspnetcore-runtime`) and `DotNetCliVersion` you wish to use. (For a full list of .NET CLI versions/package types, see these links: [3.0](https://dotnet.microsoft.com/download/dotnet-core/3.0), [2.1](https://dotnet.microsoft.com/download/dotnet-core/2.1), [2.2](https://dotnet.microsoft.com/download/dotnet-core/2.2).)
@@ -104,7 +104,7 @@ The list of available Helix queues can be found on the [Helix homepage](https://
# XUnitWorkItemTimeout: '00:05:00' -- a timeout (specified as a System.TimeSpan string) for all work items created from XUnitProjects
XUnitPublishTargetFramework: netcoreapp3.1 # specify your publish target framework here
XUnitRuntimeTargetFramework: netcoreapp2.0 # specify the framework you want to use for the xUnit runner
- XUnitRunnerVersion: 2.8.1 # specify the version of xUnit runner you wish to use here
+ XUnitRunnerVersion: 2.9.0 # specify the version of xUnit runner you wish to use here
# WorkItemDirectory: '' -- payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects
# WorkItemCommand: '' -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects
# WorkItemTimeout: '' -- a timeout (specified as a System.TimeSpan string) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects
diff --git a/Documentation/Darc.md b/Documentation/Darc.md
index 4caebb998ee..e017c78876e 100644
--- a/Documentation/Darc.md
+++ b/Documentation/Darc.md
@@ -964,8 +964,8 @@ There are a few common parameters available on every command:
checked. This setting overrides whatever GitHub PAT was provided through
`darc authenticate`.
- `--azdev-pat` - Personal access token used to authenticate to Azure DevOps.
- This token should have Code Read permissions. This setting overrides whatever
- Azure DevOps PAT was provided through `darc authenticate`.
+ This token should have Build Execute and Code Read permissions. This setting overrides whatever
+ Azure DevOps PAT was provided through `darc authenticate`. If no PAT is set, local credentials are used.
- `--bar-uri` - URI of the build asset registry service to use. Typically left
as its default (https://maestro.dot.net) This setting
overrides the Build Asset Registry URI provided through `darc authenticate`.
diff --git a/NuGet.config b/NuGet.config
index 01795d609b5..792ee1f6c03 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -11,9 +11,6 @@
-
-
-
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 5c37e187a7c..dcfae36062d 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -22,29 +22,29 @@
https://dev.azure.com/dnceng/internal/_git/dotnet-symuploader
d617bc8ed2787c235a57cf0dcdfd087b86ff9521
-
+
https://github.com/dotnet/templating
- 81ab22e8bf15861237b11d3900ff49de07ee3844
+ b3723277b14aa6ab1da489363e25fed0ef6ab575
-
+
https://github.com/dotnet/arcade
- 731d793be2d0a66bafc96b1a79dc96b4d1f0301b
+ b4e499d1f6e6b3a981feabfed290d99261762382
-
+
https://github.com/dotnet/arcade
- 731d793be2d0a66bafc96b1a79dc96b4d1f0301b
+ b4e499d1f6e6b3a981feabfed290d99261762382
-
+
https://github.com/dotnet/arcade-services
- 78939636941717922c23c0c73279602159853de6
+ b3c285272c410ee6bb00534cd970017e0c005c04
-
+
https://github.com/dotnet/arcade-services
- 78939636941717922c23c0c73279602159853de6
+ b3c285272c410ee6bb00534cd970017e0c005c04
-
+
https://github.com/dotnet/xharness
- c1a7044cbe36ea67281412766a417eece02fb3a5
+ 2c5fdbed5ea74da70649c03084bc01035f35a3fe
https://github.com/dotnet/roslyn
@@ -60,45 +60,45 @@
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/arcade
- 731d793be2d0a66bafc96b1a79dc96b4d1f0301b
+ b4e499d1f6e6b3a981feabfed290d99261762382
@@ -136,60 +136,60 @@
-
+
https://github.com/dotnet/deployment-tools
- b60c95e1ce736630d17e16626c59e3dd85ebae2b
+ d882ae4af9fb09a89e36487a9c8cb7dfde713927
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/sdk
- 39aef81ec6cffa06da9964b46d4b9e3bf2fc9979
+ ef4c24166691977558e5312758df4313ab310dc0
-
+
https://github.com/dotnet/source-build-externals
- 52c45e529d6a5956136ba3cddf849a16b65eb1f2
+ 26c52d02b67816269e647cc584f6b5db9a91970f
-
+
https://github.com/dotnet/source-build-reference-packages
- 815f91338b1c4485b50bc0da9518b7b8433c75c1
+ 4d5ba7206ed1d56612b36560334494652ed486b2
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
https://github.com/dotnet/command-line-api
5ea97af07263ea3ef68a18557c8aa3f7e3200bda
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
-
+
https://github.com/dotnet/runtime
- 2874d26cb343fc55be295a628b3ee474e19ff95e
+ 573461dc897731c11d6166574b77a8c3aabba220
diff --git a/eng/Versions.props b/eng/Versions.props
index 9d3ad5f046d..57980e6a46a 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -12,8 +12,8 @@
9.0.0-beta.24223.1
- 1.1.0-beta.24361.11
- 1.1.0-beta.24361.11
+ 1.1.0-beta.24368.3
+ 1.1.0-beta.24368.3
2.0.0-beta4.24126.1
@@ -21,7 +21,7 @@
4.5.5
4.3.0
- 1.0.0-preview6.1.23159.4
+ 2.0.0-preview.1.24305.1
2.0.0-preview.1.23470.14
2.0.0-preview.1.23470.14
@@ -44,13 +44,13 @@
4.8.0
4.8.0
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
5.0.0
6.0.4
6.0.4
@@ -64,15 +64,15 @@
6.0.22
15.2.302-preview.14.122
16.0.527
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
- 9.0.0-alpha.1.24059.2
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
+ 9.0.0-preview.6.24327.7
- 8.0.100-preview.3.23178.3
+ 9.0.100-preview.6.24328.19
2.22.0
@@ -80,10 +80,10 @@
1.1.0-beta2-19575-01
- 9.0.100-preview.7.24330.2
+ 9.0.100-preview.7.24364.1
17.5.0
- 9.0.0-prerelease.24326.1
+ 9.0.0-prerelease.24358.1
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index ec3cd14191a..3d3356e3196 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -143,9 +143,10 @@ jobs:
scriptType: ps
scriptLocation: scriptPath
scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
- arguments: -BuildId $(BARBuildId)
+ arguments: >
+ -BuildId $(BARBuildId)
-PublishingInfraVersion 3
- -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)'
+ -AzdoToken '$(System.AccessToken)'
-WaitPublishingFinish true
-ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
-SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml
index 945c1c19e82..205fb5b3a39 100644
--- a/eng/common/core-templates/job/source-index-stage1.yml
+++ b/eng/common/core-templates/job/source-index-stage1.yml
@@ -34,10 +34,12 @@ jobs:
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $(DncEngPublicBuildPool)
- image: windows.vs2022.amd64.open
+ image: 1es-windows-2022-open
+ os: windows
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $(DncEngInternalBuildPool)
- image: windows.vs2022.amd64
+ image: 1es-windows-2022
+ os: windows
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index 20924366b8a..454fd75c7af 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -307,9 +307,10 @@ stages:
scriptType: ps
scriptLocation: scriptPath
scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
- arguments: -BuildId $(BARBuildId)
+ arguments: >
+ -BuildId $(BARBuildId)
-PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
- -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)'
+ -AzdoToken '$(System.AccessToken)'
-WaitPublishingFinish true
-ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
-SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
diff --git a/eng/common/core-templates/steps/get-federated-access-token.yml b/eng/common/core-templates/steps/get-federated-access-token.yml
index c8c49cc0e8f..3a4d4410c48 100644
--- a/eng/common/core-templates/steps/get-federated-access-token.yml
+++ b/eng/common/core-templates/steps/get-federated-access-token.yml
@@ -3,6 +3,14 @@ parameters:
type: string
- name: outputVariableName
type: string
+- name: is1ESPipeline
+ type: boolean
+- name: stepName
+ type: string
+ default: 'getFederatedAccessToken'
+- name: condition
+ type: string
+ default: ''
# Resource to get a token for. Common values include:
# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps
# - 'https://storage.azure.com/' for storage
@@ -10,10 +18,16 @@ parameters:
- name: resource
type: string
default: '499b84ac-1321-427f-aa17-267ca6975798'
+- name: isStepOutputVariable
+ type: boolean
+ default: false
steps:
- task: AzureCLI@2
displayName: 'Getting federated access token for feeds'
+ name: ${{ parameters.stepName }}
+ ${{ if ne(parameters.condition, '') }}:
+ condition: ${{ parameters.condition }}
inputs:
azureSubscription: ${{ parameters.federatedServiceConnection }}
scriptType: 'pscore'
@@ -25,4 +39,4 @@ steps:
exit 1
}
Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
- Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$accessToken"
\ No newline at end of file
+ Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken"
\ No newline at end of file
diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
index 8c5ea77b586..80788c52319 100644
--- a/eng/common/core-templates/steps/publish-logs.yml
+++ b/eng/common/core-templates/steps/publish-logs.yml
@@ -32,7 +32,6 @@ steps:
'$(MaestroAccessToken)'
'$(dn-bot-all-orgs-artifact-feeds-rw)'
'$(akams-client-id)'
- '$(akams-client-secret)'
'$(microsoft-symbol-server-pat)'
'$(symweb-symbol-server-pat)'
'$(dn-bot-all-orgs-build-rw-code-rw)'
diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh
index 6d99d1263c0..4b5e8d7166b 100755
--- a/eng/common/cross/build-rootfs.sh
+++ b/eng/common/cross/build-rootfs.sh
@@ -605,18 +605,18 @@ elif [[ "$__CodeName" == "illumos" ]]; then
fi
echo "Building binutils. Please wait.."
if [[ "$__hasWget" == 1 ]]; then
- wget -O- https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf -
+ wget -O- https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf -
else
- curl -SL https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf -
+ curl -SL https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf -
fi
mkdir build-binutils && cd build-binutils
- ../binutils-2.33.1/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir"
+ ../binutils-2.42/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir"
make -j "$JOBS" && make install && cd ..
echo "Building gcc. Please wait.."
if [[ "$__hasWget" == 1 ]]; then
- wget -O- https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf -
+ wget -O- https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf -
else
- curl -SL https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf -
+ curl -SL https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf -
fi
CFLAGS="-fPIC"
CXXFLAGS="-fPIC"
@@ -624,7 +624,7 @@ elif [[ "$__CodeName" == "illumos" ]]; then
CFLAGS_FOR_TARGET="-fPIC"
export CFLAGS CXXFLAGS CXXFLAGS_FOR_TARGET CFLAGS_FOR_TARGET
mkdir build-gcc && cd build-gcc
- ../gcc-8.4.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as \
+ ../gcc-13.3.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as \
--with-gnu-ld --disable-nls --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libcilkrts --disable-libada --disable-libsanitizer \
--disable-libquadmath-support --disable-shared --enable-tls
make -j "$JOBS" && make install && cd ..
@@ -632,7 +632,7 @@ elif [[ "$__CodeName" == "illumos" ]]; then
if [[ "$__UseMirror" == 1 ]]; then
BaseUrl=https://pkgsrc.smartos.skylime.net
fi
- BaseUrl="$BaseUrl/packages/SmartOS/trunk/${__illumosArch}/All"
+ BaseUrl="$BaseUrl/packages/SmartOS/2019Q4/${__illumosArch}/All"
echo "Downloading manifest"
if [[ "$__hasWget" == 1 ]]; then
wget "$BaseUrl"
diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh
index 62900e12b21..9a0e1f2b456 100644
--- a/eng/common/native/init-compiler.sh
+++ b/eng/common/native/init-compiler.sh
@@ -19,11 +19,9 @@ case "$compiler" in
# clangx.y or clang-x.y
version="$(echo "$compiler" | tr -d '[:alpha:]-=')"
majorVersion="${version%%.*}"
- [ -z "${version##*.*}" ] && minorVersion="${version#*.}"
- if [ -z "$minorVersion" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -le 6 ]; then
- minorVersion=0;
- fi
+ # LLVM based on v18 released in early 2024, with two releases per year
+ maxVersion="$((18 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 6)))"
compiler=clang
;;
@@ -31,7 +29,9 @@ case "$compiler" in
# gccx.y or gcc-x.y
version="$(echo "$compiler" | tr -d '[:alpha:]-=')"
majorVersion="${version%%.*}"
- [ -z "${version##*.*}" ] && minorVersion="${version#*.}"
+
+ # GCC based on v14 released in early 2024, with one release per year
+ maxVersion="$((14 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 12)))"
compiler=gcc
;;
esac
@@ -49,12 +49,10 @@ check_version_exists() {
desired_version=-1
# Set up the environment to be used for building with the desired compiler.
- if command -v "$compiler-$1.$2" > /dev/null; then
- desired_version="-$1.$2"
- elif command -v "$compiler$1$2" > /dev/null; then
- desired_version="$1$2"
- elif command -v "$compiler-$1$2" > /dev/null; then
- desired_version="-$1$2"
+ if command -v "$compiler-$1" > /dev/null; then
+ desired_version="-$1"
+ elif command -v "$compiler$1" > /dev/null; then
+ desired_version="$1"
fi
echo "$desired_version"
@@ -75,7 +73,7 @@ set_compiler_version_from_CC() {
fi
# gcc and clang often display 3 part versions. However, gcc can show only 1 part in some environments.
- IFS=. read -r majorVersion minorVersion _ < /dev/null; then
- echo "Error: No usable version of $compiler found."
+ echo "Error: No compatible version of $compiler was found within the range of $minVersion to $maxVersion. Please upgrade your toolchain or specify the compiler explicitly using CLR_CC and CLR_CXX environment variables."
exit 1
fi
CC="$(command -v "$compiler" 2> /dev/null)"
CXX="$(command -v "$cxxCompiler" 2> /dev/null)"
set_compiler_version_from_CC
- else
- if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ] && { [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; }; then
- # If a major version was provided explicitly, and it was too old, find a newer compiler instead
- if ! command -v "$compiler" > /dev/null; then
- echo "Error: Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH."
- exit 1
- fi
-
- CC="$(command -v "$compiler" 2> /dev/null)"
- CXX="$(command -v "$cxxCompiler" 2> /dev/null)"
- set_compiler_version_from_CC
- fi
fi
else
- desired_version="$(check_version_exists "$majorVersion" "$minorVersion")"
+ desired_version="$(check_version_exists "$majorVersion")"
if [ "$desired_version" = "-1" ]; then
- echo "Error: Could not find specific version of $compiler: $majorVersion $minorVersion."
+ echo "Error: Could not find specific version of $compiler: $majorVersion."
exit 1
fi
fi
diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1
index 4ff587ca46a..90b58e32a87 100644
--- a/eng/common/post-build/publish-using-darc.ps1
+++ b/eng/common/post-build/publish-using-darc.ps1
@@ -42,6 +42,7 @@ try {
--azdev-pat "$AzdoToken" `
--bar-uri "$MaestroApiEndPoint" `
--ci `
+ --verbose `
@optionalParams
if ($LastExitCode -ne 0) {
diff --git a/global.json b/global.json
index 4eacb35b9e2..6a6c0a2a57e 100644
--- a/global.json
+++ b/global.json
@@ -7,8 +7,8 @@
"dotnet": "9.0.100-preview.5.24307.3"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24360.4",
- "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24360.4",
+ "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24368.9",
+ "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24368.9",
"Microsoft.Build.NoTargets": "3.7.0"
}
}
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props
index 3b6f2ba186c..231bc124ee7 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props
@@ -83,12 +83,12 @@
16.5.0
- 2.8.1
- 1.14.0
+ 2.9.0
+ 1.15.0
$(XUnitVersion)
- 2.8.1
+ 2.8.2
- 2.0.0
+ 3.5.0
$(MSTestVersion)
$(MSTestVersion)
$(ArcadeSdkVersion)
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/MSTest/MSTest.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/MSTest/MSTest.targets
index c41571d3e9c..df9defd2cf0 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/MSTest/MSTest.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/MSTest/MSTest.targets
@@ -1,12 +1,32 @@
-
-
-
-
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Microsoft.Testing.Platform.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/Microsoft.Testing.Platform.targets
new file mode 100644
index 00000000000..212abfe0a8d
--- /dev/null
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Microsoft.Testing.Platform.targets
@@ -0,0 +1,91 @@
+
+
+
+ <_TestEnvironment>%(TestToRun.EnvironmentDisplay)
+ <_TestAssembly>%(TestToRun.Identity)
+ <_TestRuntime>%(TestToRun.TestRuntime)
+ <_TestTimeout>%(TestToRun.TestTimeout)
+ <_TestRunnerAdditionalArguments>%(TestToRun.TestRunnerAdditionalArguments)
+
+
+
+ <_TestResultDirectory>$([System.IO.Path]::GetDirectoryName('%(TestToRun.ResultsTrxPath)'))
+ <_TestResultTrxFileName>$([System.IO.Path]::GetFileName('%(TestToRun.ResultsTrxPath)'))
+
+
+
+ <_TargetFileNameNoExt>$([System.IO.Path]::GetFileNameWithoutExtension('$(_TestAssembly)'))
+ <_TargetDir>$([System.IO.Path]::GetDirectoryName('$(_TestAssembly)'))\
+ <_CoreRuntimeConfigPath>$(_TargetDir)$(_TargetFileNameNoExt).runtimeconfig.json
+ <_CoreDepsPath>$(_TargetDir)$(_TargetFileNameNoExt).deps.json
+
+ <_TestRunner Condition="'%(TestToRun.Architecture)'=='x86' And Exists('$(DotNetRoot)x86\dotnet.exe')">$(DotNetRoot)x86\dotnet.exe
+ <_TestRunner Condition="'$(_TestRunner)'==''">$(DotNetTool)
+
+ <_TestRunnerArgs>exec --depsfile "$(_CoreDepsPath)" --runtimeconfig "$(_CoreRuntimeConfigPath)" $(TestRuntimeAdditionalArguments) "$(_TestAssembly)" --report-trx --report-trx-filename "$(_TestResultTrxFileName)" --results-directory "$(_TestResultDirectory)" $(_TestRunnerAdditionalArguments)
+
+
+
+ <_TestRunner Condition="'$(_TestRunner)'==''">$(_TestAssembly)
+ <_TestRunnerArgs>--results-directory "$(_TestResultDirectory)" $(_TestRunnerAdditionalArguments)
+
+
+
+ <_TestRunnerCommand>"$(_TestRunner)" $(_TestRunnerArgs)
+
+
+ <_TestRunnerCommand Condition="'$(TestCaptureOutput)' != 'false'">$(_TestRunnerCommand) > "%(TestToRun.ResultsStdOutPath)" 2>&1
+
+
+
+ <_OutputFiles Include="%(TestToRun.ResultsTrxPath)" />
+ <_OutputFiles Include="%(TestToRun.ResultsHtmlPath)" />
+ <_OutputFiles Include="%(TestToRun.ResultsStdOutPath)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ResultsFileToDisplay>%(TestToRun.ResultsHtmlPath)
+ <_ResultsFileToDisplay Condition="!Exists('$(_ResultsFileToDisplay)')">%(TestToRun.ResultsStdOutPath)
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj
index 618af66f7d3..345ee92f6dd 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj
@@ -11,6 +11,11 @@
.NETFramework
.NETFramework,Version=v4.7.2
$(BaseIntermediateOutputPath)
+
+
+
+ true
+ Restore
-
+
<_Args Include="SetupOutputPath=$(VisualStudioSetupInsertionPath)"/>
<_Args Include="ComponentIntermediateOutputPath=$(VisualStudioSetupIntermediateOutputPath)$(_ComponentName)\"/>
- <_Args Include="SwixBuildPath=$(NuGetPackageRoot)microsoft.visualstudioeng.microbuild.plugins.swixbuild\$(MicrosoftVisualStudioEngMicroBuildPluginsSwixBuildVersion)\"/>
+ <_Args Include="SwixBuildPath=$(NuGetPackageRoot)microsoft.visualstudioeng.microbuild.plugins.swixbuild\$(MicrosoftVisualStudioEngMicroBuildPluginsSwixBuildVersion)\" />
<_Args Include="VisualStudioDropName=$(VisualStudioDropName)" />
<_Args Include="DotNetTool=$(DotNetTool)" />
- <_Args Include="ManifestTool=$(NuGetPackageRoot)microsoft.manifesttool.crossplatform\$(MicrosoftManifestToolCrossPlatformVersion)\Content\Microsoft.ManifestTool.dll"/>
+ <_Args Include="ManifestTool=$(NuGetPackageRoot)microsoft.manifesttool.crossplatform\$(MicrosoftManifestToolCrossPlatformVersion)\Content\Microsoft.ManifestTool.dll" />
<_Args Include="GenerateSbom=$(GenerateSbom)" />
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.SetupPackage.vsmanproj b/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.SetupPackage.vsmanproj
index 64a58a3a35c..e94c181e4e2 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.SetupPackage.vsmanproj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.SetupPackage.vsmanproj
@@ -24,7 +24,7 @@
false
-
+
true
@@ -44,7 +44,7 @@
<_PackageStubFiles Include="$(ComponentIntermediateOutputPath)*.stub"/>
-
+
@@ -100,6 +100,9 @@
Condition="'$(GenerateSbom)' != 'false'">
+
+
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/AssetPublisherFactory.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/AssetPublisherFactory.cs
index 455f7ce8ad5..e9c8996917f 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/AssetPublisherFactory.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/AssetPublisherFactory.cs
@@ -28,7 +28,12 @@ public virtual IAssetPublisher CreateAssetPublisher(TargetFeedConfig feedConfig,
case FeedType.AzureStorageContainer:
return new AzureStorageContainerAssetTokenCredentialPublisher(
new Uri(feedConfig.TargetURL),
- new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = task.ManagedIdentityClientId }),
+ new DefaultAzureCredential(
+ new DefaultAzureCredentialOptions
+ {
+ ManagedIdentityClientId = task.ManagedIdentityClientId,
+ CredentialProcessTimeout = TimeSpan.FromSeconds(60.0)
+ }),
_log);
default:
throw new NotImplementedException();
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs
index 3c9960288f0..8781402bcc5 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs
@@ -351,7 +351,9 @@ internal PublishArtifactsInManifestBase ConstructPublishingV3Task(BuildModel bui
SkipSafetyChecks = this.SkipSafetyChecks,
AkaMSClientId = this.AkaMSClientId,
AkaMSClientCertificate = !string.IsNullOrEmpty(AkaMSClientCertificate) ?
+#pragma warning disable SYSLIB0057 // https://github.com/dotnet/arcade/issues/14936
new X509Certificate2(Convert.FromBase64String(File.ReadAllText(AkaMSClientCertificate))) : null,
+#pragma warning restore
AkaMSCreatedBy = this.AkaMSCreatedBy,
AkaMSGroupOwner = this.AkaMSGroupOwner,
AkaMsOwners = this.AkaMsOwners,
diff --git a/src/Microsoft.DotNet.Deployment.Tasks.Links/src/AkaMSLinksBase.cs b/src/Microsoft.DotNet.Deployment.Tasks.Links/src/AkaMSLinksBase.cs
index 013ea538c98..927d5037a71 100644
--- a/src/Microsoft.DotNet.Deployment.Tasks.Links/src/AkaMSLinksBase.cs
+++ b/src/Microsoft.DotNet.Deployment.Tasks.Links/src/AkaMSLinksBase.cs
@@ -24,7 +24,9 @@ protected AkaMSLinkManager CreateAkaMSLinksManager()
AkaMSLinkManager manager;
if (!string.IsNullOrEmpty(ClientCertificate))
{
+#pragma warning disable SYSLIB0057 // https://github.com/dotnet/arcade/issues/14936
manager = new AkaMSLinkManager(ClientId, new X509Certificate2(Convert.FromBase64String(File.ReadAllText(ClientCertificate))), Tenant, Log);
+#pragma warning restore
}
else if (!string.IsNullOrEmpty(ClientSecret))
{
diff --git a/src/Microsoft.DotNet.Helix/Sdk/Readme.md b/src/Microsoft.DotNet.Helix/Sdk/Readme.md
index 811bd0ad1ba..3296a10be49 100644
--- a/src/Microsoft.DotNet.Helix/Sdk/Readme.md
+++ b/src/Microsoft.DotNet.Helix/Sdk/Readme.md
@@ -228,7 +228,7 @@ Given a local folder `$(TestFolder)` containing `runtests.cmd`, this will run `r
netcoreapp2.0
- 2.8.1
+ 2.9.0
diff --git a/src/Microsoft.DotNet.Helix/Sdk/tools/xunit-runner/XUnitRunner.targets b/src/Microsoft.DotNet.Helix/Sdk/tools/xunit-runner/XUnitRunner.targets
index 7d2df05364a..9a131adb0a6 100644
--- a/src/Microsoft.DotNet.Helix/Sdk/tools/xunit-runner/XUnitRunner.targets
+++ b/src/Microsoft.DotNet.Helix/Sdk/tools/xunit-runner/XUnitRunner.targets
@@ -5,7 +5,7 @@
net9.0
netcoreapp2.0
- 2.8.1
+ 2.9.0
<_XUnitPublishTargetsPath>$(MSBuildThisFileDirectory)XUnitPublish.targets
diff --git a/src/Microsoft.DotNet.XUnitAssert/src/Sdk/ArgumentFormatter.cs b/src/Microsoft.DotNet.XUnitAssert/src/Sdk/ArgumentFormatter.cs
index f767b0691b6..b2df927faf8 100644
--- a/src/Microsoft.DotNet.XUnitAssert/src/Sdk/ArgumentFormatter.cs
+++ b/src/Microsoft.DotNet.XUnitAssert/src/Sdk/ArgumentFormatter.cs
@@ -323,7 +323,7 @@ static string FormatDoubleValue(object value) =>
string.Format(CultureInfo.CurrentCulture, "{0:G17}", value);
static string FormatEnumValue(object value) =>
-#if NETCOREAPP2_0_OR_GREATER
+#if NETCOREAPP2_0_OR_GREATER || NETSTANDARD2_1_OR_GREATER
value.ToString()?.Replace(", ", " | ", StringComparison.Ordinal) ?? "null";
#else
value.ToString()?.Replace(", ", " | ") ?? "null";
@@ -370,7 +370,7 @@ static string FormatFloatValue(object value) =>
static string FormatStringValue(string value)
{
-#if NETCOREAPP2_0_OR_GREATER
+#if NETCOREAPP2_0_OR_GREATER || NETSTANDARD2_1_OR_GREATER
value = EscapeString(value).Replace(@"""", @"\""", StringComparison.Ordinal); // escape double quotes
#else
value = EscapeString(value).Replace(@"""", @"\"""); // escape double quotes
@@ -453,7 +453,7 @@ public static string FormatTypeName(
if (result == null)
return typeInfo.Name;
-#if NETCOREAPP2_1_OR_GREATER
+#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER
var tickIdx = result.IndexOf('`', StringComparison.Ordinal);
#else
var tickIdx = result.IndexOf('`');
@@ -518,7 +518,7 @@ static bool IsAnonymousType(this TypeInfo typeInfo)
if (typeInfo.GetCustomAttribute(typeof(CompilerGeneratedAttribute)) == null)
return false;
-#if NETCOREAPP2_1_OR_GREATER
+#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER
return typeInfo.Name.Contains("AnonymousType", StringComparison.Ordinal);
#else
return typeInfo.Name.Contains("AnonymousType");
diff --git a/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertEqualityComparer.cs b/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertEqualityComparer.cs
index 2944e7df0a8..30bf4bf92bb 100644
--- a/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertEqualityComparer.cs
+++ b/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertEqualityComparer.cs
@@ -196,6 +196,10 @@ internal bool Equals(
if (x == null || y == null)
return false;
+ // If you point at the same thing, you're equal
+ if (ReferenceEquals(x, y))
+ return true;
+
// Implements IEquatable?
var equatable = x as IEquatable;
if (equatable != null)
diff --git a/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertHelper.cs b/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertHelper.cs
index 40105cc5c0e..f4659c37ff6 100644
--- a/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertHelper.cs
+++ b/src/Microsoft.DotNet.XUnitAssert/src/Sdk/AssertHelper.cs
@@ -8,6 +8,7 @@
#pragma warning disable CS8604
#pragma warning disable CS8621
#pragma warning disable CS8625
+#pragma warning disable CS8767
#endif
using System;
@@ -90,6 +91,8 @@ internal static class AssertHelper
#endif
});
+ static readonly IEqualityComparer