diff --git a/.vscode/settings.json b/.vscode/settings.json
index 89a3c7cca0c7..3a67def99f21 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,9 +1,9 @@
{
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.*proj": "xml",
- "*.props": "xml",
- "*.targets": "xml",
- "*.tasks": "xml"
- }
+ "files.trimTrailingWhitespace": true,
+ "files.associations": {
+ "*.*proj": "xml",
+ "*.props": "xml",
+ "*.targets": "xml",
+ "*.tasks": "xml"
+ }
}
diff --git a/Directory.Build.targets b/Directory.Build.targets
index 5006951f11e7..f5b217f3650d 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -16,7 +16,8 @@
false
- true
+
+ true
diff --git a/eng/Build.props b/eng/Build.props
index e47402faf882..fa5e1d21d634 100644
--- a/eng/Build.props
+++ b/eng/Build.props
@@ -28,6 +28,7 @@
-
@@ -149,10 +148,16 @@ and are generated based on the last package release.
+
+
+
+
+
+
@@ -170,8 +175,8 @@ and are generated based on the last package release.
-
+
diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props
index 9bdbb3ec7bde..d1d79ea73f2a 100644
--- a/eng/ProjectReferences.props
+++ b/eng/ProjectReferences.props
@@ -8,11 +8,11 @@
+
+
+
-
-
-
-
+
diff --git a/eng/Signing.props b/eng/Signing.props
index 0dc432069dfa..829cd569e995 100644
--- a/eng/Signing.props
+++ b/eng/Signing.props
@@ -54,6 +54,7 @@
+
@@ -98,10 +99,17 @@
+
+
+
+
diff --git a/eng/Tools.props b/eng/Tools.props
index 46285b1448e0..cdfb67026c6a 100644
--- a/eng/Tools.props
+++ b/eng/Tools.props
@@ -6,7 +6,9 @@
Without this here, we see regular failures with 'error MSB4236: The SDK 'Yarn.MSBuild' specified could not be found.'
Since this project is evaluated before .npmproj files are loaded, this should cause the package to end
up in the NuGet cache ahead of time.
+
+ This is not needed in source build.
-->
-
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 69bf0109bb59..3ed95a15550c 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -9,412 +9,412 @@
-->
-
+
https://github.com/aspnet/Blazor
- 7eeab316fa122b69a9bd777c93dcc78bc6a68905
+ f5d0da88db7b29207fc005a7478bf0b9b6fc9fc9
-
+
https://github.com/aspnet/AspNetCore-Tooling
- e60ad5d5d050ab5ee87f4cf1fb9ae440db87777d
+ 01db467df0350147bbf04f80f8c16033c23a4b4a
-
+
https://github.com/aspnet/AspNetCore-Tooling
- e60ad5d5d050ab5ee87f4cf1fb9ae440db87777d
+ 01db467df0350147bbf04f80f8c16033c23a4b4a
-
+
https://github.com/aspnet/AspNetCore-Tooling
- e60ad5d5d050ab5ee87f4cf1fb9ae440db87777d
+ 01db467df0350147bbf04f80f8c16033c23a4b4a
-
+
https://github.com/aspnet/AspNetCore-Tooling
- e60ad5d5d050ab5ee87f4cf1fb9ae440db87777d
+ 01db467df0350147bbf04f80f8c16033c23a4b4a
-
+
https://github.com/aspnet/EntityFrameworkCore
- 44d8c31bcb4bb46714389619070be9d1c6bad319
+ 0e4d1f3b9b9051ebf08342047a6db4b8a2bfcaef
-
+
https://github.com/aspnet/EntityFrameworkCore
- 44d8c31bcb4bb46714389619070be9d1c6bad319
+ 0e4d1f3b9b9051ebf08342047a6db4b8a2bfcaef
-
+
https://github.com/aspnet/EntityFrameworkCore
- 44d8c31bcb4bb46714389619070be9d1c6bad319
+ 0e4d1f3b9b9051ebf08342047a6db4b8a2bfcaef
-
+
https://github.com/aspnet/EntityFrameworkCore
- 44d8c31bcb4bb46714389619070be9d1c6bad319
+ 0e4d1f3b9b9051ebf08342047a6db4b8a2bfcaef
-
+
https://github.com/aspnet/EntityFrameworkCore
- 44d8c31bcb4bb46714389619070be9d1c6bad319
+ 0e4d1f3b9b9051ebf08342047a6db4b8a2bfcaef
-
+
https://github.com/aspnet/EntityFrameworkCore
- 44d8c31bcb4bb46714389619070be9d1c6bad319
+ 0e4d1f3b9b9051ebf08342047a6db4b8a2bfcaef
-
+
https://github.com/aspnet/EntityFrameworkCore
- 44d8c31bcb4bb46714389619070be9d1c6bad319
+ 0e4d1f3b9b9051ebf08342047a6db4b8a2bfcaef
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
https://github.com/dotnet/corefx
a28176b5ec68b6da1472934fe9493790d1665cae
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/dotnet/core-setup
- 62a9f1bdf39ba0b719875d33e248408d3802e925
+ 9042fe6c81aa3b47f58ccd94ff02e42f9f7a4e46
-
+
https://github.com/dotnet/core-setup
- 62a9f1bdf39ba0b719875d33e248408d3802e925
+ 9042fe6c81aa3b47f58ccd94ff02e42f9f7a4e46
-
+
https://github.com/dotnet/core-setup
- 62a9f1bdf39ba0b719875d33e248408d3802e925
+ 9042fe6c81aa3b47f58ccd94ff02e42f9f7a4e46
-
+
https://github.com/dotnet/core-setup
- 62a9f1bdf39ba0b719875d33e248408d3802e925
+ 9042fe6c81aa3b47f58ccd94ff02e42f9f7a4e46
-
+
https://github.com/dotnet/corefx
- a6c1d1ac235aba5bf17dd06228a62509192cda6a
+ be3d4bad4576eecda116d3e9a368cd6959ecf5ce
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
https://github.com/dotnet/arcade
@@ -428,13 +428,13 @@
https://github.com/dotnet/arcade
a11024c8c22cc762011addafc30c653c938048f4
-
+
https://github.com/aspnet/Extensions
- dbe3543601c1ab290fde1ae30ea8dd978d33d4d3
+ 3702cd2801d0459663bccebe6ae63054748b8589
-
+
https://github.com/dotnet/roslyn
- a1905991543bed104f7f7f0842aca2b65d263b87
+ 3c865821f2864393a0ff7fe22c92ded6d51a546c
diff --git a/eng/Versions.props b/eng/Versions.props
index c3b3b87f7b3d..a6cffe72966b 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -52,115 +52,115 @@
1.0.0-beta.19411.1
- 3.3.0-beta3-19406-05
+ 3.4.0-beta1-19456-03
- 5.0.0-alpha1.19404.5
- 5.0.0-alpha1.19404.5
- 5.0.0-alpha1.19404.5
- 2.1.0-alpha1.19404.5
+ 5.0.0-alpha1.19465.2
+ 5.0.0-alpha1.19465.2
+ 5.0.0-alpha1.19465.2
+ 2.1.0-alpha1.19465.2
- 1.1.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
+ 1.2.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
4.7.0-preview6.19264.9
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 1.8.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
- 5.0.0-alpha1.19381.2
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 1.9.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
+ 5.0.0-alpha1.19462.7
- 5.0.0-alpha1.19381.2
+ 5.0.0-alpha1.19462.7
- 5.0.0-alpha1.19426.2
+ 5.0.0-alpha1.19463.2
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
- 5.0.0-alpha1.19406.3
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
+ 5.0.0-alpha1.19466.1
- 5.0.0-alpha1.19407.3
- 5.0.0-alpha1.19407.3
- 5.0.0-alpha1.19407.3
- 5.0.0-alpha1.19407.3
- 5.0.0-alpha1.19407.3
- 5.0.0-alpha1.19407.3
- 5.0.0-alpha1.19407.3
+ 5.0.0-alpha1.19467.7
+ 5.0.0-alpha1.19467.7
+ 5.0.0-alpha1.19467.7
+ 5.0.0-alpha1.19467.7
+ 5.0.0-alpha1.19467.7
+ 5.0.0-alpha1.19467.7
+ 5.0.0-alpha1.19467.7
- 5.0.0-alpha1.19426.2
- 5.0.0-alpha1.19426.2
- 5.0.0-alpha1.19426.2
- 5.0.0-alpha1.19426.2
+ 5.0.0-alpha1.19467.1
+ 5.0.0-alpha1.19467.1
+ 5.0.0-alpha1.19467.1
+ 5.0.0-alpha1.19467.1
2.3.2
10.0.1
+ 15.8.166
15.8.166
+ 1.2.6
15.8.166
3.0.0
3.0.0
diff --git a/eng/Workarounds.targets b/eng/Workarounds.targets
index 21aabd09405c..bb01d5f38bd4 100644
--- a/eng/Workarounds.targets
+++ b/eng/Workarounds.targets
@@ -20,8 +20,8 @@
-
-
+
+
diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1
index 8854d979f379..46d175fdfdca 100644
--- a/eng/common/darc-init.ps1
+++ b/eng/common/darc-init.ps1
@@ -1,9 +1,9 @@
param (
$darcVersion = $null,
- $versionEndpoint = "https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16"
+ $versionEndpoint = "https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16",
+ $verbosity = "m"
)
-$verbosity = "m"
. $PSScriptRoot\tools.ps1
function InstallDarcCli ($darcVersion) {
diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh
index abdd0bc05a13..242429bca65e 100755
--- a/eng/common/darc-init.sh
+++ b/eng/common/darc-init.sh
@@ -3,6 +3,7 @@
source="${BASH_SOURCE[0]}"
darcVersion=''
versionEndpoint="https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16"
+verbosity=m
while [[ $# > 0 ]]; do
opt="$(echo "$1" | awk '{print tolower($0)}')"
@@ -15,6 +16,10 @@ while [[ $# > 0 ]]; do
versionEndpoint=$2
shift
;;
+ --verbosity)
+ verbosity=$2
+ shift
+ ;;
*)
echo "Invalid argument: $1"
usage
@@ -34,7 +39,6 @@ while [[ -h "$source" ]]; do
[[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
-verbosity=m
. "$scriptroot/tools.sh"
diff --git a/eng/common/native/CommonLibrary.psm1 b/eng/common/native/CommonLibrary.psm1
index 2a08d5246e73..41416862d913 100644
--- a/eng/common/native/CommonLibrary.psm1
+++ b/eng/common/native/CommonLibrary.psm1
@@ -152,6 +152,8 @@ function Get-File {
}
else {
Write-Verbose "Downloading $Uri"
+ # Don't display the console progress UI - it's a huge perf hit
+ $ProgressPreference = 'SilentlyContinue'
while($Attempt -Lt $DownloadRetries)
{
try {
diff --git a/eng/common/performance/perfhelixpublish.proj b/eng/common/performance/perfhelixpublish.proj
index 05e5f098915b..e5826b532370 100644
--- a/eng/common/performance/perfhelixpublish.proj
+++ b/eng/common/performance/perfhelixpublish.proj
@@ -5,8 +5,14 @@
--dotnet-versions %DOTNET_VERSION% --cli-source-info args --cli-branch %PERFLAB_BRANCH% --cli-commit-sha %PERFLAB_HASH% --cli-repository https://github.com/%PERFLAB_REPO% --cli-source-timestamp %PERFLAB_BUILDTIMESTAMP%
py -3
%HELIX_CORRELATION_PAYLOAD%\Core_Root\CoreRun.exe
+ %HELIX_CORRELATION_PAYLOAD%\Baseline_Core_Root\CoreRun.exe
$(HelixPreCommands);call %HELIX_CORRELATION_PAYLOAD%\performance\tools\machine-setup.cmd
%HELIX_CORRELATION_PAYLOAD%\artifacts\BenchmarkDotNet.Artifacts
+ %HELIX_CORRELATION_PAYLOAD%\artifacts\BenchmarkDotNet.Artifacts_Baseline
+ %HELIX_CORRELATION_PAYLOAD%\performance\src\tools\ResultsComparer\ResultsComparer.csproj
+ %HELIX_CORRELATION_PAYLOAD%\performance\tools\dotnet\$(Architecture)\dotnet.exe
+ %25%25
+ %HELIX_WORKITEM_ROOT%\testResults.xml
@@ -24,14 +30,24 @@
--dotnet-versions $DOTNET_VERSION --cli-source-info args --cli-branch $PERFLAB_BRANCH --cli-commit-sha $PERFLAB_HASH --cli-repository https://github.com/$PERFLAB_REPO --cli-source-timestamp $PERFLAB_BUILDTIMESTAMP
python3
$(BaseDirectory)/Core_Root/corerun
+ $(BaseDirectory)/Baseline_Core_Root/corerun
$(HelixPreCommands);chmod +x $(PerformanceDirectory)/tools/machine-setup.sh;. $(PerformanceDirectory)/tools/machine-setup.sh
$(BaseDirectory)/artifacts/BenchmarkDotNet.Artifacts
+ $(BaseDirectory)/artifacts/BenchmarkDotNet.Artifacts_Baseline
+ $(PerformanceDirectory)/src/tools/ResultsComparer/ResultsComparer.csproj
+ $(PerformanceDirectory)/tools/dotnet/$(Architecture)/dotnet
+ %25
+ $HELIX_WORKITEM_ROOT/testResults.xml
--corerun $(CoreRun)
+
+ --corerun $(BaselineCoreRun)
+
+
$(Python) $(WorkItemCommand) --incremental no --architecture $(Architecture) -f $(_Framework) $(PerfLabArguments)
@@ -57,20 +73,29 @@
+
+ false
+
+
$(WorkItemDirectory)
- $(WorkItemCommand) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --artifacts $(ArtifactsDirectory) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)"
+ $(WorkItemCommand) --bdn-artifacts $(BaselineArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(BaselineCoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)"
+ $(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)"
+ $(DotnetExe) run -f $(_Framework) -p $(ResultsComparer) --base $(BaselineArtifactsDirectory) --diff $(ArtifactsDirectory) --threshold 2$(Percent) --xml $(XMLResults);$(FinalCommand)
4:00
+
$(WorkItemDirectory)
- $(WorkItemCommand) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --artifacts $(ArtifactsDirectory)"
+ $(WorkItemCommand) --bdn-artifacts $(BaselineArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(BaselineCoreRunArgument)"
+ $(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument)"
+ $(DotnetExe) run -f $(_Framework) -p $(ResultsComparer) --base $(BaselineArtifactsDirectory) --diff $(ArtifactsDirectory) --threshold 2$(Percent) --xml $(XMLResults)
4:00
diff --git a/eng/common/performance/performance-setup.ps1 b/eng/common/performance/performance-setup.ps1
index 937e4544a103..268986246e54 100644
--- a/eng/common/performance/performance-setup.ps1
+++ b/eng/common/performance/performance-setup.ps1
@@ -1,6 +1,7 @@
Param(
[string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY,
[string] $CoreRootDirectory,
+ [string] $BaselineCoreRootDirectory,
[string] $Architecture="x64",
[string] $Framework="netcoreapp5.0",
[string] $CompilationMode="Tiered",
@@ -12,11 +13,13 @@ Param(
[string] $Csproj="src\benchmarks\micro\MicroBenchmarks.csproj",
[string] $Kind="micro",
[switch] $Internal,
+ [switch] $Compare,
[string] $Configurations="CompilationMode=$CompilationMode"
)
$RunFromPerformanceRepo = ($Repository -eq "dotnet/performance")
$UseCoreRun = ($CoreRootDirectory -ne [string]::Empty)
+$UseBaselineCoreRun = ($BaselineCoreRootDirectory -ne [string]::Empty)
$PayloadDirectory = (Join-Path $SourceDirectory "Payload")
$PerformanceDirectory = (Join-Path $PayloadDirectory "performance")
@@ -29,11 +32,17 @@ $HelixSourcePrefix = "pr"
$Queue = "Windows.10.Amd64.ClientRS4.DevEx.15.8.Open"
if ($Framework.StartsWith("netcoreapp")) {
- $Queue = "Windows.10.Amd64.ClientRS4.Open"
+ $Queue = "Windows.10.Amd64.ClientRS5.Open"
+}
+
+if ($Compare) {
+ $Queue = "Windows.10.Amd64.19H1.Tiger.Perf.Open"
+ $PerfLabArguments = ""
+ $ExtraBenchmarkDotNetArguments = ""
}
if ($Internal) {
- $Queue = "Windows.10.Amd64.ClientRS5.Perf"
+ $Queue = "Windows.10.Amd64.19H1.Tiger.Perf"
$PerfLabArguments = "--upload-to-perflab-container"
$ExtraBenchmarkDotNetArguments = ""
$Creator = ""
@@ -56,6 +65,10 @@ if ($UseCoreRun) {
$NewCoreRoot = (Join-Path $PayloadDirectory "Core_Root")
Move-Item -Path $CoreRootDirectory -Destination $NewCoreRoot
}
+if ($UseBaselineCoreRun) {
+ $NewBaselineCoreRoot = (Join-Path $PayloadDirectory "Baseline_Core_Root")
+ Move-Item -Path $BaselineCoreRootDirectory -Destination $NewBaselineCoreRoot
+}
$DocsDir = (Join-Path $PerformanceDirectory "docs")
robocopy $DocsDir $WorkItemDirectory
@@ -80,7 +93,9 @@ Write-PipelineSetVariable -Name 'TargetCsproj' -Value "$Csproj" -IsMultiJobVaria
Write-PipelineSetVariable -Name 'Kind' -Value "$Kind" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name 'Architecture' -Value "$Architecture" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name 'UseCoreRun' -Value "$UseCoreRun" -IsMultiJobVariable $false
+Write-PipelineSetVariable -Name 'UseBaselineCoreRun' -Value "$UseBaselineCoreRun" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name 'RunFromPerfRepo' -Value "$RunFromPerformanceRepo" -IsMultiJobVariable $false
+Write-PipelineSetVariable -Name 'Compare' -Value "$Compare" -IsMultiJobVariable $false
# Helix Arguments
Write-PipelineSetVariable -Name 'Creator' -Value "$Creator" -IsMultiJobVariable $false
diff --git a/eng/common/performance/performance-setup.sh b/eng/common/performance/performance-setup.sh
index 068bfcbb3b36..550b3ebf18e6 100755
--- a/eng/common/performance/performance-setup.sh
+++ b/eng/common/performance/performance-setup.sh
@@ -2,6 +2,7 @@
source_directory=$BUILD_SOURCESDIRECTORY
core_root_directory=
+baseline_core_root_directory=
architecture=x64
framework=netcoreapp5.0
compilation_mode=tiered
@@ -10,12 +11,14 @@ branch=$BUILD_SOURCEBRANCH
commit_sha=$BUILD_SOURCEVERSION
build_number=$BUILD_BUILDNUMBER
internal=false
+compare=false
kind="micro"
run_categories="coreclr corefx"
csproj="src\benchmarks\micro\MicroBenchmarks.csproj"
configurations=
run_from_perf_repo=false
use_core_run=true
+use_baseline_core_run=true
while (($# > 0)); do
lowerI="$(echo $1 | awk '{print tolower($0)}')"
@@ -28,6 +31,10 @@ while (($# > 0)); do
core_root_directory=$2
shift 2
;;
+ --baselinecorerootdirectory)
+ baseline_core_root_directory=$2
+ shift 2
+ ;;
--architecture)
architecture=$2
shift 2
@@ -72,6 +79,10 @@ while (($# > 0)); do
internal=true
shift 1
;;
+ --compare)
+ compare=true
+ shift 1
+ ;;
--configurations)
configurations=$2
shift 2
@@ -114,6 +125,10 @@ if [ -z "$core_root_directory" ]; then
use_core_run=false
fi
+if [ -z "$baseline_core_root_directory" ]; then
+ use_baseline_core_run=false
+fi
+
payload_directory=$source_directory/Payload
performance_directory=$payload_directory/performance
workitem_directory=$source_directory/workitem
@@ -123,6 +138,19 @@ queue=Ubuntu.1804.Amd64.Open
creator=$BUILD_DEFINITIONNAME
helix_source_prefix="pr"
+if [[ "$compare" == true ]]; then
+ extra_benchmark_dotnet_arguments=
+ perflab_arguments=
+
+ # No open queues for arm64
+ if [[ "$architecture" = "arm64" ]]; then
+ echo "Compare not available for arm64"
+ exit 1
+ fi
+
+ queue=Ubuntu.1804.Amd64.Tiger.Perf.Open
+fi
+
if [[ "$internal" == true ]]; then
perflab_arguments="--upload-to-perflab-container"
helix_source_prefix="official"
@@ -132,7 +160,7 @@ if [[ "$internal" == true ]]; then
if [[ "$architecture" = "arm64" ]]; then
queue=Ubuntu.1804.Arm64.Perf
else
- queue=Ubuntu.1804.Amd64.Perf
+ queue=Ubuntu.1804.Amd64.Tiger.Perf
fi
fi
@@ -156,21 +184,33 @@ if [[ "$use_core_run" = true ]]; then
mv $core_root_directory $new_core_root
fi
+if [[ "$use_baseline_core_run" = true ]]; then
+ new_baseline_core_root=$payload_directory/Baseline_Core_Root
+ mv $baseline_core_root_directory $new_baseline_core_root
+fi
+
+ci=true
+
+_script_dir=$(pwd)/eng/common
+. "$_script_dir/pipeline-logging-functions.sh"
+
# Make sure all of our variables are available for future steps
-echo "##vso[task.setvariable variable=UseCoreRun]$use_core_run"
-echo "##vso[task.setvariable variable=Architecture]$architecture"
-echo "##vso[task.setvariable variable=PayloadDirectory]$payload_directory"
-echo "##vso[task.setvariable variable=PerformanceDirectory]$performance_directory"
-echo "##vso[task.setvariable variable=WorkItemDirectory]$workitem_directory"
-echo "##vso[task.setvariable variable=Queue]$queue"
-echo "##vso[task.setvariable variable=SetupArguments]$setup_arguments"
-echo "##vso[task.setvariable variable=Python]python3"
-echo "##vso[task.setvariable variable=PerfLabArguments]$perflab_arguments"
-echo "##vso[task.setvariable variable=ExtraBenchmarkDotNetArguments]$extra_benchmark_dotnet_arguments"
-echo "##vso[task.setvariable variable=BDNCategories]$run_categories"
-echo "##vso[task.setvariable variable=TargetCsproj]$csproj"
-echo "##vso[task.setvariable variable=RunFromPerfRepo]$run_from_perf_repo"
-echo "##vso[task.setvariable variable=Creator]$creator"
-echo "##vso[task.setvariable variable=HelixSourcePrefix]$helix_source_prefix"
-echo "##vso[task.setvariable variable=Kind]$kind"
-echo "##vso[task.setvariable variable=_BuildConfig]$architecture.$kind.$framework"
\ No newline at end of file
+Write-PipelineSetVariable -name "UseCoreRun" -value "$use_core_run" -is_multi_job_variable false
+Write-PipelineSetVariable -name "UseBaselineCoreRun" -value "$use_baseline_core_run" -is_multi_job_variable false
+Write-PipelineSetVariable -name "Architecture" -value "$architecture" -is_multi_job_variable false
+Write-PipelineSetVariable -name "PayloadDirectory" -value "$payload_directory" -is_multi_job_variable false
+Write-PipelineSetVariable -name "PerformanceDirectory" -value "$performance_directory" -is_multi_job_variable false
+Write-PipelineSetVariable -name "WorkItemDirectory" -value "$workitem_directory" -is_multi_job_variable false
+Write-PipelineSetVariable -name "Queue" -value "$queue" -is_multi_job_variable false
+Write-PipelineSetVariable -name "SetupArguments" -value "$setup_arguments" -is_multi_job_variable false
+Write-PipelineSetVariable -name "Python" -value "$python3" -is_multi_job_variable false
+Write-PipelineSetVariable -name "PerfLabArguments" -value "$perflab_arguments" -is_multi_job_variable false
+Write-PipelineSetVariable -name "ExtraBenchmarkDotNetArguments" -value "$extra_benchmark_dotnet_arguments" -is_multi_job_variable false
+Write-PipelineSetVariable -name "BDNCategories" -value "$run_categories" -is_multi_job_variable false
+Write-PipelineSetVariable -name "TargetCsproj" -value "$csproj" -is_multi_job_variable false
+Write-PipelineSetVariable -name "RunFromPerfRepo" -value "$run_from_perf_repo" -is_multi_job_variable false
+Write-PipelineSetVariable -name "Creator" -value "$creator" -is_multi_job_variable false
+Write-PipelineSetVariable -name "HelixSourcePrefix" -value "$helix_source_prefix" -is_multi_job_variable false
+Write-PipelineSetVariable -name "Kind" -value "$kind" -is_multi_job_variable false
+Write-PipelineSetVariable -name "_BuildConfig" -value "$architecture.$kind.$framework" -is_multi_job_variable false
+Write-PipelineSetVariable -name "Compare" -value "$compare" -is_multi_job_variable false
diff --git a/eng/common/post-build/darc-gather-drop.ps1 b/eng/common/post-build/darc-gather-drop.ps1
index 93a0bd832858..89854d3c1c2a 100644
--- a/eng/common/post-build/darc-gather-drop.ps1
+++ b/eng/common/post-build/darc-gather-drop.ps1
@@ -19,7 +19,17 @@ try {
ExitWithExitCode $exitCode
}
+ # For now, only use a dry run.
+ # Ideally we would change darc to enable a quick request that
+ # would check whether the file exists that you can download it,
+ # and that it won't conflict with other files.
+ # https://github.com/dotnet/arcade/issues/3674
+ # Right now we can't remove continue-on-error because we ocassionally will have
+ # dependencies that have no associated builds (e.g. an old dependency).
+ # We need to add an option to baseline specific dependencies away, or add them manually
+ # to the BAR.
darc gather-drop --non-shipping `
+ --dry-run `
--continue-on-error `
--id $BarBuildId `
--output-dir $DropLocation `
diff --git a/eng/common/post-build/dotnetsymbol-init.ps1 b/eng/common/post-build/dotnetsymbol-init.ps1
deleted file mode 100644
index e7659b98c8c3..000000000000
--- a/eng/common/post-build/dotnetsymbol-init.ps1
+++ /dev/null
@@ -1,29 +0,0 @@
-param (
- $dotnetsymbolVersion = $null
-)
-
-$ErrorActionPreference = "Stop"
-Set-StrictMode -Version 2.0
-
-. $PSScriptRoot\..\tools.ps1
-
-$verbosity = "minimal"
-
-function Installdotnetsymbol ($dotnetsymbolVersion) {
- $dotnetsymbolPackageName = "dotnet-symbol"
-
- $dotnetRoot = InitializeDotNetCli -install:$true
- $dotnet = "$dotnetRoot\dotnet.exe"
- $toolList = & "$dotnet" tool list --global
-
- if (($toolList -like "*$dotnetsymbolPackageName*") -and ($toolList -like "*$dotnetsymbolVersion*")) {
- Write-Host "dotnet-symbol version $dotnetsymbolVersion is already installed."
- }
- else {
- Write-Host "Installing dotnet-symbol version $dotnetsymbolVersion..."
- Write-Host "You may need to restart your command window if this is the first dotnet tool you have installed."
- & "$dotnet" tool install $dotnetsymbolPackageName --version $dotnetsymbolVersion --verbosity $verbosity --global
- }
-}
-
-Installdotnetsymbol $dotnetsymbolVersion
diff --git a/eng/common/post-build/sourcelink-cli-init.ps1 b/eng/common/post-build/sourcelink-cli-init.ps1
deleted file mode 100644
index 9eaa25b3b507..000000000000
--- a/eng/common/post-build/sourcelink-cli-init.ps1
+++ /dev/null
@@ -1,29 +0,0 @@
-param (
- $sourcelinkCliVersion = $null
-)
-
-$ErrorActionPreference = "Stop"
-Set-StrictMode -Version 2.0
-
-. $PSScriptRoot\..\tools.ps1
-
-$verbosity = "minimal"
-
-function InstallSourcelinkCli ($sourcelinkCliVersion) {
- $sourcelinkCliPackageName = "sourcelink"
-
- $dotnetRoot = InitializeDotNetCli -install:$true
- $dotnet = "$dotnetRoot\dotnet.exe"
- $toolList = & "$dotnet" tool list --global
-
- if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) {
- Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed."
- }
- else {
- Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..."
- Write-Host "You may need to restart your command window if this is the first dotnet tool you have installed."
- & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity $verbosity --global
- }
-}
-
-InstallSourcelinkCli $sourcelinkCliVersion
diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1
index 41e01ae6e674..bbfdacca1307 100644
--- a/eng/common/post-build/sourcelink-validation.ps1
+++ b/eng/common/post-build/sourcelink-validation.ps1
@@ -1,8 +1,8 @@
param(
[Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored
[Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation
- [Parameter(Mandatory=$true)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade
- [Parameter(Mandatory=$true)][string] $GHCommit, # GitHub commit SHA used to build the packages
+ [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade
+ [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages
[Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use
)
@@ -13,6 +13,12 @@ param(
# all files present in the repo at a specific commit point.
$global:RepoFiles = @{}
+# Maximum number of jobs to run in parallel
+$MaxParallelJobs = 6
+
+# Wait time between check for system load
+$SecondsBetweenLoadChecks = 10
+
$ValidatePackage = {
param(
[string] $PackagePath # Full path to a Symbols.NuGet package
@@ -22,8 +28,8 @@ $ValidatePackage = {
# Ensure input file exist
if (!(Test-Path $PackagePath)) {
- Write-PipelineTaskError "Input file does not exist: $PackagePath"
- ExitWithExitCode 1
+ Write-Host "Input file does not exist: $PackagePath"
+ return 1
}
# Extensions for which we'll look for SourceLink information
@@ -38,7 +44,7 @@ $ValidatePackage = {
Add-Type -AssemblyName System.IO.Compression.FileSystem
- [System.IO.Directory]::CreateDirectory($ExtractPath);
+ [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null
try {
$zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath)
@@ -138,16 +144,18 @@ $ValidatePackage = {
if ($FailedFiles -eq 0) {
Write-Host "Passed."
+ return 0
}
else {
- Write-PipelineTaskError "$PackagePath has broken SourceLink links."
+ Write-Host "$PackagePath has broken SourceLink links."
+ return 1
}
}
function ValidateSourceLinkLinks {
- if (!($GHRepoName -Match "^[^\s\/]+/[^\s\/]+$")) {
+ if ($GHRepoName -ne "" -and !($GHRepoName -Match "^[^\s\/]+/[^\s\/]+$")) {
if (!($GHRepoName -Match "^[^\s-]+-[^\s]+$")) {
- Write-PipelineTaskError "GHRepoName should be in the format / or -"
+ Write-PipelineTaskError "GHRepoName should be in the format / or -. '$GHRepoName'"
ExitWithExitCode 1
}
else {
@@ -155,30 +163,33 @@ function ValidateSourceLinkLinks {
}
}
- if (!($GHCommit -Match "^[0-9a-fA-F]{40}$")) {
- Write-PipelineTaskError "GHCommit should be a 40 chars hexadecimal string"
+ if ($GHCommit -ne "" -and !($GHCommit -Match "^[0-9a-fA-F]{40}$")) {
+ Write-PipelineTaskError "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'"
ExitWithExitCode 1
}
- $RepoTreeURL = -Join("http://api.github.com/repos/", $GHRepoName, "/git/trees/", $GHCommit, "?recursive=1")
- $CodeExtensions = @(".cs", ".vb", ".fs", ".fsi", ".fsx", ".fsscript")
+ if ($GHRepoName -ne "" -and $GHCommit -ne "") {
+ $RepoTreeURL = -Join("http://api.github.com/repos/", $GHRepoName, "/git/trees/", $GHCommit, "?recursive=1")
+ $CodeExtensions = @(".cs", ".vb", ".fs", ".fsi", ".fsx", ".fsscript")
- try {
- # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash
- $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree
+ try {
+ # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash
+ $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree
- foreach ($file in $Data) {
- $Extension = [System.IO.Path]::GetExtension($file.path)
+ foreach ($file in $Data) {
+ $Extension = [System.IO.Path]::GetExtension($file.path)
- if ($CodeExtensions.Contains($Extension)) {
- $RepoFiles[$file.path] = 1
+ if ($CodeExtensions.Contains($Extension)) {
+ $RepoFiles[$file.path] = 1
+ }
}
}
+ catch {
+ Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching."
+ }
}
- catch {
- Write-PipelineTaskError "Problems downloading the list of files from the repo. Url used: $RepoTreeURL"
- Write-Host $_
- ExitWithExitCode 1
+ elseif ($GHRepoName -ne "" -or $GHCommit -ne "") {
+ Write-Host "For using the http caching mechanism both GHRepoName and GHCommit should be informed."
}
if (Test-Path $ExtractPath) {
@@ -186,14 +197,33 @@ function ValidateSourceLinkLinks {
}
# Process each NuGet package in parallel
- $Jobs = @()
Get-ChildItem "$InputPath\*.symbols.nupkg" |
ForEach-Object {
- $Jobs += Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName
+ Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null
+ $NumJobs = @(Get-Job -State 'Running').Count
+
+ while ($NumJobs -ge $MaxParallelJobs) {
+ Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again."
+ sleep $SecondsBetweenLoadChecks
+ $NumJobs = @(Get-Job -State 'Running').Count
+ }
+
+ foreach ($Job in @(Get-Job -State 'Completed')) {
+ Receive-Job -Id $Job.Id
+ Remove-Job -Id $Job.Id
+ }
}
- foreach ($Job in $Jobs) {
- Wait-Job -Id $Job.Id | Receive-Job
+ $ValidationFailures = 0
+ foreach ($Job in @(Get-Job)) {
+ $jobResult = Wait-Job -Id $Job.Id | Receive-Job
+ if ($jobResult -ne "0") {
+ $ValidationFailures++
+ }
+ }
+ if ($ValidationFailures -gt 0) {
+ Write-PipelineTaskError " $ValidationFailures package(s) failed validation."
+ ExitWithExitCode 1
}
}
diff --git a/eng/common/post-build/symbols-validation.ps1 b/eng/common/post-build/symbols-validation.ps1
index d5ec51b150f2..096ac321d129 100644
--- a/eng/common/post-build/symbols-validation.ps1
+++ b/eng/common/post-build/symbols-validation.ps1
@@ -37,10 +37,10 @@ function FirstMatchingSymbolDescriptionOrDefault {
# DWARF file for a .dylib
$DylibDwarf = $SymbolPath.Replace($Extension, ".dylib.dwarf")
- $dotnetsymbolExe = "$env:USERPROFILE\.dotnet\tools"
- $dotnetsymbolExe = Resolve-Path "$dotnetsymbolExe\dotnet-symbol.exe"
+ $dotnetSymbolExe = "$env:USERPROFILE\.dotnet\tools"
+ $dotnetSymbolExe = Resolve-Path "$dotnetSymbolExe\dotnet-symbol.exe"
- & $dotnetsymbolExe --symbols --modules --windows-pdbs $TargetServerParam $FullPath -o $SymbolsPath | Out-Null
+ & $dotnetSymbolExe --symbols --modules --windows-pdbs $TargetServerParam $FullPath -o $SymbolsPath | Out-Null
if (Test-Path $PdbPath) {
return "PDB"
@@ -159,25 +159,25 @@ function CheckSymbolsAvailable {
}
}
-function Installdotnetsymbol {
- $dotnetsymbolPackageName = "dotnet-symbol"
+function InstallDotnetSymbol {
+ $dotnetSymbolPackageName = "dotnet-symbol"
$dotnetRoot = InitializeDotNetCli -install:$true
$dotnet = "$dotnetRoot\dotnet.exe"
$toolList = & "$dotnet" tool list --global
- if (($toolList -like "*$dotnetsymbolPackageName*") -and ($toolList -like "*$dotnetsymbolVersion*")) {
- Write-Host "dotnet-symbol version $dotnetsymbolVersion is already installed."
+ if (($toolList -like "*$dotnetSymbolPackageName*") -and ($toolList -like "*$dotnetSymbolVersion*")) {
+ Write-Host "dotnet-symbol version $dotnetSymbolVersion is already installed."
}
else {
- Write-Host "Installing dotnet-symbol version $dotnetsymbolVersion..."
+ Write-Host "Installing dotnet-symbol version $dotnetSymbolVersion..."
Write-Host "You may need to restart your command window if this is the first dotnet tool you have installed."
- & "$dotnet" tool install $dotnetsymbolPackageName --version $dotnetsymbolVersion --verbosity "minimal" --global
+ & "$dotnet" tool install $dotnetSymbolPackageName --version $dotnetSymbolVersion --verbosity "minimal" --global
}
}
try {
- Installdotnetsymbol
+ InstallDotnetSymbol
CheckSymbolsAvailable
}
diff --git a/eng/common/sdl/execute-all-sdl-tools.ps1 b/eng/common/sdl/execute-all-sdl-tools.ps1
index aab7589f2cc7..fa239484f2ca 100644
--- a/eng/common/sdl/execute-all-sdl-tools.ps1
+++ b/eng/common/sdl/execute-all-sdl-tools.ps1
@@ -53,8 +53,8 @@ if ($ValidPath -eq $False)
exit 1
}
-& $(Join-Path $PSScriptRoot "init-sdl.ps1") -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $ArtifactsDirectory -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel
-$gdnFolder = Join-Path $ArtifactsDirectory ".gdn"
+& $(Join-Path $PSScriptRoot "init-sdl.ps1") -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory (Split-Path $SourceDirectory -Parent) -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel
+$gdnFolder = Join-Path (Split-Path $SourceDirectory -Parent) ".gdn"
if ($TsaOnboard) {
if ($TsaCodebaseName -and $TsaNotificationEmail -and $TsaCodebaseAdmin -and $TsaBugAreaPath) {
@@ -86,8 +86,8 @@ if ($TsaPublish) {
if (-not $TsaRepositoryName) {
$TsaRepositoryName = "$($Repository)-$($BranchName)"
}
- Write-Host "$guardianCliLocation tsa-publish --all-tools --repository-name `"$TsaRepositoryName`" --branch-name `"$TsaBranchName`" --build-number `"$BuildNumber`" --codebase-name `"$TsaCodebaseName`" --notification-alias `"$TsaNotificationEmail`" --codebase-admin `"$TsaCodebaseAdmin`" --instance-url `"$TsaInstanceUrl`" --project-name `"$TsaProjectName`" --area-path `"$TsaBugAreaPath`" --iteration-path `"$TsaIterationPath`" --working-directory $SourceDirectory --logger-level $GuardianLoggerLevel"
- & $guardianCliLocation tsa-publish --all-tools --repository-name "$TsaRepositoryName" --branch-name "$TsaBranchName" --build-number "$BuildNumber" --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $ArtifactsDirectory --logger-level $GuardianLoggerLevel
+ Write-Host "$guardianCliLocation tsa-publish --all-tools --repository-name `"$TsaRepositoryName`" --branch-name `"$TsaBranchName`" --build-number `"$BuildNumber`" --codebase-name `"$TsaCodebaseName`" --notification-alias `"$TsaNotificationEmail`" --codebase-admin `"$TsaCodebaseAdmin`" --instance-url `"$TsaInstanceUrl`" --project-name `"$TsaProjectName`" --area-path `"$TsaBugAreaPath`" --iteration-path `"$TsaIterationPath`" --working-directory $ArtifactsDirectory --logger-level $GuardianLoggerLevel"
+ & $guardianCliLocation tsa-publish --all-tools --repository-name "$TsaRepositoryName" --branch-name "$TsaBranchName" --build-number "$BuildNumber" --onboard $True --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $ArtifactsDirectory --logger-level $GuardianLoggerLevel
if ($LASTEXITCODE -ne 0) {
Write-Host "Guardian tsa-publish failed with exit code $LASTEXITCODE."
exit $LASTEXITCODE
diff --git a/eng/common/sdl/init-sdl.ps1 b/eng/common/sdl/init-sdl.ps1
index 26e01c0673c1..c737eb0e71c1 100644
--- a/eng/common/sdl/init-sdl.ps1
+++ b/eng/common/sdl/init-sdl.ps1
@@ -11,6 +11,9 @@ $ErrorActionPreference = "Stop"
Set-StrictMode -Version 2.0
$LASTEXITCODE = 0
+# Don't display the console progress UI - it's a huge perf hit
+$ProgressPreference = 'SilentlyContinue'
+
# Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file
$encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken"))
$escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn")
diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config
index 3f97ac2f16cc..256ffbfb93a3 100644
--- a/eng/common/sdl/packages.config
+++ b/eng/common/sdl/packages.config
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/eng/common/sdl/run-sdl.ps1 b/eng/common/sdl/run-sdl.ps1
index d7b85644581b..9bc25314ae21 100644
--- a/eng/common/sdl/run-sdl.ps1
+++ b/eng/common/sdl/run-sdl.ps1
@@ -25,43 +25,35 @@ if ($ValidPath -eq $False)
exit 1
}
+$configParam = @("--config")
+
foreach ($tool in $ToolsList) {
$gdnConfigFile = Join-Path $gdnConfigPath "$tool-configure.gdnconfig"
- $config = $False
Write-Host $tool
# We have to manually configure tools that run on source to look at the source directory only
if ($tool -eq "credscan") {
- Write-Host "$GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args `" TargetDirectory : $TargetDirectory `" $(If ($CrScanAdditionalRunConfigParams) {$CrScanAdditionalRunConfigParams})"
- & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " TargetDirectory : $TargetDirectory " $(If ($CrScanAdditionalRunConfigParams) {$CrScanAdditionalRunConfigParams})
+ Write-Host "$GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args `" TargetDirectory < $TargetDirectory `" `" OutputType < pre `" $(If ($CrScanAdditionalRunConfigParams) {$CrScanAdditionalRunConfigParams})"
+ & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " TargetDirectory < $TargetDirectory " "OutputType < pre" $(If ($CrScanAdditionalRunConfigParams) {$CrScanAdditionalRunConfigParams})
if ($LASTEXITCODE -ne 0) {
Write-Host "Guardian configure for $tool failed with exit code $LASTEXITCODE."
exit $LASTEXITCODE
}
- $config = $True
}
if ($tool -eq "policheck") {
- Write-Host "$GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args `" Target : $TargetDirectory `" $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams})"
- & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " Target : $TargetDirectory " $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams})
+ Write-Host "$GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args `" Target < $TargetDirectory `" $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams})"
+ & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " Target < $TargetDirectory " $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams})
if ($LASTEXITCODE -ne 0) {
Write-Host "Guardian configure for $tool failed with exit code $LASTEXITCODE."
exit $LASTEXITCODE
}
- $config = $True
}
- Write-Host "$GuardianCliLocation run --working-directory $WorkingDirectory --tool $tool --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel --config $gdnConfigFile $config"
- if ($config) {
- & $GuardianCliLocation run --working-directory $WorkingDirectory --tool $tool --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel --config $gdnConfigFile
- if ($LASTEXITCODE -ne 0) {
- Write-Host "Guardian run for $tool using $gdnConfigFile failed with exit code $LASTEXITCODE."
- exit $LASTEXITCODE
- }
- } else {
- & $GuardianCliLocation run --working-directory $WorkingDirectory --tool $tool --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel
- if ($LASTEXITCODE -ne 0) {
- Write-Host "Guardian run for $tool failed with exit code $LASTEXITCODE."
- exit $LASTEXITCODE
- }
- }
+ $configParam+=$gdnConfigFile
}
+Write-Host "$GuardianCliLocation run --working-directory $WorkingDirectory --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel $configParam"
+& $GuardianCliLocation run --working-directory $WorkingDirectory --tool $tool --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel $configParam
+if ($LASTEXITCODE -ne 0) {
+ Write-Host "Guardian run for $ToolsList using $configParam failed with exit code $LASTEXITCODE."
+ exit $LASTEXITCODE
+}
diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml
index 91621cf88fdb..a7f996419522 100644
--- a/eng/common/templates/job/execute-sdl.yml
+++ b/eng/common/templates/job/execute-sdl.yml
@@ -1,7 +1,10 @@
parameters:
overrideParameters: '' # Optional: to override values for parameters.
additionalParameters: '' # Optional: parameters that need user specific values eg: '-SourceToolsList @("abc","def") -ArtifactToolsList @("ghi","jkl")'
- continueOnError: false # optional: determines whether to continue the build if the step errors;
+ # There is some sort of bug (has been reported) in Azure DevOps where if this parameter is named
+ # 'continueOnError', the parameter value is not correctly picked up.
+ # This can also be remedied by the caller (post-build.yml) if it does not use a nested parameter
+ sdlContinueOnError: false # optional: determines whether to continue the build if the step errors;
dependsOn: '' # Optional: dependencies of the job
jobs:
@@ -26,12 +29,12 @@ jobs:
-InputPath $(Build.SourcesDirectory)\artifacts\BlobArtifacts
-ExtractPath $(Build.SourcesDirectory)\artifacts\BlobArtifacts
displayName: Extract Blob Artifacts
- continueOnError: ${{ parameters.continueOnError }}
+ continueOnError: ${{ parameters.sdlContinueOnError }}
- powershell: eng/common/sdl/extract-artifact-packages.ps1
-InputPath $(Build.SourcesDirectory)\artifacts\PackageArtifacts
-ExtractPath $(Build.SourcesDirectory)\artifacts\PackageArtifacts
displayName: Extract Package Artifacts
- continueOnError: ${{ parameters.continueOnError }}
+ continueOnError: ${{ parameters.sdlContinueOnError }}
- task: NuGetToolInstaller@1
displayName: 'Install NuGet.exe'
- task: NuGetCommand@2
@@ -45,12 +48,12 @@ jobs:
- ${{ if ne(parameters.overrideParameters, '') }}:
- powershell: eng/common/sdl/execute-all-sdl-tools.ps1 ${{ parameters.overrideParameters }}
displayName: Execute SDL
- continueOnError: ${{ parameters.continueOnError }}
+ continueOnError: ${{ parameters.sdlContinueOnError }}
- ${{ if eq(parameters.overrideParameters, '') }}:
- powershell: eng/common/sdl/execute-all-sdl-tools.ps1
- -GuardianPackageName Microsoft.Guardian.Cli.0.7.1
+ -GuardianPackageName Microsoft.Guardian.Cli.0.7.2
-NugetPackageDirectory $(Build.SourcesDirectory)\.packages
-AzureDevOpsAccessToken $(dn-bot-dotnet-build-rw-code-rw)
${{ parameters.additionalParameters }}
displayName: Execute SDL
- continueOnError: ${{ parameters.continueOnError }}
+ continueOnError: ${{ parameters.sdlContinueOnError }}
diff --git a/eng/common/templates/post-build/channels/internal-servicing.yml b/eng/common/templates/post-build/channels/internal-servicing.yml
index dc065ab3085b..4ca36358d962 100644
--- a/eng/common/templates/post-build/channels/internal-servicing.yml
+++ b/eng/common/templates/post-build/channels/internal-servicing.yml
@@ -1,5 +1,7 @@
parameters:
enableSymbolValidation: true
+ symbolPublishingAdditionalParameters: ''
+ artifactsPublishingAdditionalParameters: ''
stages:
- stage: IS_Publish
@@ -20,10 +22,16 @@ stages:
vmImage: 'windows-2019'
steps:
- task: DownloadBuildArtifacts@0
- displayName: Download Artifacts
+ displayName: Download Blob Artifacts
+ inputs:
+ artifactName: 'BlobArtifacts'
+ continueOnError: true
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download PDB Artifacts
inputs:
- downloadType: specific files
- matchingPattern: "*Artifacts*"
+ artifactName: 'PDBArtifacts'
+ continueOnError: true
- task: PowerShell@2
displayName: Publish
@@ -34,7 +42,9 @@ stages:
/p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
/p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
+ /p:SymbolPublishingExclusionsFile='$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
/p:Configuration=Release
+ ${{ parameters.symbolPublishingAdditionalParameters }}
- job: publish_assets
displayName: Publish Assets
@@ -92,6 +102,7 @@ stages:
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)\BlobArtifacts'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)\PackageArtifacts'
/p:Configuration=Release
+ ${{ parameters.artifactsPublishingAdditionalParameters }}
- task: NuGetCommand@2
displayName: Publish Packages to AzDO Feed
diff --git a/eng/common/templates/post-build/channels/netcore-dev-5.yml b/eng/common/templates/post-build/channels/netcore-dev-5.yml
index f2b0cfb269b5..812def315476 100644
--- a/eng/common/templates/post-build/channels/netcore-dev-5.yml
+++ b/eng/common/templates/post-build/channels/netcore-dev-5.yml
@@ -1,5 +1,8 @@
parameters:
enableSymbolValidation: true
+ symbolPublishingAdditionalParameters: ''
+ artifactsPublishingAdditionalParameters: ''
+ publishInstallersAndChecksums: false
stages:
- stage: NetCore_Dev5_Publish
@@ -20,10 +23,16 @@ stages:
vmImage: 'windows-2019'
steps:
- task: DownloadBuildArtifacts@0
- displayName: Download Artifacts
+ displayName: Download Blob Artifacts
inputs:
- downloadType: specific files
- matchingPattern: "*Artifacts*"
+ artifactName: 'BlobArtifacts'
+ continueOnError: true
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download PDB Artifacts
+ inputs:
+ artifactName: 'PDBArtifacts'
+ continueOnError: true
- task: PowerShell@2
displayName: Publish
@@ -34,7 +43,9 @@ stages:
/p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
/p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
+ /p:SymbolPublishingExclusionsFile='$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
/p:Configuration=Release
+ ${{ parameters.symbolPublishingAdditionalParameters }}
- job:
displayName: Publish Assets
@@ -91,7 +102,13 @@ stages:
/p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
- /p:Configuration=Release
+ /p:Configuration=Release
+ /p:InstallersTargetStaticFeed=$(InstallersBlobFeedUrl)
+ /p:InstallersAzureAccountKey=$(dotnetcli-storage-key)
+ /p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }}
+ /p:ChecksumsTargetStaticFeed=$(ChecksumsBlobFeedUrl)
+ /p:ChecksumsAzureAccountKey=$(dotnetclichecksums-storage-key)
+ ${{ parameters.artifactsPublishingAdditionalParameters }}
- task: NuGetCommand@2
displayName: Publish Packages to AzDO Feed
diff --git a/eng/common/templates/post-build/channels/netcore-tools-latest.yml b/eng/common/templates/post-build/channels/netcore-tools-latest.yml
index fd6c09b227ff..c2d2076730bb 100644
--- a/eng/common/templates/post-build/channels/netcore-tools-latest.yml
+++ b/eng/common/templates/post-build/channels/netcore-tools-latest.yml
@@ -1,5 +1,8 @@
parameters:
enableSymbolValidation: true
+ symbolPublishingAdditionalParameters: ''
+ artifactsPublishingAdditionalParameters: ''
+ publishInstallersAndChecksums: false
stages:
- stage: NetCore_Tools_Latest_Publish
@@ -20,10 +23,16 @@ stages:
vmImage: 'windows-2019'
steps:
- task: DownloadBuildArtifacts@0
- displayName: Download Artifacts
+ displayName: Download Blob Artifacts
inputs:
- downloadType: specific files
- matchingPattern: "*Artifacts*"
+ artifactName: 'BlobArtifacts'
+ continueOnError: true
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download PDB Artifacts
+ inputs:
+ artifactName: 'PDBArtifacts'
+ continueOnError: true
- task: PowerShell@2
displayName: Publish
@@ -34,7 +43,9 @@ stages:
/p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
/p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
+ /p:SymbolPublishingExclusionsFile='$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
/p:Configuration=Release
+ ${{ parameters.symbolPublishingAdditionalParameters }}
- job:
displayName: Publish Assets
@@ -91,7 +102,13 @@ stages:
/p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
- /p:Configuration=Release
+ /p:Configuration=Release
+ /p:InstallersTargetStaticFeed=$(InstallersBlobFeedUrl)
+ /p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }}
+ /p:InstallersAzureAccountKey=$(dotnetcli-storage-key)
+ /p:ChecksumsTargetStaticFeed=$(ChecksumsBlobFeedUrl)
+ /p:ChecksumsAzureAccountKey=$(dotnetclichecksums-storage-key)
+ ${{ parameters.artifactsPublishingAdditionalParameters }}
- task: NuGetCommand@2
displayName: Publish Packages to AzDO Feed
diff --git a/eng/common/templates/post-build/channels/public-dev-release.yml b/eng/common/templates/post-build/channels/public-dev-release.yml
index 771dcf4ef84f..afa95421480b 100644
--- a/eng/common/templates/post-build/channels/public-dev-release.yml
+++ b/eng/common/templates/post-build/channels/public-dev-release.yml
@@ -1,5 +1,8 @@
parameters:
enableSymbolValidation: true
+ symbolPublishingAdditionalParameters: ''
+ artifactsPublishingAdditionalParameters: ''
+ publishInstallersAndChecksums: false
stages:
- stage: Publish
@@ -20,10 +23,16 @@ stages:
vmImage: 'windows-2019'
steps:
- task: DownloadBuildArtifacts@0
- displayName: Download Artifacts
+ displayName: Download Blob Artifacts
+ inputs:
+ artifactName: 'BlobArtifacts'
+ continueOnError: true
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download PDB Artifacts
inputs:
- downloadType: specific files
- matchingPattern: "*Artifacts*"
+ artifactName: 'PDBArtifacts'
+ continueOnError: true
- task: PowerShell@2
displayName: Publish
@@ -34,7 +43,9 @@ stages:
/p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
/p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
+ /p:SymbolPublishingExclusionsFile='$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
/p:Configuration=Release
+ ${{ parameters.symbolPublishingAdditionalParameters }}
- job:
displayName: Publish Assets
@@ -92,6 +103,12 @@ stages:
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
/p:Configuration=Release
+ /p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }}
+ /p:InstallersTargetStaticFeed=$(InstallersBlobFeedUrl)
+ /p:InstallersAzureAccountKey=$(dotnetcli-storage-key)
+ /p:ChecksumsTargetStaticFeed=$(ChecksumsBlobFeedUrl)
+ /p:ChecksumsAzureAccountKey=$(dotnetclichecksums-storage-key)
+ ${{ parameters.artifactsPublishingAdditionalParameters }}
- task: NuGetCommand@2
displayName: Publish Packages to AzDO Feed
diff --git a/eng/common/templates/post-build/channels/public-release.yml b/eng/common/templates/post-build/channels/public-release.yml
index 00108bd3f8c8..7ec1f89c08f3 100644
--- a/eng/common/templates/post-build/channels/public-release.yml
+++ b/eng/common/templates/post-build/channels/public-release.yml
@@ -1,5 +1,7 @@
parameters:
enableSymbolValidation: true
+ symbolPublishingAdditionalParameters: ''
+ artifactsPublishingAdditionalParameters: ''
stages:
- stage: PubRel_Publish
@@ -20,10 +22,16 @@ stages:
vmImage: 'windows-2019'
steps:
- task: DownloadBuildArtifacts@0
- displayName: Download Artifacts
+ displayName: Download Blob Artifacts
+ inputs:
+ artifactName: 'BlobArtifacts'
+ continueOnError: true
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download PDB Artifacts
inputs:
- downloadType: specific files
- matchingPattern: "*Artifacts*"
+ artifactName: 'PDBArtifacts'
+ continueOnError: true
- task: PowerShell@2
displayName: Publish
@@ -34,7 +42,9 @@ stages:
/p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
/p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
+ /p:SymbolPublishingExclusionsFile='$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
/p:Configuration=Release
+ ${{ parameters.symbolPublishingAdditionalParameters }}
- job: publish_assets
displayName: Publish Assets
@@ -80,6 +90,7 @@ stages:
/p:IsInternalBuild=$(IsInternalBuild)
/p:RepositoryName=$(Build.Repository.Name)
/p:CommitSha=$(Build.SourceVersion)
+ /p:AzureStorageTargetFeedPAT='$(dotnetfeed-storage-access-key-1)'
/p:AzureStorageAccountName=$(ProxyBackedFeedsAccountName)
/p:AzureStorageAccountKey=$(dotnetfeed-storage-access-key-1)
/p:AzureDevOpsFeedsBaseUrl=$(dotnetfeed-internal-private-feed-url)
@@ -92,6 +103,7 @@ stages:
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)\BlobArtifacts'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)\PackageArtifacts'
/p:Configuration=Release
+ ${{ parameters.artifactsPublishingAdditionalParameters }}
- task: NuGetCommand@2
displayName: Publish Packages to AzDO Feed
diff --git a/eng/common/templates/post-build/channels/public-validation-release.yml b/eng/common/templates/post-build/channels/public-validation-release.yml
index f64184da9f27..12124d621573 100644
--- a/eng/common/templates/post-build/channels/public-validation-release.yml
+++ b/eng/common/templates/post-build/channels/public-validation-release.yml
@@ -1,3 +1,7 @@
+parameters:
+ artifactsPublishingAdditionalParameters: ''
+ publishInstallersAndChecksums: false
+
stages:
- stage: PVR_Publish
dependsOn: validate
@@ -62,7 +66,13 @@ stages:
/p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)\BlobArtifacts'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)\PackageArtifacts'
- /p:Configuration=Release
+ /p:Configuration=Release
+ /p:InstallersTargetStaticFeed=$(InstallersBlobFeedUrl)
+ /p:InstallersAzureAccountKey=$(dotnetcli-storage-key)
+ /p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }}
+ /p:ChecksumsTargetStaticFeed=$(ChecksumsBlobFeedUrl)
+ /p:ChecksumsAzureAccountKey=$(dotnetclichecksums-storage-key)
+ ${{ parameters.artifactsPublishingAdditionalParameters }}
- task: NuGetCommand@2
displayName: Publish Packages to AzDO Feed
diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml
index 52a74487fd06..7b3fdb136169 100644
--- a/eng/common/templates/post-build/common-variables.yml
+++ b/eng/common/templates/post-build/common-variables.yml
@@ -1,5 +1,6 @@
variables:
- group: Publish-Build-Assets
+ - group: DotNet-DotNetCli-Storage
# .NET Core 3 Dev
- name: PublicDevRelease_30_Channel_Id
@@ -45,3 +46,9 @@ variables:
value: 3.0.0
- name: SymbolToolVersion
value: 1.0.1
+
+ # Default locations for Installers and checksums
+ - name: ChecksumsBlobFeedUrl
+ value: https://dotnetclichecksums.blob.core.windows.net/dotnet/index.json
+ - name: InstallersBlobFeedUrl
+ value: https://dotnetcli.blob.core.windows.net/dotnet/index.json
diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml
index aba0b0fcafb8..34667b6c0943 100644
--- a/eng/common/templates/post-build/post-build.yml
+++ b/eng/common/templates/post-build/post-build.yml
@@ -1,12 +1,20 @@
parameters:
- enableSourceLinkValidation: true
+ enableSourceLinkValidation: false
enableSigningValidation: true
- enableSymbolValidation: true
+ enableSymbolValidation: false
enableNugetValidation: true
+ publishInstallersAndChecksums: false
SDLValidationParameters:
enable: false
+ continueOnError: false
params: ''
+ # These parameters let the user customize the call to sdk-task.ps1 for publishing
+ # symbols & general artifacts as well as for signing validation
+ symbolPublishingAdditionalParameters: ''
+ artifactsPublishingAdditionalParameters: ''
+ signingValidationAdditionalParameters: ''
+
# Which stages should finish execution before post-build stages start
dependsOn: [build]
@@ -53,7 +61,8 @@ stages:
arguments: -task SigningValidation -restore -msbuildEngine dotnet
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
/p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
- /p:Configuration=Release
+ /p:Configuration=Release
+ ${{ parameters.signingValidationAdditionalParameters }}
- ${{ if eq(parameters.enableSourceLinkValidation, 'true') }}:
- job:
@@ -78,26 +87,46 @@ stages:
-GHRepoName $(Build.Repository.Name)
-GHCommit $(Build.SourceVersion)
-SourcelinkCliVersion $(SourceLinkCLIVersion)
+ continueOnError: true
- ${{ if eq(parameters.SDLValidationParameters.enable, 'true') }}:
- template: /eng/common/templates/job/execute-sdl.yml
parameters:
additionalParameters: ${{ parameters.SDLValidationParameters.params }}
+ continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }}
- template: \eng\common\templates\post-build\channels\netcore-dev-5.yml
parameters:
enableSymbolValidation: ${{ parameters.enableSymbolValidation }}
+ symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
+ artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
+ publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- template: \eng\common\templates\post-build\channels\public-dev-release.yml
parameters:
enableSymbolValidation: ${{ parameters.enableSymbolValidation }}
+ symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
+ artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
+ publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- template: \eng\common\templates\post-build\channels\netcore-tools-latest.yml
parameters:
enableSymbolValidation: ${{ parameters.enableSymbolValidation }}
+ symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
+ artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
+ publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- template: \eng\common\templates\post-build\channels\public-validation-release.yml
+ parameters:
+ artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
+ publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- template: \eng\common\templates\post-build\channels\public-release.yml
+ parameters:
+ symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
+ artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- template: \eng\common\templates\post-build\channels\internal-servicing.yml
+ parameters:
+ symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
+ artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 9c12b1b4fdba..bb5638930ab1 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -163,6 +163,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) {
$installScript = Join-Path $dotnetRoot "dotnet-install.ps1"
if (!(Test-Path $installScript)) {
Create-Directory $dotnetRoot
+ $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
Invoke-WebRequest "https://dot.net/$dotnetInstallScriptVersion/dotnet-install.ps1" -OutFile $installScript
}
@@ -282,6 +283,7 @@ function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) {
Create-Directory $packageDir
Write-Host "Downloading $packageName $packageVersion"
+ $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
Invoke-WebRequest "https://dotnet.myget.org/F/roslyn-tools/api/v2/package/$packageName/$packageVersion/" -OutFile $packagePath
Unzip $packagePath $packageDir
}
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 3af9be6157f4..94a1edd7d0b6 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -208,12 +208,19 @@ function GetDotNetInstallScript {
# Use curl if available, otherwise use wget
if command -v curl > /dev/null; then
- curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script"
- else
- wget -q -O "$install_script" "$install_script_url"
+ curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script" || {
+ local exit_code=$?
+ Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to acquire dotnet install script (exit code '$exit_code')."
+ ExitWithExitCode $exit_code
+ }
+ else
+ wget -q -O "$install_script" "$install_script_url" || {
+ local exit_code=$?
+ Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to acquire dotnet install script (exit code '$exit_code')."
+ ExitWithExitCode $exit_code
+ }
fi
fi
-
# return value
_GetDotNetInstallScript="$install_script"
}
diff --git a/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs b/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
index 9ec94add87d2..ed80fa3d08de 100644
--- a/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
+++ b/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
@@ -6,7 +6,6 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Testing;
-using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Analyzers
diff --git a/src/Analyzers/Analyzers/test/TestFiles/CompilationFeatureDetectorTest/StartupWithMapBlazorHub.cs b/src/Analyzers/Analyzers/test/TestFiles/CompilationFeatureDetectorTest/StartupWithMapBlazorHub.cs
index 764ac23bd5be..22e3148624a9 100644
--- a/src/Analyzers/Analyzers/test/TestFiles/CompilationFeatureDetectorTest/StartupWithMapBlazorHub.cs
+++ b/src/Analyzers/Analyzers/test/TestFiles/CompilationFeatureDetectorTest/StartupWithMapBlazorHub.cs
@@ -13,7 +13,7 @@ public void Configure(IApplicationBuilder app)
app.UseEndpoints(endpoints =>
{
- endpoints.MapBlazorHub("app");
+ endpoints.MapBlazorHub();
});
}
diff --git a/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs b/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs
index fbf398888dfe..75337b2cc400 100644
--- a/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs
+++ b/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs
@@ -24,6 +24,11 @@ public AzureADJwtBearerOptionsConfiguration(
public void Configure(string name, JwtBearerOptions options)
{
var azureADScheme = GetAzureADScheme(name);
+ if (azureADScheme is null)
+ {
+ return;
+ }
+
var azureADOptions = _azureADOptions.Get(azureADScheme);
if (name != azureADOptions.JwtBearerSchemeName)
{
diff --git a/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs b/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs
index db937ca62e2f..07c0583c32b7 100644
--- a/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs
+++ b/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs
@@ -268,6 +268,22 @@ public void AddAzureAD_ThrowsWhenInstanceIsNotSet()
Assert.Contains(expectedMessage, exception.Failures);
}
+ [Fact]
+ public void AddAzureAD_SkipsOptionsValidationForNonAzureCookies()
+ {
+ var services = new ServiceCollection();
+ services.AddSingleton(new NullLoggerFactory());
+
+ services.AddAuthentication()
+ .AddAzureAD(o => { })
+ .AddCookie("other");
+
+ var provider = services.BuildServiceProvider();
+ var cookieAuthOptions = provider.GetService>();
+
+ Assert.NotNull(cookieAuthOptions.Get("other"));
+ }
+
[Fact]
public void AddAzureADBearer_AddsAllAuthenticationHandlers()
{
@@ -453,5 +469,21 @@ public void AddAzureADBearer_ThrowsWhenInstanceIsNotSet()
Assert.Contains(expectedMessage, exception.Failures);
}
+
+ [Fact]
+ public void AddAzureADBearer_SkipsOptionsValidationForNonAzureCookies()
+ {
+ var services = new ServiceCollection();
+ services.AddSingleton(new NullLoggerFactory());
+
+ services.AddAuthentication()
+ .AddAzureADBearer(o => { })
+ .AddJwtBearer("other", o => { });
+
+ var provider = services.BuildServiceProvider();
+ var jwtOptions = provider.GetService>();
+
+ Assert.NotNull(jwtOptions.Get("other"));
+ }
}
}
diff --git a/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs b/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
index 3f0c765614a5..8f6272c32639 100644
--- a/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
+++ b/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
@@ -8,6 +8,10 @@
namespace Microsoft.Extensions.Internal
{
+ ///
+ /// This API supports infrastructure and is not intended to be used
+ /// directly from your code. This API may change or be removed in future releases.
+ ///
[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class ComponentInternalUsageDiagnosticAnalyzer : DiagnosticAnalyzer
{
diff --git a/src/Components/Analyzers/test/AnalyzerTestBase.cs b/src/Components/Analyzers/test/AnalyzerTestBase.cs
index e174b4f667da..8c1ae953762e 100644
--- a/src/Components/Analyzers/test/AnalyzerTestBase.cs
+++ b/src/Components/Analyzers/test/AnalyzerTestBase.cs
@@ -6,7 +6,6 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Testing;
-using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Components.Analyzers
diff --git a/src/Components/Blazor/Blazor/ref/Microsoft.AspNetCore.Blazor.netstandard2.0.cs b/src/Components/Blazor/Blazor/ref/Microsoft.AspNetCore.Blazor.netstandard2.0.cs
index a2feb9c39c9a..375c6d09a6fa 100644
--- a/src/Components/Blazor/Blazor/ref/Microsoft.AspNetCore.Blazor.netstandard2.0.cs
+++ b/src/Components/Blazor/Blazor/ref/Microsoft.AspNetCore.Blazor.netstandard2.0.cs
@@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Blazor.Rendering
public static partial class WebAssemblyEventDispatcher
{
[Microsoft.JSInterop.JSInvokableAttribute("DispatchEvent")]
- public static System.Threading.Tasks.Task DispatchEvent(Microsoft.AspNetCore.Components.Web.WebEventDescriptor eventDescriptor, string eventArgsJson) { throw null; }
+ public static System.Threading.Tasks.Task DispatchEvent(Microsoft.AspNetCore.Components.RenderTree.WebEventDescriptor eventDescriptor, string eventArgsJson) { throw null; }
}
}
namespace Microsoft.AspNetCore.Components.Builder
diff --git a/src/Components/Blazor/Blazor/src/Hosting/WebAssemblyHost.cs b/src/Components/Blazor/Blazor/src/Hosting/WebAssemblyHost.cs
index b68aa3c36ef8..25f1c16838eb 100644
--- a/src/Components/Blazor/Blazor/src/Hosting/WebAssemblyHost.cs
+++ b/src/Components/Blazor/Blazor/src/Hosting/WebAssemblyHost.cs
@@ -38,7 +38,6 @@ public Task StartAsync(CancellationToken cancellationToken = default)
// this happens in the browser it will be a direct call from Mono. We effectively needs to set the
// JSRuntime in the 'root' execution context which implies that we want to do as part of a direct
// call from Program.Main, and before any 'awaits'.
- JSRuntime.SetCurrentJSRuntime(_runtime);
SetBrowserHttpMessageHandlerAsDefault();
return StartAsyncAwaited();
diff --git a/src/Components/Blazor/Blazor/src/Microsoft.AspNetCore.Blazor.csproj b/src/Components/Blazor/Blazor/src/Microsoft.AspNetCore.Blazor.csproj
index aa489c210fd1..0673c85b2d23 100644
--- a/src/Components/Blazor/Blazor/src/Microsoft.AspNetCore.Blazor.csproj
+++ b/src/Components/Blazor/Blazor/src/Microsoft.AspNetCore.Blazor.csproj
@@ -1,4 +1,4 @@
-
+
netstandard2.0
@@ -13,9 +13,11 @@
-
-
-
+
+
+
+
+
diff --git a/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyEventDispatcher.cs b/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyEventDispatcher.cs
index d46500bae7e0..77aa59cbc15f 100644
--- a/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyEventDispatcher.cs
+++ b/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyEventDispatcher.cs
@@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
+using Microsoft.AspNetCore.Components.RenderTree;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.JSInterop;
diff --git a/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyRenderer.cs b/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyRenderer.cs
index 596463709002..8651e14930c8 100644
--- a/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyRenderer.cs
+++ b/src/Components/Blazor/Blazor/src/Rendering/WebAssemblyRenderer.cs
@@ -6,7 +6,7 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Blazor.Services;
using Microsoft.AspNetCore.Components;
-using Microsoft.AspNetCore.Components.Rendering;
+using Microsoft.AspNetCore.Components.RenderTree;
using Microsoft.Extensions.Logging;
namespace Microsoft.AspNetCore.Blazor.Rendering
diff --git a/src/Components/Blazor/Blazor/src/Services/WebAssemblyJSRuntime.cs b/src/Components/Blazor/Blazor/src/Services/WebAssemblyJSRuntime.cs
index 80ab06c39d14..c5404c256f05 100644
--- a/src/Components/Blazor/Blazor/src/Services/WebAssemblyJSRuntime.cs
+++ b/src/Components/Blazor/Blazor/src/Services/WebAssemblyJSRuntime.cs
@@ -1,12 +1,34 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+using Microsoft.AspNetCore.Components;
using Mono.WebAssembly.Interop;
namespace Microsoft.AspNetCore.Blazor.Services
{
- internal static class WebAssemblyJSRuntime
+ internal sealed class WebAssemblyJSRuntime : MonoWebAssemblyJSRuntime
{
- public static readonly MonoWebAssemblyJSRuntime Instance = new MonoWebAssemblyJSRuntime();
+ private static readonly WebAssemblyJSRuntime _instance = new WebAssemblyJSRuntime();
+ private static bool _initialized;
+
+ public WebAssemblyJSRuntime()
+ {
+ JsonSerializerOptions.Converters.Add(new ElementReferenceJsonConverter());
+ }
+
+ public static WebAssemblyJSRuntime Instance
+ {
+ get
+ {
+ if (!_initialized)
+ {
+ // This is executing in MonoWASM. Consequently we do not to have concern ourselves with thread safety.
+ _initialized = true;
+ Initialize(_instance);
+ }
+
+ return _instance;
+ }
+ }
}
}
diff --git a/src/Components/Blazor/Build/test/BindRazorIntegrationTest.cs b/src/Components/Blazor/Build/test/BindRazorIntegrationTest.cs
index bc63a4b0df0c..1fafb9e81dbd 100644
--- a/src/Components/Blazor/Build/test/BindRazorIntegrationTest.cs
+++ b/src/Components/Blazor/Build/test/BindRazorIntegrationTest.cs
@@ -271,6 +271,7 @@ public void Render_BuiltIn_BindToInputWithoutType_WritesAttributes()
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public int ParentValue { get; set; } = 42;
@@ -292,6 +293,7 @@ public void Render_BuiltIn_BindToInputText_WithFormat_WritesAttributes()
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public DateTime CurrentDate { get; set; } = new DateTime(2018, 1, 1);
@@ -314,6 +316,7 @@ public void Render_BuiltIn_BindToInputText_WithFormatFromProperty_WritesAttribut
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public DateTime CurrentDate { get; set; } = new DateTime(2018, 1, 1);
@@ -338,6 +341,7 @@ public void Render_BuiltIn_BindToInputText_WritesAttributes()
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public int ParentValue { get; set; } = 42;
@@ -360,6 +364,7 @@ public void Render_BuiltIn_BindToInputCheckbox_WritesAttributes()
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public bool Enabled { get; set; }
diff --git a/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs b/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs
index 6513224c057d..d15cf4f58499 100644
--- a/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs
+++ b/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs
@@ -6,6 +6,7 @@
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.RenderTree;
using Microsoft.AspNetCore.Components.Test.Helpers;
+using Microsoft.AspNetCore.Components.Web;
using Xunit;
using Xunit.Abstractions;
@@ -202,23 +203,25 @@ public void Render_ChildComponent_WithEventHandler(string expression)
AdditionalSyntaxTrees.Add(Parse(@"
using System;
using Microsoft.AspNetCore.Components;
+using Microsoft.AspNetCore.Components.Web;
namespace Test
{
public class MyComponent : ComponentBase
{
[Parameter]
- public Action OnClick { get; set; }
+ public Action OnClick { get; set; }
}
}
"));
var component = CompileToComponent($@"
+@using Microsoft.AspNetCore.Components.Web
@code {{
private int counter;
- private void Increment(UIMouseEventArgs e) {{
+ private void Increment(MouseEventArgs e) {{
counter++;
}}
}}");
@@ -235,7 +238,7 @@ private void Increment(UIMouseEventArgs e) {{
AssertFrame.Attribute(frame, "OnClick", 1);
// The handler will have been assigned to a lambda
- var handler = Assert.IsType>(frame.AttributeValue);
+ var handler = Assert.IsType>(frame.AttributeValue);
Assert.Equal("Test.TestComponent", handler.Target.GetType().FullName);
});
}
@@ -445,11 +448,12 @@ public void Regression_784()
// Act
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public string ParentBgColor { get; set; } = ""#FFFFFF"";
- public void OnComponentHover(UIMouseEventArgs e)
+ public void OnComponentHover(MouseEventArgs e)
{
}
}
diff --git a/src/Components/Blazor/Build/test/RenderingRazorIntegrationTest.cs b/src/Components/Blazor/Build/test/RenderingRazorIntegrationTest.cs
index 990ec1db1886..3f380cbc7966 100644
--- a/src/Components/Blazor/Build/test/RenderingRazorIntegrationTest.cs
+++ b/src/Components/Blazor/Build/test/RenderingRazorIntegrationTest.cs
@@ -7,6 +7,7 @@
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.RenderTree;
using Microsoft.AspNetCore.Components.Test.Helpers;
+using Microsoft.AspNetCore.Components.Web;
using Xunit;
using Xunit.Abstractions;
@@ -308,11 +309,12 @@ public void SupportsUsingStatements()
public async Task SupportsTwoWayBindingForTextboxes()
{
// Arrange/Act
- var component = CompileToComponent(
- @"
- @code {
- public string MyValue { get; set; } = ""Initial value"";
- }");
+ var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
+
+@code {
+ public string MyValue { get; set; } = ""Initial value"";
+}");
var myValueProperty = component.GetType().GetProperty("MyValue");
var renderer = new TestRenderer();
@@ -343,11 +345,12 @@ public async Task SupportsTwoWayBindingForTextboxes()
public async Task SupportsTwoWayBindingForTextareas()
{
// Arrange/Act
- var component = CompileToComponent(
- @"
- @code {
- public string MyValue { get; set; } = ""Initial value"";
- }");
+ var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
+
+@code {
+ public string MyValue { get; set; } = ""Initial value"";
+}");
var myValueProperty = component.GetType().GetProperty("MyValue");
var renderer = new TestRenderer();
@@ -378,11 +381,12 @@ public async Task SupportsTwoWayBindingForTextareas()
public async Task SupportsTwoWayBindingForDateValues()
{
// Arrange/Act
- var component = CompileToComponent(
- @"
- @code {
- public DateTime MyDate { get; set; } = new DateTime(2018, 3, 4, 1, 2, 3);
- }");
+ var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
+
+@code {
+ public DateTime MyDate { get; set; } = new DateTime(2018, 3, 4, 1, 2, 3);
+}");
var myDateProperty = component.GetType().GetProperty("MyDate");
var renderer = new TestRenderer();
@@ -416,11 +420,12 @@ public async Task SupportsTwoWayBindingForDateValuesWithFormatString()
{
// Arrange/Act
var testDateFormat = "ddd yyyy-MM-dd";
- var component = CompileToComponent(
- $@"
- @code {{
- public DateTime MyDate {{ get; set; }} = new DateTime(2018, 3, 4);
- }}");
+ var component = CompileToComponent($@"
+@using Microsoft.AspNetCore.Components.Web
+
+@code {{
+ public DateTime MyDate {{ get; set; }} = new DateTime(2018, 3, 4);
+}}");
var myDateProperty = component.GetType().GetProperty("MyDate");
var renderer = new TestRenderer();
@@ -467,6 +472,7 @@ public void SupportsEventHandlerWithLambda()
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
diff --git a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netcoreapp.cs b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netcoreapp.cs
index e8054887c5f0..72adf28aa70b 100644
--- a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netcoreapp.cs
+++ b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netcoreapp.cs
@@ -50,6 +50,15 @@ public static partial class BindConverter
public static bool TryConvertToString(object obj, System.Globalization.CultureInfo culture, out string value) { throw null; }
public static bool TryConvertTo(object obj, System.Globalization.CultureInfo culture, out T value) { throw null; }
}
+ [System.AttributeUsageAttribute(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
+ public sealed partial class BindElementAttribute : System.Attribute
+ {
+ public BindElementAttribute(string element, string suffix, string valueAttribute, string changeAttribute) { }
+ public string ChangeAttribute { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ public string Element { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ public string Suffix { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ public string ValueAttribute { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ }
[System.AttributeUsageAttribute(System.AttributeTargets.Property, AllowMultiple=false, Inherited=true)]
public sealed partial class CascadingParameterAttribute : System.Attribute
{
@@ -110,6 +119,8 @@ protected void OnUnhandledException(System.UnhandledExceptionEventArgs e) { }
public readonly partial struct ElementReference
{
private readonly object _dummy;
+ public ElementReference(string id) { throw null; }
+ public string Id { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
}
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public readonly partial struct EventCallback
@@ -192,6 +203,13 @@ public readonly partial struct EventCallback
public bool HasDelegate { get { throw null; } }
public System.Threading.Tasks.Task InvokeAsync(TValue arg) { throw null; }
}
+ [System.AttributeUsageAttribute(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
+ public sealed partial class EventHandlerAttribute : System.Attribute
+ {
+ public EventHandlerAttribute(string attributeName, System.Type eventArgsType) { }
+ public string AttributeName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ public System.Type EventArgsType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ }
public partial interface IComponent
{
void Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle);
@@ -360,39 +378,6 @@ public static partial class RuntimeHelpers
}
namespace Microsoft.AspNetCore.Components.Rendering
{
- public partial class EventFieldInfo
- {
- public EventFieldInfo() { }
- public int ComponentId { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
- public object FieldValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
- }
- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
- public readonly partial struct RenderBatch
- {
- private readonly object _dummy;
- public Microsoft.AspNetCore.Components.RenderTree.ArrayRange DisposedComponentIDs { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
- public Microsoft.AspNetCore.Components.RenderTree.ArrayRange DisposedEventHandlerIDs { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
- public Microsoft.AspNetCore.Components.RenderTree.ArrayRange ReferenceFrames { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
- public Microsoft.AspNetCore.Components.RenderTree.ArrayRange UpdatedComponents { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
- }
- public abstract partial class Renderer : System.IDisposable
- {
- public Renderer(System.IServiceProvider serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) { }
- public abstract Microsoft.AspNetCore.Components.Dispatcher Dispatcher { get; }
- public event System.UnhandledExceptionEventHandler UnhandledSynchronizationException { add { } remove { } }
- protected internal int AssignRootComponentId(Microsoft.AspNetCore.Components.IComponent component) { throw null; }
- public virtual System.Threading.Tasks.Task DispatchEventAsync(ulong eventHandlerId, Microsoft.AspNetCore.Components.Rendering.EventFieldInfo fieldInfo, System.EventArgs eventArgs) { throw null; }
- public void Dispose() { }
- protected virtual void Dispose(bool disposing) { }
- protected Microsoft.AspNetCore.Components.RenderTree.ArrayRange GetCurrentRenderTreeFrames(int componentId) { throw null; }
- protected abstract void HandleException(System.Exception exception);
- protected Microsoft.AspNetCore.Components.IComponent InstantiateComponent(System.Type componentType) { throw null; }
- protected virtual void ProcessPendingRender() { }
- protected System.Threading.Tasks.Task RenderRootComponentAsync(int componentId) { throw null; }
- [System.Diagnostics.DebuggerStepThroughAttribute]
- protected System.Threading.Tasks.Task RenderRootComponentAsync(int componentId, Microsoft.AspNetCore.Components.ParameterView initialParameters) { throw null; }
- protected abstract System.Threading.Tasks.Task UpdateDisplayAsync(in Microsoft.AspNetCore.Components.Rendering.RenderBatch renderBatch);
- }
public sealed partial class RenderTreeBuilder : System.IDisposable
{
public RenderTreeBuilder() { }
@@ -448,6 +433,39 @@ public readonly partial struct ArrayRange
public ArrayRange(T[] array, int count) { throw null; }
public Microsoft.AspNetCore.Components.RenderTree.ArrayRange Clone() { throw null; }
}
+ public partial class EventFieldInfo
+ {
+ public EventFieldInfo() { }
+ public int ComponentId { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
+ public object FieldValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
+ }
+ [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
+ public readonly partial struct RenderBatch
+ {
+ private readonly object _dummy;
+ public Microsoft.AspNetCore.Components.RenderTree.ArrayRange DisposedComponentIDs { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ public Microsoft.AspNetCore.Components.RenderTree.ArrayRange DisposedEventHandlerIDs { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ public Microsoft.AspNetCore.Components.RenderTree.ArrayRange ReferenceFrames { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ public Microsoft.AspNetCore.Components.RenderTree.ArrayRange UpdatedComponents { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
+ }
+ public abstract partial class Renderer : System.IDisposable
+ {
+ public Renderer(System.IServiceProvider serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) { }
+ public abstract Microsoft.AspNetCore.Components.Dispatcher Dispatcher { get; }
+ public event System.UnhandledExceptionEventHandler UnhandledSynchronizationException { add { } remove { } }
+ protected internal int AssignRootComponentId(Microsoft.AspNetCore.Components.IComponent component) { throw null; }
+ public virtual System.Threading.Tasks.Task DispatchEventAsync(ulong eventHandlerId, Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo fieldInfo, System.EventArgs eventArgs) { throw null; }
+ public void Dispose() { }
+ protected virtual void Dispose(bool disposing) { }
+ protected Microsoft.AspNetCore.Components.RenderTree.ArrayRange GetCurrentRenderTreeFrames(int componentId) { throw null; }
+ protected abstract void HandleException(System.Exception exception);
+ protected Microsoft.AspNetCore.Components.IComponent InstantiateComponent(System.Type componentType) { throw null; }
+ protected virtual void ProcessPendingRender() { }
+ protected System.Threading.Tasks.Task RenderRootComponentAsync(int componentId) { throw null; }
+ [System.Diagnostics.DebuggerStepThroughAttribute]
+ protected System.Threading.Tasks.Task RenderRootComponentAsync(int componentId, Microsoft.AspNetCore.Components.ParameterView initialParameters) { throw null; }
+ protected abstract System.Threading.Tasks.Task UpdateDisplayAsync(in Microsoft.AspNetCore.Components.RenderTree.RenderBatch renderBatch);
+ }
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public readonly partial struct RenderTreeDiff
{
@@ -514,6 +532,8 @@ public partial class Router : Microsoft.AspNetCore.Components.IComponent, Micros
{
public Router() { }
[Microsoft.AspNetCore.Components.ParameterAttribute]
+ public System.Collections.Generic.IEnumerable AdditionalAssemblies { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
+ [Microsoft.AspNetCore.Components.ParameterAttribute]
public System.Reflection.Assembly AppAssembly { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
[Microsoft.AspNetCore.Components.ParameterAttribute]
public Microsoft.AspNetCore.Components.RenderFragment Found { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
diff --git a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs
index ed14f101cd0e..0f6b69993535 100644
--- a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs
+++ b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs
@@ -1,47 +1,58 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+using System;
+using System.Runtime.InteropServices;
+using Microsoft.AspNetCore.Components.Rendering;
+
namespace Microsoft.AspNetCore.Components.RenderTree
{
// https://github.com/dotnet/arcade/pull/2033
- [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Explicit)]
+ [StructLayout(LayoutKind.Explicit, Pack = 4)]
public readonly partial struct RenderTreeFrame
{
- [System.Runtime.InteropServices.FieldOffsetAttribute(8)]
- public readonly int AttributeEventHandlerId;
- [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
- public readonly string AttributeName;
- [System.Runtime.InteropServices.FieldOffsetAttribute(24)]
- public readonly object AttributeValue;
- [System.Runtime.InteropServices.FieldOffsetAttribute(12)]
- public readonly int ComponentId;
- [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
- public readonly System.Action