diff --git a/.vscode/settings.json b/.vscode/settings.json
index 89a3c7cca0..3a67def99f 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 5006951f11..f5b217f365 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 e47402faf8..fa5e1d21d6 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 9bdbb3ec7b..d1d79ea73f 100644
--- a/eng/ProjectReferences.props
+++ b/eng/ProjectReferences.props
@@ -8,11 +8,11 @@
+
+
+
-
-
-
-
+
diff --git a/eng/Signing.props b/eng/Signing.props
index 0dc432069d..829cd569e9 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 46285b1448..cdfb67026c 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 69bf0109bb..3ed95a1555 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 c3b3b87f7b..a6cffe7296 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 21aabd0940..bb01d5f38b 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 8854d979f3..46d175fdfd 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 abdd0bc05a..242429bca6 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 2a08d5246e..41416862d9 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 05e5f09891..e5826b5323 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 937e4544a1..268986246e 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 068bfcbb3b..550b3ebf18 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 93a0bd8328..89854d3c1c 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 e7659b98c8..0000000000
--- 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 9eaa25b3b5..0000000000
--- 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 41e01ae6e6..bbfdacca13 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 d5ec51b150..096ac321d1 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 aab7589f2c..fa239484f2 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 26e01c0673..c737eb0e71 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 3f97ac2f16..256ffbfb93 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 d7b8564458..9bc25314ae 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 91621cf88f..a7f9964195 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 dc065ab308..4ca36358d9 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:
- 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 +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 f2b0cfb269..812def3154 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 fd6c09b227..c2d2076730 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 771dcf4ef8..afa9542148 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:
- 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
@@ -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 00108bd3f8..7ec1f89c08 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:
- 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 +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 f64184da9f..12124d6215 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 52a74487fd..7b3fdb1361 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 aba0b0fcaf..34667b6c09 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 9c12b1b4fd..bb5638930a 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 3af9be6157..94a1edd7d0 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 9ec94add87..ed80fa3d08 100644
--- a/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
+++ b/src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
@@ -6,7 +6,6 @@ using System.IO;
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 764ac23bd5..22e3148624 100644
--- a/src/Analyzers/Analyzers/test/TestFiles/CompilationFeatureDetectorTest/StartupWithMapBlazorHub.cs
+++ b/src/Analyzers/Analyzers/test/TestFiles/CompilationFeatureDetectorTest/StartupWithMapBlazorHub.cs
@@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Analyzers.TestFiles.CompilationFeatureDetectorTes
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 fbf398888d..75337b2cc4 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 @@ namespace Microsoft.AspNetCore.Authentication
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 db937ca62e..07c0583c32 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 @@ namespace Microsoft.AspNetCore.Authentication
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 @@ namespace Microsoft.AspNetCore.Authentication
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 3f0c765614..8f6272c326 100644
--- a/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
+++ b/src/Components/Analyzers/src/ComponentInternalUsageDiagnosticAnalzyer.cs
@@ -8,6 +8,10 @@ using Microsoft.CodeAnalysis.Diagnostics;
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 e174b4f667..8c1ae95376 100644
--- a/src/Components/Analyzers/test/AnalyzerTestBase.cs
+++ b/src/Components/Analyzers/test/AnalyzerTestBase.cs
@@ -6,7 +6,6 @@ using System.IO;
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 a2feb9c39c..375c6d09a6 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 b68aa3c36e..25f1c16838 100644
--- a/src/Components/Blazor/Blazor/src/Hosting/WebAssemblyHost.cs
+++ b/src/Components/Blazor/Blazor/src/Hosting/WebAssemblyHost.cs
@@ -38,7 +38,6 @@ namespace Microsoft.AspNetCore.Blazor.Hosting
// 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 aa489c210f..0673c85b2d 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 d46500bae7..77aa59cbc1 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 5964637090..8651e14930 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.Collections.Generic;
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 80ab06c39d..c5404c256f 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 bc63a4b0df..1fafb9e81d 100644
--- a/src/Components/Blazor/Build/test/BindRazorIntegrationTest.cs
+++ b/src/Components/Blazor/Build/test/BindRazorIntegrationTest.cs
@@ -271,6 +271,7 @@ namespace Test
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public int ParentValue { get; set; } = 42;
@@ -292,6 +293,7 @@ namespace Test
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public DateTime CurrentDate { get; set; } = new DateTime(2018, 1, 1);
@@ -314,6 +316,7 @@ namespace Test
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public DateTime CurrentDate { get; set; } = new DateTime(2018, 1, 1);
@@ -338,6 +341,7 @@ namespace Test
{
// Arrange
var component = CompileToComponent(@"
+@using Microsoft.AspNetCore.Components.Web
@code {
public int ParentValue { get; set; } = 42;
@@ -360,6 +364,7 @@ namespace Test
{
// 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 6513224c05..d15cf4f584 100644
--- a/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs
+++ b/src/Components/Blazor/Build/test/ComponentRenderingRazorIntegrationTest.cs
@@ -6,6 +6,7 @@ using System.Linq;
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 @@ namespace Test
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 @@ namespace Test
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 @@ namespace Test
// 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 990ec1db18..3f380cbc79 100644
--- a/src/Components/Blazor/Build/test/RenderingRazorIntegrationTest.cs
+++ b/src/Components/Blazor/Build/test/RenderingRazorIntegrationTest.cs
@@ -7,6 +7,7 @@ using System.Threading.Tasks;
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 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test
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 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test
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 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test
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 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test
{
// 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 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test
{
// 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 e8054887c5..72adf28aa7 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 @@ namespace Microsoft.AspNetCore.Components
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 @@ namespace Microsoft.AspNetCore.Components
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 @@ namespace Microsoft.AspNetCore.Components
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 @@ namespace Microsoft.AspNetCore.Components.CompilerServices
}
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 @@ namespace Microsoft.AspNetCore.Components.RenderTree
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 @@ namespace Microsoft.AspNetCore.Components.Routing
{
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 ed14f101cd..0f6b699935 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