├── .editorconfig
├── .gitattributes
├── .github
└── ISSUE_TEMPLATE
│ └── do_not_log_issues.md
├── .gitignore
├── Blazor.sln
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── LICENSE.txt
├── NuGet.config
├── README.md
├── SECURITY.md
├── THIRD-PARTY-NOTICES.txt
├── UpgradeMono.cmd
├── UpgradeMono.ps1
├── azure-pipelines.yml
├── build.cmd
├── build.sh
├── eng
├── Signing.props
├── Version.Details.xml
├── Versions.props
└── common
│ ├── CIBuild.cmd
│ ├── CheckSymbols.ps1
│ ├── PSScriptAnalyzerSettings.psd1
│ ├── PublishToPackageFeed.proj
│ ├── PublishToSymbolServers.proj
│ ├── README.md
│ ├── SetupNugetSources.ps1
│ ├── SetupNugetSources.sh
│ ├── SigningValidation.proj
│ ├── SourceLinkValidation.ps1
│ ├── build.ps1
│ ├── build.sh
│ ├── cibuild.sh
│ ├── cross
│ ├── android
│ │ ├── arm
│ │ │ └── toolchain.cmake
│ │ └── arm64
│ │ │ └── toolchain.cmake
│ ├── arm
│ │ ├── sources.list.bionic
│ │ ├── sources.list.jessie
│ │ ├── sources.list.trusty
│ │ ├── sources.list.xenial
│ │ ├── sources.list.zesty
│ │ ├── trusty-lttng-2.4.patch
│ │ └── trusty.patch
│ ├── arm64
│ │ ├── sources.list.bionic
│ │ ├── sources.list.buster
│ │ ├── sources.list.stretch
│ │ ├── sources.list.trusty
│ │ ├── sources.list.xenial
│ │ └── sources.list.zesty
│ ├── armel
│ │ ├── sources.list.jessie
│ │ ├── tizen-build-rootfs.sh
│ │ ├── tizen-fetch.sh
│ │ └── tizen
│ │ │ ├── tizen-dotnet.ks
│ │ │ └── tizen.patch
│ ├── build-android-rootfs.sh
│ ├── build-rootfs.sh
│ ├── toolchain.cmake
│ └── x86
│ │ ├── sources.list.bionic
│ │ ├── sources.list.trusty
│ │ └── sources.list.xenial
│ ├── darc-init.ps1
│ ├── darc-init.sh
│ ├── dotnet-install.cmd
│ ├── dotnet-install.ps1
│ ├── dotnet-install.sh
│ ├── enable-cross-org-publishing.ps1
│ ├── generate-graph-files.ps1
│ ├── helixpublish.proj
│ ├── init-tools-native.cmd
│ ├── init-tools-native.ps1
│ ├── init-tools-native.sh
│ ├── internal-feed-operations.ps1
│ ├── internal-feed-operations.sh
│ ├── internal
│ ├── Directory.Build.props
│ └── Tools.csproj
│ ├── msbuild.ps1
│ ├── msbuild.sh
│ ├── native
│ ├── CommonLibrary.psm1
│ ├── common-library.sh
│ ├── install-cmake-test.sh
│ ├── install-cmake.sh
│ └── install-tool.ps1
│ ├── performance
│ ├── perfhelixpublish.proj
│ ├── performance-setup.ps1
│ └── performance-setup.sh
│ ├── pipeline-logging-functions.ps1
│ ├── pipeline-logging-functions.sh
│ ├── post-build
│ ├── darc-gather-drop.ps1
│ ├── nuget-validation.ps1
│ ├── post-build-utils.ps1
│ ├── promote-build.ps1
│ ├── setup-maestro-vars.ps1
│ ├── sourcelink-validation.ps1
│ ├── symbols-validation.ps1
│ └── trigger-subscriptions.ps1
│ ├── sdk-task.ps1
│ ├── sdl
│ ├── NuGet.config
│ ├── execute-all-sdl-tools.ps1
│ ├── extract-artifact-packages.ps1
│ ├── init-sdl.ps1
│ ├── packages.config
│ ├── push-gdn.ps1
│ └── run-sdl.ps1
│ ├── templates
│ ├── job
│ │ ├── execute-sdl.yml
│ │ ├── generate-graph-files.yml
│ │ ├── job.yml
│ │ ├── performance.yml
│ │ └── publish-build-assets.yml
│ ├── jobs
│ │ └── jobs.yml
│ ├── phases
│ │ ├── base.yml
│ │ └── publish-build-assets.yml
│ ├── post-build
│ │ ├── channels
│ │ │ ├── generic-internal-channel.yml
│ │ │ └── generic-public-channel.yml
│ │ ├── common-variables.yml
│ │ ├── darc-gather-drop.yml
│ │ ├── post-build.yml
│ │ ├── promote-build.yml
│ │ ├── setup-maestro-vars.yml
│ │ └── trigger-subscription.yml
│ └── steps
│ │ ├── build-reason.yml
│ │ ├── perf-send-to-helix.yml
│ │ ├── promote-build.yml
│ │ ├── run-on-unix.yml
│ │ ├── run-on-windows.yml
│ │ ├── run-script-ifequalelse.yml
│ │ ├── send-to-helix.yml
│ │ ├── telemetry-end.yml
│ │ └── telemetry-start.yml
│ ├── tools.ps1
│ └── tools.sh
├── global.json
├── runtimeconfig.template.json
└── src
├── Directory.Build.props
├── Microsoft.AspNetCore.Blazor.BuildTools
├── Cli
│ ├── Commands
│ │ ├── CheckNodeJsInstalledCommand.cs
│ │ └── ILWipeCommand.cs
│ └── Program.cs
├── Core
│ └── ILWipe
│ │ ├── AssemblyItem.cs
│ │ ├── MethodWipedExceptionMethod.cs
│ │ ├── SpecList.cs
│ │ ├── SpecListEntry.cs
│ │ └── WipeAssembly.cs
└── Microsoft.AspNetCore.Blazor.BuildTools.csproj
├── Microsoft.AspNetCore.Components.WebAssembly.DebugProxy
├── DebugProxyOptions.cs
├── Hosting
│ └── DebugProxyHost.cs
├── Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.csproj
├── Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.nuspec
├── MonoDebugProxy
│ └── ws-proxy
│ │ ├── DebugStore.cs
│ │ ├── DevToolsHelper.cs
│ │ ├── DevToolsProxy.cs
│ │ ├── EvaluateExpression.cs
│ │ └── MonoProxy.cs
├── Program.cs
├── Startup.cs
└── TargetPickerUi.cs
├── Microsoft.AspNetCore.Components.WebAssembly.Runtime
├── .gitignore
├── Directory.Build.props
├── HowToUpgradeMono.md
├── Microsoft.AspNetCore.Components.WebAssembly.Runtime.csproj
├── Microsoft.AspNetCore.Components.WebAssembly.Runtime.nuspec
├── bclwipe
│ └── mscorlib.txt
├── build
│ └── netstandard1.0
│ │ └── Microsoft.AspNetCore.Components.WebAssembly.Runtime.props
├── incoming
│ ├── bcl
│ │ ├── Facades
│ │ │ ├── Microsoft.Win32.Primitives.dll
│ │ │ ├── Microsoft.Win32.Registry.AccessControl.dll
│ │ │ ├── Microsoft.Win32.Registry.dll
│ │ │ ├── System.AppContext.dll
│ │ │ ├── System.Buffers.dll
│ │ │ ├── System.Collections.Concurrent.dll
│ │ │ ├── System.Collections.NonGeneric.dll
│ │ │ ├── System.Collections.Specialized.dll
│ │ │ ├── System.Collections.dll
│ │ │ ├── System.ComponentModel.Annotations.dll
│ │ │ ├── System.ComponentModel.EventBasedAsync.dll
│ │ │ ├── System.ComponentModel.Primitives.dll
│ │ │ ├── System.ComponentModel.TypeConverter.dll
│ │ │ ├── System.ComponentModel.dll
│ │ │ ├── System.Console.dll
│ │ │ ├── System.Data.Common.dll
│ │ │ ├── System.Data.SqlClient.dll
│ │ │ ├── System.Diagnostics.Contracts.dll
│ │ │ ├── System.Diagnostics.Debug.dll
│ │ │ ├── System.Diagnostics.FileVersionInfo.dll
│ │ │ ├── System.Diagnostics.Process.dll
│ │ │ ├── System.Diagnostics.StackTrace.dll
│ │ │ ├── System.Diagnostics.TextWriterTraceListener.dll
│ │ │ ├── System.Diagnostics.Tools.dll
│ │ │ ├── System.Diagnostics.TraceEvent.dll
│ │ │ ├── System.Diagnostics.TraceSource.dll
│ │ │ ├── System.Diagnostics.Tracing.dll
│ │ │ ├── System.Drawing.Common.dll
│ │ │ ├── System.Drawing.Primitives.dll
│ │ │ ├── System.Dynamic.Runtime.dll
│ │ │ ├── System.Globalization.Calendars.dll
│ │ │ ├── System.Globalization.Extensions.dll
│ │ │ ├── System.Globalization.dll
│ │ │ ├── System.IO.Compression.ZipFile.dll
│ │ │ ├── System.IO.FileSystem.AccessControl.dll
│ │ │ ├── System.IO.FileSystem.DriveInfo.dll
│ │ │ ├── System.IO.FileSystem.Primitives.dll
│ │ │ ├── System.IO.FileSystem.Watcher.dll
│ │ │ ├── System.IO.FileSystem.dll
│ │ │ ├── System.IO.IsolatedStorage.dll
│ │ │ ├── System.IO.MemoryMappedFiles.dll
│ │ │ ├── System.IO.Pipes.dll
│ │ │ ├── System.IO.UnmanagedMemoryStream.dll
│ │ │ ├── System.IO.dll
│ │ │ ├── System.Linq.Expressions.dll
│ │ │ ├── System.Linq.Parallel.dll
│ │ │ ├── System.Linq.Queryable.dll
│ │ │ ├── System.Linq.dll
│ │ │ ├── System.Memory.dll
│ │ │ ├── System.Net.AuthenticationManager.dll
│ │ │ ├── System.Net.Cache.dll
│ │ │ ├── System.Net.HttpListener.dll
│ │ │ ├── System.Net.Mail.dll
│ │ │ ├── System.Net.NameResolution.dll
│ │ │ ├── System.Net.NetworkInformation.dll
│ │ │ ├── System.Net.Ping.dll
│ │ │ ├── System.Net.Primitives.dll
│ │ │ ├── System.Net.Requests.dll
│ │ │ ├── System.Net.Security.dll
│ │ │ ├── System.Net.ServicePoint.dll
│ │ │ ├── System.Net.Sockets.dll
│ │ │ ├── System.Net.Utilities.dll
│ │ │ ├── System.Net.WebHeaderCollection.dll
│ │ │ ├── System.Net.WebSockets.Client.dll
│ │ │ ├── System.Net.WebSockets.dll
│ │ │ ├── System.ObjectModel.dll
│ │ │ ├── System.Reflection.DispatchProxy.dll
│ │ │ ├── System.Reflection.Emit.ILGeneration.dll
│ │ │ ├── System.Reflection.Emit.Lightweight.dll
│ │ │ ├── System.Reflection.Emit.dll
│ │ │ ├── System.Reflection.Extensions.dll
│ │ │ ├── System.Reflection.Primitives.dll
│ │ │ ├── System.Reflection.TypeExtensions.dll
│ │ │ ├── System.Reflection.dll
│ │ │ ├── System.Resources.Reader.dll
│ │ │ ├── System.Resources.ReaderWriter.dll
│ │ │ ├── System.Resources.ResourceManager.dll
│ │ │ ├── System.Resources.Writer.dll
│ │ │ ├── System.Runtime.CompilerServices.VisualC.dll
│ │ │ ├── System.Runtime.Extensions.dll
│ │ │ ├── System.Runtime.Handles.dll
│ │ │ ├── System.Runtime.InteropServices.RuntimeInformation.dll
│ │ │ ├── System.Runtime.InteropServices.WindowsRuntime.dll
│ │ │ ├── System.Runtime.InteropServices.dll
│ │ │ ├── System.Runtime.Loader.dll
│ │ │ ├── System.Runtime.Numerics.dll
│ │ │ ├── System.Runtime.Serialization.Formatters.dll
│ │ │ ├── System.Runtime.Serialization.Json.dll
│ │ │ ├── System.Runtime.Serialization.Primitives.dll
│ │ │ ├── System.Runtime.Serialization.Xml.dll
│ │ │ ├── System.Runtime.dll
│ │ │ ├── System.Security.AccessControl.dll
│ │ │ ├── System.Security.Claims.dll
│ │ │ ├── System.Security.Cryptography.Algorithms.dll
│ │ │ ├── System.Security.Cryptography.Cng.dll
│ │ │ ├── System.Security.Cryptography.Csp.dll
│ │ │ ├── System.Security.Cryptography.DeriveBytes.dll
│ │ │ ├── System.Security.Cryptography.Encoding.dll
│ │ │ ├── System.Security.Cryptography.Encryption.Aes.dll
│ │ │ ├── System.Security.Cryptography.Encryption.ECDiffieHellman.dll
│ │ │ ├── System.Security.Cryptography.Encryption.ECDsa.dll
│ │ │ ├── System.Security.Cryptography.Encryption.dll
│ │ │ ├── System.Security.Cryptography.Hashing.Algorithms.dll
│ │ │ ├── System.Security.Cryptography.Hashing.dll
│ │ │ ├── System.Security.Cryptography.OpenSsl.dll
│ │ │ ├── System.Security.Cryptography.Pkcs.dll
│ │ │ ├── System.Security.Cryptography.Primitives.dll
│ │ │ ├── System.Security.Cryptography.ProtectedData.dll
│ │ │ ├── System.Security.Cryptography.RSA.dll
│ │ │ ├── System.Security.Cryptography.RandomNumberGenerator.dll
│ │ │ ├── System.Security.Cryptography.X509Certificates.dll
│ │ │ ├── System.Security.Principal.Windows.dll
│ │ │ ├── System.Security.Principal.dll
│ │ │ ├── System.Security.SecureString.dll
│ │ │ ├── System.ServiceProcess.ServiceController.dll
│ │ │ ├── System.Text.Encoding.CodePages.dll
│ │ │ ├── System.Text.Encoding.Extensions.dll
│ │ │ ├── System.Text.Encoding.dll
│ │ │ ├── System.Text.RegularExpressions.dll
│ │ │ ├── System.Threading.AccessControl.dll
│ │ │ ├── System.Threading.Overlapped.dll
│ │ │ ├── System.Threading.Tasks.Extensions.dll
│ │ │ ├── System.Threading.Tasks.Parallel.dll
│ │ │ ├── System.Threading.Tasks.dll
│ │ │ ├── System.Threading.Thread.dll
│ │ │ ├── System.Threading.ThreadPool.dll
│ │ │ ├── System.Threading.Timer.dll
│ │ │ ├── System.Threading.dll
│ │ │ ├── System.ValueTuple.dll
│ │ │ ├── System.Xml.ReaderWriter.dll
│ │ │ ├── System.Xml.XDocument.dll
│ │ │ ├── System.Xml.XPath.XDocument.dll
│ │ │ ├── System.Xml.XPath.XmlDocument.dll
│ │ │ ├── System.Xml.XPath.dll
│ │ │ ├── System.Xml.XmlDocument.dll
│ │ │ ├── System.Xml.XmlSerializer.dll
│ │ │ ├── System.Xml.Xsl.Primitives.dll
│ │ │ └── netstandard.dll
│ │ ├── I18N.CJK.dll
│ │ ├── I18N.MidEast.dll
│ │ ├── I18N.Other.dll
│ │ ├── I18N.Rare.dll
│ │ ├── I18N.West.dll
│ │ ├── I18N.dll
│ │ ├── Microsoft.CSharp.dll
│ │ ├── Mono.Security.dll
│ │ ├── System.ComponentModel.Composition.dll
│ │ ├── System.ComponentModel.DataAnnotations.dll
│ │ ├── System.Core.dll
│ │ ├── System.Data.DataSetExtensions.dll
│ │ ├── System.Data.dll
│ │ ├── System.IO.Compression.FileSystem.dll
│ │ ├── System.IO.Compression.dll
│ │ ├── System.Net.Http.dll
│ │ ├── System.Numerics.Vectors.dll
│ │ ├── System.Numerics.dll
│ │ ├── System.Runtime.CompilerServices.Unsafe.dll
│ │ ├── System.Runtime.Serialization.dll
│ │ ├── System.Security.dll
│ │ ├── System.ServiceModel.Internals.dll
│ │ ├── System.Transactions.dll
│ │ ├── System.Xml.Linq.dll
│ │ ├── System.Xml.dll
│ │ ├── System.dll
│ │ └── mscorlib.dll
│ ├── framework
│ │ ├── System.Net.Http.WebAssemblyHttpHandler.dll
│ │ ├── WebAssembly.Bindings.dll
│ │ └── WebAssembly.Net.WebSockets.dll
│ └── wasm
│ │ ├── dotnet.js
│ │ └── dotnet.wasm
└── tools
│ └── binaries
│ └── monolinker
│ ├── Mono.Cecil.dll
│ ├── monolinker.exe
│ └── monolinker.runtimeconfig.json
└── TimeZoneData
├── Program.cs
├── README.md
├── TimeZoneData.csproj
├── _._
├── dotnet.timezones.dat
└── run.sh
/.editorconfig:
--------------------------------------------------------------------------------
1 | # All Files
2 | [*]
3 | charset = utf-8
4 | end_of_line = crlf
5 | indent_style = space
6 | indent_size = 4
7 | insert_final_newline = false
8 | trim_trailing_whitespace = true
9 |
10 | # Solution Files
11 | [*.sln]
12 | indent_style = tab
13 |
14 | # Markdown Files
15 | [*.md]
16 | trim_trailing_whitespace = false
17 |
18 | # Web Files
19 | [*.{htm,html,js,ts,css,scss,less}]
20 | insert_final_newline = true
21 | indent_size = 2
22 |
23 | [*.{yml,json}]
24 | indent_size = 2
25 |
26 | [*.{xml,csproj,config,*proj,targets,props}]
27 | indent_size = 2
28 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Force LF for package-lock files - not all version of NPM detect line endings.
2 | package-lock.json text eol=lf
3 | # Force LF for scripts
4 | *.sh eol=lf
5 |
6 | # Use windows line endings in baselines to minimize churn to baseline files
7 | TestFiles/** text eol=crlf
8 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/do_not_log_issues.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: DO NOT LOG ISSUES HERE
3 | about: Log Blazor issues at https://github.com/dotnet/aspnetcore/issues/new/choose.
4 | ---
5 |
6 | Please do not log issues here. This repo is used only for Blazor infrastructure purposes.
7 |
8 | All Blazor code, features, and issues are tracked at https://github.com/dotnet/aspnetcore.
9 |
10 | You can use the `feature-components` label to filter issues: https://github.com/dotnet/aspnetcore/issues?q=is%3Aissue+is%3Aopen+label%3Afeature-components
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vs/
2 | bin/
3 | obj/
4 | *.user
5 | artifacts/
6 | .vscode/
7 | .dotnet/
8 | *.binlog
9 |
--------------------------------------------------------------------------------
/Blazor.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30114.105
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B867E038-B3CE-43E3-9292-61568C46CDEB}"
7 | EndProject
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor.BuildTools", "src\Microsoft.AspNetCore.Blazor.BuildTools\Microsoft.AspNetCore.Blazor.BuildTools.csproj", "{AC3B5C2C-B935-4A64-8CDB-B8217EE26DC6}"
9 | EndProject
10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.WebAssembly.Runtime", "src\Microsoft.AspNetCore.Components.WebAssembly.Runtime\Microsoft.AspNetCore.Components.WebAssembly.Runtime.csproj", "{E74CC0F5-876C-4DB3-A01F-5D81D5772440}"
11 | EndProject
12 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.WebAssembly.DebugProxy", "src\Microsoft.AspNetCore.Components.WebAssembly.DebugProxy\Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.csproj", "{695F29C8-65CC-4721-AA03-C225084E6C00}"
13 | EndProject
14 | Global
15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
16 | Debug|Any CPU = Debug|Any CPU
17 | Release|Any CPU = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {AC3B5C2C-B935-4A64-8CDB-B8217EE26DC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {AC3B5C2C-B935-4A64-8CDB-B8217EE26DC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {AC3B5C2C-B935-4A64-8CDB-B8217EE26DC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {AC3B5C2C-B935-4A64-8CDB-B8217EE26DC6}.Release|Any CPU.Build.0 = Release|Any CPU
24 | {E74CC0F5-876C-4DB3-A01F-5D81D5772440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
25 | {E74CC0F5-876C-4DB3-A01F-5D81D5772440}.Debug|Any CPU.Build.0 = Debug|Any CPU
26 | {E74CC0F5-876C-4DB3-A01F-5D81D5772440}.Release|Any CPU.ActiveCfg = Release|Any CPU
27 | {E74CC0F5-876C-4DB3-A01F-5D81D5772440}.Release|Any CPU.Build.0 = Release|Any CPU
28 | {695F29C8-65CC-4721-AA03-C225084E6C00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29 | {695F29C8-65CC-4721-AA03-C225084E6C00}.Debug|Any CPU.Build.0 = Debug|Any CPU
30 | {695F29C8-65CC-4721-AA03-C225084E6C00}.Release|Any CPU.ActiveCfg = Release|Any CPU
31 | {695F29C8-65CC-4721-AA03-C225084E6C00}.Release|Any CPU.Build.0 = Release|Any CPU
32 | EndGlobalSection
33 | GlobalSection(SolutionProperties) = preSolution
34 | HideSolutionNode = FALSE
35 | EndGlobalSection
36 | GlobalSection(NestedProjects) = preSolution
37 | {AC3B5C2C-B935-4A64-8CDB-B8217EE26DC6} = {B867E038-B3CE-43E3-9292-61568C46CDEB}
38 | {E74CC0F5-876C-4DB3-A01F-5D81D5772440} = {B867E038-B3CE-43E3-9292-61568C46CDEB}
39 | EndGlobalSection
40 | GlobalSection(ExtensibilityGlobals) = postSolution
41 | SolutionGuid = {504DA352-6788-4DC0-8705-82167E72A4D3}
42 | EndGlobalSection
43 | EndGlobal
44 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
4 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Please see https://github.com/dotnet/aspnetcore/blob/master/CONTRIBUTING.md
2 |
--------------------------------------------------------------------------------
/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Microsoft ASP.NET Core Blazor
6 | Apache-2.0
7 | https://asp.net/
8 | https://github.com/dotnet/blazor
9 | git
10 | MicrosoftAspNetCore
11 | true
12 | 7.3
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Directory.Build.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/NuGet.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # *Blazor moved to the ASP.NET Core repo*
2 |
3 | The [sources](https://github.com/dotnet/aspnetcore/tree/master/src/Components) and [issues](https://github.com/dotnet/aspnetcore/issues?q=is%3Aissue+is%3Aopen+label%3Afeature-components) for Blazor have moved to the [ASP.NET Core repo](https://github.com/dotnet/aspnetcore).
4 |
5 | New issues and PRs should be posted at the [ASP.NET Core repo](https://github.com/dotnet/aspnetcore).
6 |
7 | Please don't post new issues or PRs in this repo.
8 |
9 | For information about using Blazor, see [blazor.net](https://blazor.net).
10 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | The .NET Core and ASP.NET Core support policy, including supported versions can be found at the [.NET Core Support Policy Page](https://dotnet.microsoft.com/platform/support/policy/dotnet-core).
6 |
7 | ## Reporting a Vulnerability
8 |
9 | Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC), either by emailing secure@microsoft.com or via the portal at https://msrc.microsoft.com.
10 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your
11 | original message. Further information, including the MSRC PGP key, can be found in the [MSRC Report an Issue FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue).
12 |
13 | Reports via MSRC may qualify for the .NET Core Bug Bounty. Details of the .NET Core Bug Bounty including terms and conditions are at [https://aka.ms/corebounty](https://aka.ms/corebounty).
14 |
15 | Please do not open issues for anything you think might have a security implication.
--------------------------------------------------------------------------------
/UpgradeMono.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0UpgradeMono.ps1""" %*"
3 | exit /b %ErrorLevel%
4 |
--------------------------------------------------------------------------------
/UpgradeMono.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding()]
2 | param(
3 | [Parameter(Mandatory=$true)] [String] $MonoRootDir
4 | )
5 |
6 | # Verify the new binaries can be found at the expected paths
7 | $inputWasmDir = Join-Path -Path $MonoRootDir -ChildPath "builds\release"
8 | $inputBclDir = Join-Path -Path $MonoRootDir -ChildPath "wasm-bcl\wasm"
9 | $inputBclFacadesDir = Join-Path -Path $inputBclDir -ChildPath "Facades"
10 | $inputFrameworkDir = Join-Path -Path $MonoRootDir -ChildPath "framework"
11 | $inputLinkerDir = Join-Path -Path $MonoRootDir -ChildPath "wasm-bcl\wasm_tools"
12 |
13 | foreach ($dirToCheck in ($MonoRootDir, $inputWasmDir, $inputBclDir, $inputBclFacadesDir, $inputFrameworkDir, $inputLinkerDir)) {
14 | if (-not (Test-Path -LiteralPath $dirToCheck)) {
15 | Write-Error -Message "Directory '$dirToCheck' not found." -ErrorAction Stop
16 | }
17 | }
18 |
19 | # Delete old binaries
20 | $outputRoot = Join-Path -Path $PSScriptRoot -ChildPath "src\Microsoft.AspNetCore.Components.WebAssembly.Runtime\incoming"
21 | if (-not (Test-Path -LiteralPath $outputRoot)) {
22 | Write-Error -Message "Directory '$outputRoot' not found." -ErrorAction Stop
23 | }
24 | Write-Host "Deleting existing Mono binaries from '$outputRoot'..."
25 | Remove-Item -Recurse -Force $outputRoot
26 |
27 | # Copy new binaries
28 | $outputWasmDir = Join-Path -Path $outputRoot -ChildPath wasm
29 | $outputBclDir = Join-Path -Path $outputRoot -ChildPath bcl
30 | $outputBclFacadesDir = Join-Path -Path $outputBclDir -ChildPath Facades
31 | $outputFrameworkDir = Join-Path -Path $outputRoot -ChildPath framework
32 | $outputLinkerDir = Join-Path -Path $outputRoot -ChildPath "..\tools\binaries\monolinker"
33 |
34 | Write-Host "Copying in new Mono binaries from '$MonoRootDir'..."
35 | New-Item -Force -ItemType "directory" $outputWasmDir | Out-Null
36 | Copy-Item "$inputWasmDir\dotnet.wasm" -Destination $outputWasmDir
37 | Copy-Item "$inputWasmDir\dotnet.js" -Destination $outputWasmDir
38 |
39 | New-Item -Force -ItemType "directory" $outputBclDir | Out-Null
40 | Copy-Item "$inputBclDir\*.dll" -Destination $outputBclDir
41 | Remove-Item "$outputBclDir\nunitlite.dll" # Not needed
42 |
43 | New-Item -Force -ItemType "directory" $outputBclFacadesDir | Out-Null
44 | Copy-Item "$inputBclFacadesDir\*.dll" -Destination $outputBclFacadesDir
45 |
46 | New-Item -Force -ItemType "directory" $outputFrameworkDir | Out-Null
47 | Copy-Item "$inputFrameworkDir\*.dll" -Destination $outputFrameworkDir
48 |
49 | # We leave the existing linker dir in place, because we don't want to remove the .runtimeconfig.json file
50 | Copy-Item "$inputLinkerDir\monolinker.exe" -Destination $outputLinkerDir
51 | Copy-Item "$inputLinkerDir\Mono.Cecil.dll" -Destination $outputLinkerDir
52 |
--------------------------------------------------------------------------------
/build.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*"
3 | exit /b %ErrorLevel%
4 |
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 |
5 | # resolve $SOURCE until the file is no longer a symlink
6 | while [[ -h $source ]]; do
7 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
8 | source="$(readlink "$source")"
9 |
10 | # if $source was a relative symlink, we need to resolve it relative to the path where the
11 | # symlink file was located
12 | [[ $source != /* ]] && source="$scriptroot/$source"
13 | done
14 |
15 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
16 | "$scriptroot/eng/common/build.sh" --build --restore --pack $@
17 |
--------------------------------------------------------------------------------
/eng/Version.Details.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | https://github.com/dotnet/arcade
8 | 251249a04a9686ca2660e2acaa3094446a48f10d
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/eng/Versions.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | 3.2.0
4 | rc1
5 | release
6 |
7 |
8 |
--------------------------------------------------------------------------------
/eng/common/CIBuild.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
--------------------------------------------------------------------------------
/eng/common/PSScriptAnalyzerSettings.psd1:
--------------------------------------------------------------------------------
1 | @{
2 | IncludeRules=@('PSAvoidUsingCmdletAliases',
3 | 'PSAvoidUsingWMICmdlet',
4 | 'PSAvoidUsingPositionalParameters',
5 | 'PSAvoidUsingInvokeExpression',
6 | 'PSUseDeclaredVarsMoreThanAssignments',
7 | 'PSUseCmdletCorrectly',
8 | 'PSStandardDSCFunctionsInResource',
9 | 'PSUseIdenticalMandatoryParametersForDSC',
10 | 'PSUseIdenticalParametersForDSC')
11 | }
--------------------------------------------------------------------------------
/eng/common/README.md:
--------------------------------------------------------------------------------
1 | # Don't touch this folder
2 |
3 | uuuuuuuuuuuuuuuuuuuu
4 | u" uuuuuuuuuuuuuuuuuu "u
5 | u" u$$$$$$$$$$$$$$$$$$$$u "u
6 | u" u$$$$$$$$$$$$$$$$$$$$$$$$u "u
7 | u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
8 | u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
9 | u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
10 | $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
11 | $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
12 | $ $$$" ... "$... ...$" ... "$$$ ... "$$$ $
13 | $ $$$u `"$$$$$$$ $$$ $$$$$ $$ $$$ $$$ $
14 | $ $$$$$$uu "$$$$ $$$ $$$$$ $$ """ u$$$ $
15 | $ $$$""$$$ $$$$ $$$u "$$$" u$$ $$$$$$$$ $
16 | $ $$$$....,$$$$$..$$$$$....,$$$$..$$$$$$$$ $
17 | $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
18 | "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
19 | "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
20 | "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
21 | "u "$$$$$$$$$$$$$$$$$$$$$$$$" u"
22 | "u "$$$$$$$$$$$$$$$$$$$$" u"
23 | "u """""""""""""""""" u"
24 | """"""""""""""""""""
25 |
26 | !!! Changes made in this directory are subject to being overwritten by automation !!!
27 |
28 | The files in this directory are shared by all Arcade repos and managed by automation. If you need to make changes to these files, open an issue or submit a pull request to https://github.com/dotnet/arcade first.
29 |
--------------------------------------------------------------------------------
/eng/common/SigningValidation.proj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
18 |
19 | netcoreapp2.1
20 |
21 |
22 |
25 |
26 |
27 |
28 |
29 | $(NuGetPackageRoot)Microsoft.DotNet.SignCheck\$(SignCheckVersion)\tools\Microsoft.DotNet.SignCheck.exe
30 |
31 | $(PackageBasePath)
32 | signcheck.log
33 | signcheck.errors.log
34 | signcheck.exclusions.txt
35 |
36 |
37 |
38 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
60 |
61 |
64 |
69 |
70 |
73 |
74 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/eng/common/cibuild.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 |
5 | # resolve $SOURCE until the file is no longer a symlink
6 | while [[ -h $source ]]; do
7 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
8 | source="$(readlink "$source")"
9 |
10 | # if $source was a relative symlink, we need to resolve it relative to the path where
11 | # the symlink file was located
12 | [[ $source != /* ]] && source="$scriptroot/$source"
13 | done
14 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
15 |
16 | . "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@
--------------------------------------------------------------------------------
/eng/common/cross/android/arm/toolchain.cmake:
--------------------------------------------------------------------------------
1 | set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
2 | set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
3 | set(CLR_CMAKE_PLATFORM_ANDROID "Android")
4 |
5 | set(CMAKE_SYSTEM_NAME Linux)
6 | set(CMAKE_SYSTEM_VERSION 1)
7 | set(CMAKE_SYSTEM_PROCESSOR arm)
8 |
9 | ## Specify the toolchain
10 | set(TOOLCHAIN "arm-linux-androideabi")
11 | set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
12 | set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
13 |
14 | find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
15 | find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
16 | find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
17 | find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
18 | find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
19 | find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
20 | find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
21 |
22 | add_compile_options(--sysroot=${CROSS_ROOTFS})
23 | add_compile_options(-fPIE)
24 | add_compile_options(-mfloat-abi=soft)
25 | include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/)
26 | include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/arm-linux-androideabi/)
27 |
28 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
29 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
30 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
31 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
32 |
33 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
34 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
35 | set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
36 |
37 | set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
38 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
39 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
40 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
41 | set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
42 |
--------------------------------------------------------------------------------
/eng/common/cross/android/arm64/toolchain.cmake:
--------------------------------------------------------------------------------
1 | set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
2 | set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
3 | set(CLR_CMAKE_PLATFORM_ANDROID "Android")
4 |
5 | set(CMAKE_SYSTEM_NAME Linux)
6 | set(CMAKE_SYSTEM_VERSION 1)
7 | set(CMAKE_SYSTEM_PROCESSOR aarch64)
8 |
9 | ## Specify the toolchain
10 | set(TOOLCHAIN "aarch64-linux-android")
11 | set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
12 | set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
13 |
14 | find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
15 | find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
16 | find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
17 | find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
18 | find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
19 | find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
20 | find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
21 |
22 | add_compile_options(--sysroot=${CROSS_ROOTFS})
23 | add_compile_options(-fPIE)
24 |
25 | ## Needed for Android or bionic specific conditionals
26 | add_compile_options(-D__ANDROID__)
27 | add_compile_options(-D__BIONIC__)
28 |
29 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
30 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
31 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
32 | set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
33 |
34 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
35 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
36 | set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
37 |
38 | set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
39 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
40 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
41 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
42 | set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
43 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.bionic:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.jessie:
--------------------------------------------------------------------------------
1 | # Debian (sid) # UNSTABLE
2 | deb http://ftp.debian.org/debian/ sid main contrib non-free
3 | deb-src http://ftp.debian.org/debian/ sid main contrib non-free
4 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.trusty:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.xenial:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.zesty:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/trusty-lttng-2.4.patch:
--------------------------------------------------------------------------------
1 | From e72c9d7ead60e3317bd6d1fade995c07021c947b Mon Sep 17 00:00:00 2001
2 | From: Mathieu Desnoyers
3 | Date: Thu, 7 May 2015 13:25:04 -0400
4 | Subject: [PATCH] Fix: building probe providers with C++ compiler
5 |
6 | Robert Daniels wrote:
7 | > > I'm attempting to use lttng userspace tracing with a C++ application
8 | > > on an ARM platform. I'm using GCC 4.8.4 on Linux 3.14 with the 2.6
9 | > > release of lttng. I've compiled lttng-modules, lttng-ust, and
10 | > > lttng-tools and have been able to get a simple test working with C
11 | > > code. When I attempt to run the hello.cxx test on my target it will
12 | > > segfault.
13 | >
14 | >
15 | > I spent a little time digging into this issue and finally discovered the
16 | > cause of my segfault with ARM C++ tracepoints.
17 | >
18 | > There is a struct called 'lttng_event' in ust-events.h which contains an
19 | > empty union 'u'. This was the cause of my issue. Under C, this empty union
20 | > compiles to a zero byte member while under C++ it compiles to a one byte
21 | > member, and in my case was four-byte aligned which caused my C++ code to
22 | > have the 'cds_list_head node' offset incorrectly by four bytes. This lead
23 | > to an incorrect linked list structure which caused my issue.
24 | >
25 | > Since this union is empty, I simply removed it from the struct and everything
26 | > worked correctly.
27 | >
28 | > I don't know the history or purpose behind this empty union so I'd like to
29 | > know if this is a safe fix. If it is I can submit a patch with the union
30 | > removed.
31 |
32 | That's a very nice catch!
33 |
34 | We do not support building tracepoint probe provider with
35 | g++ yet, as stated in lttng-ust(3):
36 |
37 | "- Note for C++ support: although an application instrumented with
38 | tracepoints can be compiled with g++, tracepoint probes should be
39 | compiled with gcc (only tested with gcc so far)."
40 |
41 | However, if it works fine with this fix, then I'm tempted to take it,
42 | especially because removing the empty union does not appear to affect
43 | the layout of struct lttng_event as seen from liblttng-ust, which must
44 | be compiled with a C compiler, and from probe providers compiled with
45 | a C compiler. So all we are changing is the layout of a probe provider
46 | compiled with a C++ compiler, which is anyway buggy at the moment,
47 | because it is not compatible with the layout expected by liblttng-ust
48 | compiled with a C compiler.
49 |
50 | Reported-by: Robert Daniels
51 | Signed-off-by: Mathieu Desnoyers
52 | ---
53 | include/lttng/ust-events.h | 2 --
54 | 1 file changed, 2 deletions(-)
55 |
56 | diff --git a/usr/include/lttng/ust-events.h b/usr/include/lttng/ust-events.h
57 | index 328a875..3d7a274 100644
58 | --- a/usr/include/lttng/ust-events.h
59 | +++ b/usr/include/lttng/ust-events.h
60 | @@ -407,8 +407,6 @@ struct lttng_event {
61 | void *_deprecated1;
62 | struct lttng_ctx *ctx;
63 | enum lttng_ust_instrumentation instrumentation;
64 | - union {
65 | - } u;
66 | struct cds_list_head node; /* Event list in session */
67 | struct cds_list_head _deprecated2;
68 | void *_deprecated3;
69 | --
70 | 2.7.4
71 |
72 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/trusty.patch:
--------------------------------------------------------------------------------
1 | diff -u -r a/usr/include/urcu/uatomic/generic.h b/usr/include/urcu/uatomic/generic.h
2 | --- a/usr/include/urcu/uatomic/generic.h 2014-03-28 06:04:42.000000000 +0900
3 | +++ b/usr/include/urcu/uatomic/generic.h 2017-02-13 10:35:21.189927116 +0900
4 | @@ -65,17 +65,17 @@
5 | switch (len) {
6 | #ifdef UATOMIC_HAS_ATOMIC_BYTE
7 | case 1:
8 | - return __sync_val_compare_and_swap_1(addr, old, _new);
9 | + return __sync_val_compare_and_swap_1((uint8_t *) addr, old, _new);
10 | #endif
11 | #ifdef UATOMIC_HAS_ATOMIC_SHORT
12 | case 2:
13 | - return __sync_val_compare_and_swap_2(addr, old, _new);
14 | + return __sync_val_compare_and_swap_2((uint16_t *) addr, old, _new);
15 | #endif
16 | case 4:
17 | - return __sync_val_compare_and_swap_4(addr, old, _new);
18 | + return __sync_val_compare_and_swap_4((uint32_t *) addr, old, _new);
19 | #if (CAA_BITS_PER_LONG == 64)
20 | case 8:
21 | - return __sync_val_compare_and_swap_8(addr, old, _new);
22 | + return __sync_val_compare_and_swap_8((uint64_t *) addr, old, _new);
23 | #endif
24 | }
25 | _uatomic_link_error();
26 | @@ -100,20 +100,20 @@
27 | switch (len) {
28 | #ifdef UATOMIC_HAS_ATOMIC_BYTE
29 | case 1:
30 | - __sync_and_and_fetch_1(addr, val);
31 | + __sync_and_and_fetch_1((uint8_t *) addr, val);
32 | return;
33 | #endif
34 | #ifdef UATOMIC_HAS_ATOMIC_SHORT
35 | case 2:
36 | - __sync_and_and_fetch_2(addr, val);
37 | + __sync_and_and_fetch_2((uint16_t *) addr, val);
38 | return;
39 | #endif
40 | case 4:
41 | - __sync_and_and_fetch_4(addr, val);
42 | + __sync_and_and_fetch_4((uint32_t *) addr, val);
43 | return;
44 | #if (CAA_BITS_PER_LONG == 64)
45 | case 8:
46 | - __sync_and_and_fetch_8(addr, val);
47 | + __sync_and_and_fetch_8((uint64_t *) addr, val);
48 | return;
49 | #endif
50 | }
51 | @@ -139,20 +139,20 @@
52 | switch (len) {
53 | #ifdef UATOMIC_HAS_ATOMIC_BYTE
54 | case 1:
55 | - __sync_or_and_fetch_1(addr, val);
56 | + __sync_or_and_fetch_1((uint8_t *) addr, val);
57 | return;
58 | #endif
59 | #ifdef UATOMIC_HAS_ATOMIC_SHORT
60 | case 2:
61 | - __sync_or_and_fetch_2(addr, val);
62 | + __sync_or_and_fetch_2((uint16_t *) addr, val);
63 | return;
64 | #endif
65 | case 4:
66 | - __sync_or_and_fetch_4(addr, val);
67 | + __sync_or_and_fetch_4((uint32_t *) addr, val);
68 | return;
69 | #if (CAA_BITS_PER_LONG == 64)
70 | case 8:
71 | - __sync_or_and_fetch_8(addr, val);
72 | + __sync_or_and_fetch_8((uint64_t *) addr, val);
73 | return;
74 | #endif
75 | }
76 | @@ -180,17 +180,17 @@
77 | switch (len) {
78 | #ifdef UATOMIC_HAS_ATOMIC_BYTE
79 | case 1:
80 | - return __sync_add_and_fetch_1(addr, val);
81 | + return __sync_add_and_fetch_1((uint8_t *) addr, val);
82 | #endif
83 | #ifdef UATOMIC_HAS_ATOMIC_SHORT
84 | case 2:
85 | - return __sync_add_and_fetch_2(addr, val);
86 | + return __sync_add_and_fetch_2((uint16_t *) addr, val);
87 | #endif
88 | case 4:
89 | - return __sync_add_and_fetch_4(addr, val);
90 | + return __sync_add_and_fetch_4((uint32_t *) addr, val);
91 | #if (CAA_BITS_PER_LONG == 64)
92 | case 8:
93 | - return __sync_add_and_fetch_8(addr, val);
94 | + return __sync_add_and_fetch_8((uint64_t *) addr, val);
95 | #endif
96 | }
97 | _uatomic_link_error();
98 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.bionic:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.buster:
--------------------------------------------------------------------------------
1 | deb http://deb.debian.org/debian buster main
2 | deb-src http://deb.debian.org/debian buster main
3 |
4 | deb http://deb.debian.org/debian-security/ buster/updates main
5 | deb-src http://deb.debian.org/debian-security/ buster/updates main
6 |
7 | deb http://deb.debian.org/debian buster-updates main
8 | deb-src http://deb.debian.org/debian buster-updates main
9 |
10 | deb http://deb.debian.org/debian buster-backports main contrib non-free
11 | deb-src http://deb.debian.org/debian buster-backports main contrib non-free
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.stretch:
--------------------------------------------------------------------------------
1 | deb http://deb.debian.org/debian stretch main
2 | deb-src http://deb.debian.org/debian stretch main
3 |
4 | deb http://deb.debian.org/debian-security/ stretch/updates main
5 | deb-src http://deb.debian.org/debian-security/ stretch/updates main
6 |
7 | deb http://deb.debian.org/debian stretch-updates main
8 | deb-src http://deb.debian.org/debian stretch-updates main
9 |
10 | deb http://deb.debian.org/debian stretch-backports main contrib non-free
11 | deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
12 |
13 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.trusty:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.xenial:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.zesty:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/armel/sources.list.jessie:
--------------------------------------------------------------------------------
1 | # Debian (jessie) # Stable
2 | deb http://ftp.debian.org/debian/ jessie main contrib non-free
3 | deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
4 |
--------------------------------------------------------------------------------
/eng/common/cross/armel/tizen-build-rootfs.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -e
3 |
4 | __ARM_SOFTFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
5 | __TIZEN_CROSSDIR="$__ARM_SOFTFP_CrossDir/tizen"
6 |
7 | if [[ -z "$ROOTFS_DIR" ]]; then
8 | echo "ROOTFS_DIR is not defined."
9 | exit 1;
10 | fi
11 |
12 | # Clean-up (TODO-Cleanup: We may already delete $ROOTFS_DIR at ./cross/build-rootfs.sh.)
13 | # hk0110
14 | if [ -d "$ROOTFS_DIR" ]; then
15 | umount $ROOTFS_DIR/*
16 | rm -rf $ROOTFS_DIR
17 | fi
18 |
19 | TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
20 | mkdir -p $TIZEN_TMP_DIR
21 |
22 | # Download files
23 | echo ">>Start downloading files"
24 | VERBOSE=1 $__ARM_SOFTFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
25 | echo "<>Start constructing Tizen rootfs"
28 | TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
29 | cd $ROOTFS_DIR
30 | for f in $TIZEN_RPM_FILES; do
31 | rpm2cpio $f | cpio -idm --quiet
32 | done
33 | echo "<>Start configuring Tizen rootfs"
40 | rm ./usr/lib/libunwind.so
41 | ln -s libunwind.so.8 ./usr/lib/libunwind.so
42 | ln -sfn asm-arm ./usr/include/asm
43 | patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
44 | echo "< 0 ]]; do
9 | opt="$(echo "$1" | awk '{print tolower($0)}')"
10 | case "$opt" in
11 | --darcversion)
12 | darcVersion=$2
13 | shift
14 | ;;
15 | --versionendpoint)
16 | versionEndpoint=$2
17 | shift
18 | ;;
19 | --verbosity)
20 | verbosity=$2
21 | shift
22 | ;;
23 | --toolpath)
24 | toolpath=$2
25 | shift
26 | ;;
27 | *)
28 | echo "Invalid argument: $1"
29 | usage
30 | exit 1
31 | ;;
32 | esac
33 |
34 | shift
35 | done
36 |
37 | # resolve $source until the file is no longer a symlink
38 | while [[ -h "$source" ]]; do
39 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
40 | source="$(readlink "$source")"
41 | # if $source was a relative symlink, we need to resolve it relative to the path where the
42 | # symlink file was located
43 | [[ $source != /* ]] && source="$scriptroot/$source"
44 | done
45 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
46 |
47 | . "$scriptroot/tools.sh"
48 |
49 | if [ -z "$darcVersion" ]; then
50 | darcVersion=$(curl -X GET "$versionEndpoint" -H "accept: text/plain")
51 | fi
52 |
53 | function InstallDarcCli {
54 | local darc_cli_package_name="microsoft.dotnet.darc"
55 |
56 | InitializeDotNetCli
57 | local dotnet_root=$_InitializeDotNetCli
58 |
59 | if [ -z "$toolpath" ]; then
60 | local tool_list=$($dotnet_root/dotnet tool list -g)
61 | if [[ $tool_list = *$darc_cli_package_name* ]]; then
62 | echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g)
63 | fi
64 | else
65 | local tool_list=$($dotnet_root/dotnet tool list --tool-path "$toolpath")
66 | if [[ $tool_list = *$darc_cli_package_name* ]]; then
67 | echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name --tool-path "$toolpath")
68 | fi
69 | fi
70 |
71 | local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json"
72 |
73 | echo "Installing Darc CLI version $darcVersion..."
74 | echo "You may need to restart your command shell if this is the first dotnet tool you have installed."
75 | if [ -z "$toolpath" ]; then
76 | echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g)
77 | else
78 | echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath")
79 | fi
80 | }
81 |
82 | InstallDarcCli
83 |
--------------------------------------------------------------------------------
/eng/common/dotnet-install.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet-install.ps1""" %*"
--------------------------------------------------------------------------------
/eng/common/dotnet-install.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding(PositionalBinding=$false)]
2 | Param(
3 | [string] $verbosity = "minimal",
4 | [string] $architecture = "",
5 | [string] $version = "Latest",
6 | [string] $runtime = "dotnet",
7 | [string] $RuntimeSourceFeed = "",
8 | [string] $RuntimeSourceFeedKey = ""
9 | )
10 |
11 | . $PSScriptRoot\tools.ps1
12 |
13 | $dotnetRoot = Join-Path $RepoRoot ".dotnet"
14 |
15 | $installdir = $dotnetRoot
16 | try {
17 | if ($architecture -and $architecture.Trim() -eq "x86") {
18 | $installdir = Join-Path $installdir "x86"
19 | }
20 | InstallDotNet $installdir $version $architecture $runtime $true -RuntimeSourceFeed $RuntimeSourceFeed -RuntimeSourceFeedKey $RuntimeSourceFeedKey
21 | }
22 | catch {
23 | Write-Host $_
24 | Write-Host $_.Exception
25 | Write-Host $_.ScriptStackTrace
26 | ExitWithExitCode 1
27 | }
28 |
29 | ExitWithExitCode 0
30 |
--------------------------------------------------------------------------------
/eng/common/dotnet-install.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 | # resolve $source until the file is no longer a symlink
5 | while [[ -h "$source" ]]; do
6 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
7 | source="$(readlink "$source")"
8 | # if $source was a relative symlink, we need to resolve it relative to the path where the
9 | # symlink file was located
10 | [[ $source != /* ]] && source="$scriptroot/$source"
11 | done
12 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
13 |
14 | version='Latest'
15 | architecture=''
16 | runtime='dotnet'
17 | runtimeSourceFeed=''
18 | runtimeSourceFeedKey=''
19 | while [[ $# > 0 ]]; do
20 | opt="$(echo "$1" | awk '{print tolower($0)}')"
21 | case "$opt" in
22 | -version|-v)
23 | shift
24 | version="$1"
25 | ;;
26 | -architecture|-a)
27 | shift
28 | architecture="$1"
29 | ;;
30 | -runtime|-r)
31 | shift
32 | runtime="$1"
33 | ;;
34 | -runtimesourcefeed)
35 | shift
36 | runtimeSourceFeed="$1"
37 | ;;
38 | -runtimesourcefeedkey)
39 | shift
40 | runtimeSourceFeedKey="$1"
41 | ;;
42 | *)
43 | echo "Invalid argument: $1"
44 | exit 1
45 | ;;
46 | esac
47 | shift
48 | done
49 |
50 | . "$scriptroot/tools.sh"
51 | dotnetRoot="$repo_root/.dotnet"
52 | InstallDotNet $dotnetRoot $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || {
53 | local exit_code=$?
54 | echo "dotnet-install.sh failed (exit code '$exit_code')." >&2
55 | ExitWithExitCode $exit_code
56 | }
57 |
58 | ExitWithExitCode 0
59 |
--------------------------------------------------------------------------------
/eng/common/enable-cross-org-publishing.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [string] $token
3 | )
4 |
5 | Write-Host "##vso[task.setvariable variable=VSS_NUGET_ACCESSTOKEN]$token"
6 | Write-Host "##vso[task.setvariable variable=VSS_NUGET_URI_PREFIXES]https://dnceng.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/dnceng/;https://devdiv.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/devdiv/"
7 |
--------------------------------------------------------------------------------
/eng/common/helixpublish.proj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | msbuild
5 |
6 |
7 |
8 |
9 | %(Identity)
10 |
11 |
12 |
13 |
14 |
15 | $(WorkItemDirectory)
16 | $(WorkItemCommand)
17 | $(WorkItemTimeout)
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/eng/common/init-tools-native.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*"
3 | exit /b %ErrorLevel%
--------------------------------------------------------------------------------
/eng/common/internal/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/eng/common/internal/Tools.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | net472
6 | false
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | https://devdiv.pkgs.visualstudio.com/_packaging/dotnet-core-internal-tooling/nuget/v3/index.json;
18 |
19 |
20 | $(RestoreSources);
21 | https://devdiv.pkgs.visualstudio.com/_packaging/VS/nuget/v3/index.json;
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/eng/common/msbuild.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding(PositionalBinding=$false)]
2 | Param(
3 | [string] $verbosity = "minimal",
4 | [bool] $warnAsError = $true,
5 | [bool] $nodeReuse = $true,
6 | [switch] $ci,
7 | [switch] $prepareMachine,
8 | [Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs
9 | )
10 |
11 | . $PSScriptRoot\tools.ps1
12 |
13 | try {
14 | if ($ci) {
15 | $nodeReuse = $false
16 | }
17 |
18 | MSBuild @extraArgs
19 | }
20 | catch {
21 | Write-Host $_
22 | Write-Host $_.Exception
23 | Write-Host $_.ScriptStackTrace
24 | ExitWithExitCode 1
25 | }
26 |
27 | ExitWithExitCode 0
--------------------------------------------------------------------------------
/eng/common/msbuild.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 |
5 | # resolve $source until the file is no longer a symlink
6 | while [[ -h "$source" ]]; do
7 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
8 | source="$(readlink "$source")"
9 | # if $source was a relative symlink, we need to resolve it relative to the path where the
10 | # symlink file was located
11 | [[ $source != /* ]] && source="$scriptroot/$source"
12 | done
13 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
14 |
15 | verbosity='minimal'
16 | warn_as_error=true
17 | node_reuse=true
18 | prepare_machine=false
19 | extra_args=''
20 |
21 | while (($# > 0)); do
22 | lowerI="$(echo $1 | awk '{print tolower($0)}')"
23 | case $lowerI in
24 | --verbosity)
25 | verbosity=$2
26 | shift 2
27 | ;;
28 | --warnaserror)
29 | warn_as_error=$2
30 | shift 2
31 | ;;
32 | --nodereuse)
33 | node_reuse=$2
34 | shift 2
35 | ;;
36 | --ci)
37 | ci=true
38 | shift 1
39 | ;;
40 | --preparemachine)
41 | prepare_machine=true
42 | shift 1
43 | ;;
44 | *)
45 | extra_args="$extra_args $1"
46 | shift 1
47 | ;;
48 | esac
49 | done
50 |
51 | . "$scriptroot/tools.sh"
52 |
53 | if [[ "$ci" == true ]]; then
54 | node_reuse=false
55 | fi
56 |
57 | MSBuild $extra_args
58 | ExitWithExitCode 0
59 |
--------------------------------------------------------------------------------
/eng/common/native/install-cmake-test.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
5 |
6 | . $scriptroot/common-library.sh
7 |
8 | base_uri=
9 | install_path=
10 | version=
11 | clean=false
12 | force=false
13 | download_retries=5
14 | retry_wait_time_seconds=30
15 |
16 | while (($# > 0)); do
17 | lowerI="$(echo $1 | awk '{print tolower($0)}')"
18 | case $lowerI in
19 | --baseuri)
20 | base_uri=$2
21 | shift 2
22 | ;;
23 | --installpath)
24 | install_path=$2
25 | shift 2
26 | ;;
27 | --version)
28 | version=$2
29 | shift 2
30 | ;;
31 | --clean)
32 | clean=true
33 | shift 1
34 | ;;
35 | --force)
36 | force=true
37 | shift 1
38 | ;;
39 | --downloadretries)
40 | download_retries=$2
41 | shift 2
42 | ;;
43 | --retrywaittimeseconds)
44 | retry_wait_time_seconds=$2
45 | shift 2
46 | ;;
47 | --help)
48 | echo "Common settings:"
49 | echo " --baseuri Base file directory or Url wrom which to acquire tool archives"
50 | echo " --installpath Base directory to install native tool to"
51 | echo " --clean Don't install the tool, just clean up the current install of the tool"
52 | echo " --force Force install of tools even if they previously exist"
53 | echo " --help Print help and exit"
54 | echo ""
55 | echo "Advanced settings:"
56 | echo " --downloadretries Total number of retry attempts"
57 | echo " --retrywaittimeseconds Wait time between retry attempts in seconds"
58 | echo ""
59 | exit 0
60 | ;;
61 | esac
62 | done
63 |
64 | tool_name="cmake-test"
65 | tool_os=$(GetCurrentOS)
66 | tool_folder=$(echo $tool_os | awk '{print tolower($0)}')
67 | tool_arch="x86_64"
68 | tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch"
69 | tool_install_directory="$install_path/$tool_name/$version"
70 | tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name"
71 | shim_path="$install_path/$tool_name.sh"
72 | uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz"
73 |
74 | # Clean up tool and installers
75 | if [[ $clean = true ]]; then
76 | echo "Cleaning $tool_install_directory"
77 | if [[ -d $tool_install_directory ]]; then
78 | rm -rf $tool_install_directory
79 | fi
80 |
81 | echo "Cleaning $shim_path"
82 | if [[ -f $shim_path ]]; then
83 | rm -rf $shim_path
84 | fi
85 |
86 | tool_temp_path=$(GetTempPathFileName $uri)
87 | echo "Cleaning $tool_temp_path"
88 | if [[ -f $tool_temp_path ]]; then
89 | rm -rf $tool_temp_path
90 | fi
91 |
92 | exit 0
93 | fi
94 |
95 | # Install tool
96 | if [[ -f $tool_file_path ]] && [[ $force = false ]]; then
97 | echo "$tool_name ($version) already exists, skipping install"
98 | exit 0
99 | fi
100 |
101 | DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds
102 |
103 | if [[ $? != 0 ]]; then
104 | echo "Installation failed" >&2
105 | exit 1
106 | fi
107 |
108 | # Generate Shim
109 | # Always rewrite shims so that we are referencing the expected version
110 | NewScriptShim $shim_path $tool_file_path true
111 |
112 | if [[ $? != 0 ]]; then
113 | echo "Shim generation failed" >&2
114 | exit 1
115 | fi
116 |
117 | exit 0
--------------------------------------------------------------------------------
/eng/common/native/install-cmake.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
5 |
6 | . $scriptroot/common-library.sh
7 |
8 | base_uri=
9 | install_path=
10 | version=
11 | clean=false
12 | force=false
13 | download_retries=5
14 | retry_wait_time_seconds=30
15 |
16 | while (($# > 0)); do
17 | lowerI="$(echo $1 | awk '{print tolower($0)}')"
18 | case $lowerI in
19 | --baseuri)
20 | base_uri=$2
21 | shift 2
22 | ;;
23 | --installpath)
24 | install_path=$2
25 | shift 2
26 | ;;
27 | --version)
28 | version=$2
29 | shift 2
30 | ;;
31 | --clean)
32 | clean=true
33 | shift 1
34 | ;;
35 | --force)
36 | force=true
37 | shift 1
38 | ;;
39 | --downloadretries)
40 | download_retries=$2
41 | shift 2
42 | ;;
43 | --retrywaittimeseconds)
44 | retry_wait_time_seconds=$2
45 | shift 2
46 | ;;
47 | --help)
48 | echo "Common settings:"
49 | echo " --baseuri Base file directory or Url wrom which to acquire tool archives"
50 | echo " --installpath Base directory to install native tool to"
51 | echo " --clean Don't install the tool, just clean up the current install of the tool"
52 | echo " --force Force install of tools even if they previously exist"
53 | echo " --help Print help and exit"
54 | echo ""
55 | echo "Advanced settings:"
56 | echo " --downloadretries Total number of retry attempts"
57 | echo " --retrywaittimeseconds Wait time between retry attempts in seconds"
58 | echo ""
59 | exit 0
60 | ;;
61 | esac
62 | done
63 |
64 | tool_name="cmake"
65 | tool_os=$(GetCurrentOS)
66 | tool_folder=$(echo $tool_os | awk '{print tolower($0)}')
67 | tool_arch="x86_64"
68 | tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch"
69 | tool_install_directory="$install_path/$tool_name/$version"
70 | tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name"
71 | shim_path="$install_path/$tool_name.sh"
72 | uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz"
73 |
74 | # Clean up tool and installers
75 | if [[ $clean = true ]]; then
76 | echo "Cleaning $tool_install_directory"
77 | if [[ -d $tool_install_directory ]]; then
78 | rm -rf $tool_install_directory
79 | fi
80 |
81 | echo "Cleaning $shim_path"
82 | if [[ -f $shim_path ]]; then
83 | rm -rf $shim_path
84 | fi
85 |
86 | tool_temp_path=$(GetTempPathFileName $uri)
87 | echo "Cleaning $tool_temp_path"
88 | if [[ -f $tool_temp_path ]]; then
89 | rm -rf $tool_temp_path
90 | fi
91 |
92 | exit 0
93 | fi
94 |
95 | # Install tool
96 | if [[ -f $tool_file_path ]] && [[ $force = false ]]; then
97 | echo "$tool_name ($version) already exists, skipping install"
98 | exit 0
99 | fi
100 |
101 | DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds
102 |
103 | if [[ $? != 0 ]]; then
104 | echo "Installation failed" >&2
105 | exit 1
106 | fi
107 |
108 | # Generate Shim
109 | # Always rewrite shims so that we are referencing the expected version
110 | NewScriptShim $shim_path $tool_file_path true
111 |
112 | if [[ $? != 0 ]]; then
113 | echo "Shim generation failed" >&2
114 | exit 1
115 | fi
116 |
117 | exit 0
--------------------------------------------------------------------------------
/eng/common/post-build/darc-gather-drop.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [Parameter(Mandatory=$true)][int] $BarBuildId, # ID of the build which assets should be downloaded
3 | [Parameter(Mandatory=$true)][string] $DropLocation, # Where the assets should be downloaded to
4 | [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, # Token used to access Maestro API
5 | [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = "https://maestro-prod.westus2.cloudapp.azure.com", # Maestro API URL
6 | [Parameter(Mandatory=$false)][string] $MaestroApiVersion = "2019-01-16" # Version of Maestro API to use
7 | )
8 |
9 | . $PSScriptRoot\post-build-utils.ps1
10 |
11 | try {
12 | Write-Host "Installing DARC ..."
13 |
14 | . $PSScriptRoot\..\darc-init.ps1
15 | $exitCode = $LASTEXITCODE
16 |
17 | if ($exitCode -ne 0) {
18 | Write-PipelineTaskError "Something failed while running 'darc-init.ps1'. Check for errors above. Exiting now..."
19 | ExitWithExitCode $exitCode
20 | }
21 |
22 | # For now, only use a dry run.
23 | # Ideally we would change darc to enable a quick request that
24 | # would check whether the file exists that you can download it,
25 | # and that it won't conflict with other files.
26 | # https://github.com/dotnet/arcade/issues/3674
27 | # Right now we can't remove continue-on-error because we ocassionally will have
28 | # dependencies that have no associated builds (e.g. an old dependency).
29 | # We need to add an option to baseline specific dependencies away, or add them manually
30 | # to the BAR.
31 | darc gather-drop --non-shipping `
32 | --dry-run `
33 | --continue-on-error `
34 | --id $BarBuildId `
35 | --output-dir $DropLocation `
36 | --bar-uri $MaestroApiEndpoint `
37 | --password $MaestroApiAccessToken `
38 | --latest-location
39 | }
40 | catch {
41 | Write-Host $_
42 | Write-Host $_.Exception
43 | Write-Host $_.ScriptStackTrace
44 | ExitWithExitCode 1
45 | }
46 |
--------------------------------------------------------------------------------
/eng/common/post-build/nuget-validation.ps1:
--------------------------------------------------------------------------------
1 | # This script validates NuGet package metadata information using this
2 | # tool: https://github.com/NuGet/NuGetGallery/tree/jver-verify/src/VerifyMicrosoftPackage
3 |
4 | param(
5 | [Parameter(Mandatory=$true)][string] $PackagesPath, # Path to where the packages to be validated are
6 | [Parameter(Mandatory=$true)][string] $ToolDestinationPath # Where the validation tool should be downloaded to
7 | )
8 |
9 | . $PSScriptRoot\post-build-utils.ps1
10 |
11 | try {
12 | $url = "https://raw.githubusercontent.com/NuGet/NuGetGallery/jver-verify/src/VerifyMicrosoftPackage/verify.ps1"
13 |
14 | New-Item -ItemType "directory" -Path ${ToolDestinationPath} -Force
15 |
16 | Invoke-WebRequest $url -OutFile ${ToolDestinationPath}\verify.ps1
17 |
18 | & ${ToolDestinationPath}\verify.ps1 ${PackagesPath}\*.nupkg
19 | }
20 | catch {
21 | Write-PipelineTaskError "NuGet package validation failed. Please check error logs."
22 | Write-Host $_
23 | Write-Host $_.ScriptStackTrace
24 | ExitWithExitCode 1
25 | }
26 |
--------------------------------------------------------------------------------
/eng/common/post-build/promote-build.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [Parameter(Mandatory=$true)][int] $BuildId,
3 | [Parameter(Mandatory=$true)][int] $ChannelId,
4 | [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken,
5 | [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = "https://maestro-prod.westus2.cloudapp.azure.com",
6 | [Parameter(Mandatory=$false)][string] $MaestroApiVersion = "2019-01-16"
7 | )
8 |
9 | . $PSScriptRoot\post-build-utils.ps1
10 |
11 | try {
12 | # Check that the channel we are going to promote the build to exist
13 | $channelInfo = Get-MaestroChannel -ChannelId $ChannelId
14 |
15 | if (!$channelInfo) {
16 | Write-Host "Channel with BAR ID $ChannelId was not found in BAR!"
17 | ExitWithExitCode 1
18 | }
19 |
20 | # Get info about which channels the build has already been promoted to
21 | $buildInfo = Get-MaestroBuild -BuildId $BuildId
22 |
23 | if (!$buildInfo) {
24 | Write-Host "Build with BAR ID $BuildId was not found in BAR!"
25 | ExitWithExitCode 1
26 | }
27 |
28 | # Find whether the build is already assigned to the channel or not
29 | if ($buildInfo.channels) {
30 | foreach ($channel in $buildInfo.channels) {
31 | if ($channel.Id -eq $ChannelId) {
32 | Write-Host "The build with BAR ID $BuildId is already on channel $ChannelId!"
33 | ExitWithExitCode 0
34 | }
35 | }
36 | }
37 |
38 | Write-Host "Promoting build '$BuildId' to channel '$ChannelId'."
39 |
40 | Assign-BuildToChannel -BuildId $BuildId -ChannelId $ChannelId
41 |
42 | Write-Host "done."
43 | }
44 | catch {
45 | Write-Host "There was an error while trying to promote build '$BuildId' to channel '$ChannelId'"
46 | Write-Host $_
47 | Write-Host $_.ScriptStackTrace
48 | }
49 |
--------------------------------------------------------------------------------
/eng/common/post-build/setup-maestro-vars.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [Parameter(Mandatory=$true)][string] $ReleaseConfigsPath # Full path to ReleaseConfigs.txt asset
3 | )
4 |
5 | . $PSScriptRoot\post-build-utils.ps1
6 |
7 | try {
8 | $Content = Get-Content $ReleaseConfigsPath
9 |
10 | $BarId = $Content | Select -Index 0
11 |
12 | $Channels = ""
13 | $Content | Select -Index 1 | ForEach-Object { $Channels += "$_ ," }
14 |
15 | $IsStableBuild = $Content | Select -Index 2
16 |
17 | Write-PipelineSetVariable -Name 'BARBuildId' -Value $BarId
18 | Write-PipelineSetVariable -Name 'InitialChannels' -Value "$Channels"
19 | Write-PipelineSetVariable -Name 'IsStableBuild' -Value $IsStableBuild
20 | }
21 | catch {
22 | Write-Host $_
23 | Write-Host $_.Exception
24 | Write-Host $_.ScriptStackTrace
25 | ExitWithExitCode 1
26 | }
27 |
--------------------------------------------------------------------------------
/eng/common/post-build/trigger-subscriptions.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [Parameter(Mandatory=$true)][string] $SourceRepo,
3 | [Parameter(Mandatory=$true)][int] $ChannelId,
4 | [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken,
5 | [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = "https://maestro-prod.westus2.cloudapp.azure.com",
6 | [Parameter(Mandatory=$false)][string] $MaestroApiVersion = "2019-01-16"
7 | )
8 |
9 | . $PSScriptRoot\post-build-utils.ps1
10 |
11 | # Get all the $SourceRepo subscriptions
12 | $normalizedSourceRepo = $SourceRepo.Replace('dnceng@', '')
13 | $subscriptions = Get-MaestroSubscriptions -SourceRepository $normalizedSourceRepo -ChannelId $ChannelId
14 |
15 | if (!$subscriptions) {
16 | Write-Host "No subscriptions found for source repo '$normalizedSourceRepo' in channel '$ChannelId'"
17 | ExitWithExitCode 0
18 | }
19 |
20 | $subscriptionsToTrigger = New-Object System.Collections.Generic.List[string]
21 | $failedTriggeredSubscription = $false
22 |
23 | # Get all enabled subscriptions that need dependency flow on 'everyBuild'
24 | foreach ($subscription in $subscriptions) {
25 | if ($subscription.enabled -and $subscription.policy.updateFrequency -like 'everyBuild' -and $subscription.channel.id -eq $ChannelId) {
26 | Write-Host "Should trigger this subscription: $subscription.id"
27 | [void]$subscriptionsToTrigger.Add($subscription.id)
28 | }
29 | }
30 |
31 | foreach ($subscriptionToTrigger in $subscriptionsToTrigger) {
32 | try {
33 | Write-Host "Triggering subscription '$subscriptionToTrigger'."
34 |
35 | Trigger-Subscription -SubscriptionId $subscriptionToTrigger
36 |
37 | Write-Host "done."
38 | }
39 | catch
40 | {
41 | Write-Host "There was an error while triggering subscription '$subscriptionToTrigger'"
42 | Write-Host $_
43 | Write-Host $_.ScriptStackTrace
44 | $failedTriggeredSubscription = $true
45 | }
46 | }
47 |
48 | if ($subscriptionsToTrigger.Count -eq 0) {
49 | Write-Host "No subscription matched source repo '$normalizedSourceRepo' and channel ID '$ChannelId'."
50 | }
51 | elseif ($failedTriggeredSubscription) {
52 | Write-Host "At least one subscription failed to be triggered..."
53 | ExitWithExitCode 1
54 | }
55 | else {
56 | Write-Host "All subscriptions were triggered successfully!"
57 | }
58 |
--------------------------------------------------------------------------------
/eng/common/sdk-task.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding(PositionalBinding=$false)]
2 | Param(
3 | [string] $configuration = "Debug",
4 | [string] $task,
5 | [string] $verbosity = "minimal",
6 | [string] $msbuildEngine = $null,
7 | [switch] $restore,
8 | [switch] $prepareMachine,
9 | [switch] $help,
10 | [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
11 | )
12 |
13 | $ci = $true
14 | $binaryLog = $true
15 | $warnAsError = $true
16 |
17 | . $PSScriptRoot\tools.ps1
18 |
19 | function Print-Usage() {
20 | Write-Host "Common settings:"
21 | Write-Host " -task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)"
22 | Write-Host " -restore Restore dependencies"
23 | Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]"
24 | Write-Host " -help Print help and exit"
25 | Write-Host ""
26 |
27 | Write-Host "Advanced settings:"
28 | Write-Host " -prepareMachine Prepare machine for CI run"
29 | Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
30 | Write-Host ""
31 | Write-Host "Command line arguments not listed above are passed thru to msbuild."
32 | }
33 |
34 | function Build([string]$target) {
35 | $logSuffix = if ($target -eq "Execute") { "" } else { ".$target" }
36 | $log = Join-Path $LogDir "$task$logSuffix.binlog"
37 | $outputPath = Join-Path $ToolsetDir "$task\\"
38 |
39 | MSBuild $taskProject `
40 | /bl:$log `
41 | /t:$target `
42 | /p:Configuration=$configuration `
43 | /p:RepoRoot=$RepoRoot `
44 | /p:BaseIntermediateOutputPath=$outputPath `
45 | @properties
46 | }
47 |
48 | try {
49 | if ($help -or (($null -ne $properties) -and ($properties.Contains("/help") -or $properties.Contains("/?")))) {
50 | Print-Usage
51 | exit 0
52 | }
53 |
54 | if ($task -eq "") {
55 | Write-Host "Missing required parameter '-task '" -ForegroundColor Red
56 | Print-Usage
57 | ExitWithExitCode 1
58 | }
59 |
60 | $taskProject = GetSdkTaskProject $task
61 | if (!(Test-Path $taskProject)) {
62 | Write-Host "Unknown task: $task" -ForegroundColor Red
63 | ExitWithExitCode 1
64 | }
65 |
66 | if ($restore) {
67 | Build "Restore"
68 | }
69 |
70 | Build "Execute"
71 | }
72 | catch {
73 | Write-Host $_
74 | Write-Host $_.Exception
75 | Write-Host $_.ScriptStackTrace
76 | ExitWithExitCode 1
77 | }
78 |
79 | ExitWithExitCode 0
80 |
--------------------------------------------------------------------------------
/eng/common/sdl/NuGet.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/eng/common/sdl/extract-artifact-packages.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where artifact packages are stored
3 | [Parameter(Mandatory=$true)][string] $ExtractPath # Full path to directory where the packages will be extracted
4 | )
5 |
6 | $ErrorActionPreference = "Stop"
7 | Set-StrictMode -Version 2.0
8 |
9 | # `tools.ps1` checks $ci to perform some actions. Since the post-build
10 | # scripts don't necessarily execute in the same agent that run the
11 | # build.ps1/sh script this variable isn't automatically set.
12 | $ci = $true
13 | . $PSScriptRoot\..\tools.ps1
14 |
15 | $ExtractPackage = {
16 | param(
17 | [string] $PackagePath # Full path to a NuGet package
18 | )
19 |
20 | if (!(Test-Path $PackagePath)) {
21 | Write-PipelineTaskError "Input file does not exist: $PackagePath"
22 | ExitWithExitCode 1
23 | }
24 |
25 | $RelevantExtensions = @(".dll", ".exe", ".pdb")
26 | Write-Host -NoNewLine "Extracting" ([System.IO.Path]::GetFileName($PackagePath)) "... "
27 |
28 | $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath)
29 | $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId
30 |
31 | Add-Type -AssemblyName System.IO.Compression.FileSystem
32 |
33 | [System.IO.Directory]::CreateDirectory($ExtractPath);
34 |
35 | try {
36 | $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath)
37 |
38 | $zip.Entries |
39 | Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} |
40 | ForEach-Object {
41 | $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.Name
42 |
43 | [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true)
44 | }
45 | }
46 | catch {
47 |
48 | }
49 | finally {
50 | $zip.Dispose()
51 | }
52 | }
53 | function ExtractArtifacts {
54 | if (!(Test-Path $InputPath)) {
55 | Write-Host "Input Path does not exist: $InputPath"
56 | ExitWithExitCode 0
57 | }
58 | $Jobs = @()
59 | Get-ChildItem "$InputPath\*.nupkg" |
60 | ForEach-Object {
61 | $Jobs += Start-Job -ScriptBlock $ExtractPackage -ArgumentList $_.FullName
62 | }
63 |
64 | foreach ($Job in $Jobs) {
65 | Wait-Job -Id $Job.Id | Receive-Job
66 | }
67 | }
68 |
69 | try {
70 | Measure-Command { ExtractArtifacts }
71 | }
72 | catch {
73 | Write-Host $_
74 | Write-Host $_.Exception
75 | Write-Host $_.ScriptStackTrace
76 | ExitWithExitCode 1
77 | }
78 |
--------------------------------------------------------------------------------
/eng/common/sdl/init-sdl.ps1:
--------------------------------------------------------------------------------
1 | Param(
2 | [string] $GuardianCliLocation,
3 | [string] $Repository,
4 | [string] $BranchName="master",
5 | [string] $WorkingDirectory,
6 | [string] $AzureDevOpsAccessToken,
7 | [string] $GuardianLoggerLevel="Standard"
8 | )
9 |
10 | $ErrorActionPreference = "Stop"
11 | Set-StrictMode -Version 2.0
12 | $LASTEXITCODE = 0
13 |
14 | # `tools.ps1` checks $ci to perform some actions. Since the SDL
15 | # scripts don't necessarily execute in the same agent that run the
16 | # build.ps1/sh script this variable isn't automatically set.
17 | $ci = $true
18 | . $PSScriptRoot\..\tools.ps1
19 |
20 | # Don't display the console progress UI - it's a huge perf hit
21 | $ProgressPreference = 'SilentlyContinue'
22 |
23 | # Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file
24 | $encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken"))
25 | $escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn")
26 | $uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cfg/Items?path=$escapedRepository&versionDescriptor[versionOptions]=0&`$format=zip&api-version=5.0-preview.1"
27 | $zipFile = "$WorkingDirectory/gdn.zip"
28 |
29 | Add-Type -AssemblyName System.IO.Compression.FileSystem
30 | $gdnFolder = (Join-Path $WorkingDirectory '.gdn')
31 |
32 | try {
33 | # if the folder does not exist, we'll do a guardian init and push it to the remote repository
34 | Write-Host "Initializing Guardian..."
35 | Write-Host "$GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel"
36 | & $GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel
37 | if ($LASTEXITCODE -ne 0) {
38 | Write-Error "Guardian init failed with exit code $LASTEXITCODE."
39 | }
40 | # We create the mainbaseline so it can be edited later
41 | Write-Host "$GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline"
42 | & $GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline
43 | if ($LASTEXITCODE -ne 0) {
44 | Write-Error "Guardian baseline failed with exit code $LASTEXITCODE."
45 | }
46 | & $(Join-Path $PSScriptRoot "push-gdn.ps1") -Repository $Repository -BranchName $BranchName -GdnFolder $gdnFolder -AzureDevOpsAccessToken $AzureDevOpsAccessToken -PushReason "Initialize gdn folder"
47 | ExitWithExitCode 0
48 | }
49 | catch {
50 | Write-Host $_.ScriptStackTrace
51 | Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_
52 | ExitWithExitCode 1
53 | }
--------------------------------------------------------------------------------
/eng/common/sdl/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/eng/common/sdl/push-gdn.ps1:
--------------------------------------------------------------------------------
1 | Param(
2 | [string] $Repository,
3 | [string] $BranchName="master",
4 | [string] $GdnFolder,
5 | [string] $AzureDevOpsAccessToken,
6 | [string] $PushReason
7 | )
8 |
9 | $ErrorActionPreference = "Stop"
10 | Set-StrictMode -Version 2.0
11 | $LASTEXITCODE = 0
12 |
13 | # We create the temp directory where we'll store the sdl-config repository
14 | $sdlDir = Join-Path $env:TEMP "sdl"
15 | if (Test-Path $sdlDir) {
16 | Remove-Item -Force -Recurse $sdlDir
17 | }
18 |
19 | Write-Host "git clone https://dnceng:`$AzureDevOpsAccessToken@dev.azure.com/dnceng/internal/_git/sdl-tool-cfg $sdlDir"
20 | git clone https://dnceng:$AzureDevOpsAccessToken@dev.azure.com/dnceng/internal/_git/sdl-tool-cfg $sdlDir
21 | if ($LASTEXITCODE -ne 0) {
22 | Write-Error "Git clone failed with exit code $LASTEXITCODE."
23 | }
24 | # We copy the .gdn folder from our local run into the git repository so it can be committed
25 | $sdlRepositoryFolder = Join-Path (Join-Path (Join-Path $sdlDir $Repository) $BranchName) ".gdn"
26 | if (Get-Command Robocopy) {
27 | Robocopy /S $GdnFolder $sdlRepositoryFolder
28 | } else {
29 | rsync -r $GdnFolder $sdlRepositoryFolder
30 | }
31 | # cd to the sdl-config directory so we can run git there
32 | Push-Location $sdlDir
33 | # git add . --> git commit --> git push
34 | Write-Host "git add ."
35 | git add .
36 | if ($LASTEXITCODE -ne 0) {
37 | Write-Error "Git add failed with exit code $LASTEXITCODE."
38 | }
39 | Write-Host "git -c user.email=`"dn-bot@microsoft.com`" -c user.name=`"Dotnet Bot`" commit -m `"$PushReason for $Repository/$BranchName`""
40 | git -c user.email="dn-bot@microsoft.com" -c user.name="Dotnet Bot" commit -m "$PushReason for $Repository/$BranchName"
41 | if ($LASTEXITCODE -ne 0) {
42 | Write-Error "Git commit failed with exit code $LASTEXITCODE."
43 | }
44 | Write-Host "git push"
45 | git push
46 | if ($LASTEXITCODE -ne 0) {
47 | Write-Error "Git push failed with exit code $LASTEXITCODE."
48 | }
49 |
50 | # Return to the original directory
51 | Pop-Location
--------------------------------------------------------------------------------
/eng/common/sdl/run-sdl.ps1:
--------------------------------------------------------------------------------
1 | Param(
2 | [string] $GuardianCliLocation,
3 | [string] $WorkingDirectory,
4 | [string] $TargetDirectory,
5 | [string] $GdnFolder,
6 | [string[]] $ToolsList,
7 | [string] $UpdateBaseline,
8 | [string] $GuardianLoggerLevel="Standard",
9 | [string[]] $CrScanAdditionalRunConfigParams,
10 | [string[]] $PoliCheckAdditionalRunConfigParams
11 | )
12 |
13 | $ErrorActionPreference = "Stop"
14 | Set-StrictMode -Version 2.0
15 | $LASTEXITCODE = 0
16 |
17 | # We store config files in the r directory of .gdn
18 | Write-Host $ToolsList
19 | $gdnConfigPath = Join-Path $GdnFolder "r"
20 | $ValidPath = Test-Path $GuardianCliLocation
21 |
22 | if ($ValidPath -eq $False)
23 | {
24 | Write-Host "Invalid Guardian CLI Location."
25 | exit 1
26 | }
27 |
28 | $configParam = @("--config")
29 |
30 | foreach ($tool in $ToolsList) {
31 | $gdnConfigFile = Join-Path $gdnConfigPath "$tool-configure.gdnconfig"
32 | Write-Host $tool
33 | # We have to manually configure tools that run on source to look at the source directory only
34 | if ($tool -eq "credscan") {
35 | 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})"
36 | & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " TargetDirectory < $TargetDirectory " "OutputType < pre" $(If ($CrScanAdditionalRunConfigParams) {$CrScanAdditionalRunConfigParams})
37 | if ($LASTEXITCODE -ne 0) {
38 | Write-Host "Guardian configure for $tool failed with exit code $LASTEXITCODE."
39 | exit $LASTEXITCODE
40 | }
41 | }
42 | if ($tool -eq "policheck") {
43 | Write-Host "$GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args `" Target < $TargetDirectory `" $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams})"
44 | & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " Target < $TargetDirectory " $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams})
45 | if ($LASTEXITCODE -ne 0) {
46 | Write-Host "Guardian configure for $tool failed with exit code $LASTEXITCODE."
47 | exit $LASTEXITCODE
48 | }
49 | }
50 |
51 | $configParam+=$gdnConfigFile
52 | }
53 |
54 | Write-Host "$GuardianCliLocation run --working-directory $WorkingDirectory --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel $configParam"
55 | & $GuardianCliLocation run --working-directory $WorkingDirectory --tool $tool --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel $configParam
56 | if ($LASTEXITCODE -ne 0) {
57 | Write-Host "Guardian run for $ToolsList using $configParam failed with exit code $LASTEXITCODE."
58 | exit $LASTEXITCODE
59 | }
60 |
--------------------------------------------------------------------------------
/eng/common/templates/job/generate-graph-files.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | # Optional: dependencies of the job
3 | dependsOn: ''
4 |
5 | # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
6 | pool: {}
7 |
8 | # Optional: Include toolset dependencies in the generated graph files
9 | includeToolset: false
10 |
11 | jobs:
12 | - job: Generate_Graph_Files
13 |
14 | dependsOn: ${{ parameters.dependsOn }}
15 |
16 | displayName: Generate Graph Files
17 |
18 | pool: ${{ parameters.pool }}
19 |
20 | variables:
21 | # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT
22 | # DotNet-AllOrgs-Darc-Pats provides: dn-bot-devdiv-dnceng-rw-code-pat
23 | - group: Publish-Build-Assets
24 | - group: DotNet-AllOrgs-Darc-Pats
25 | - name: _GraphArguments
26 | value: -gitHubPat $(BotAccount-dotnet-maestro-bot-PAT)
27 | -azdoPat $(dn-bot-devdiv-dnceng-rw-code-pat)
28 | -barToken $(MaestroAccessToken)
29 | -outputFolder '$(Build.StagingDirectory)/GraphFiles/'
30 | - ${{ if ne(parameters.includeToolset, 'false') }}:
31 | - name: _GraphArguments
32 | value: ${{ variables._GraphArguments }} -includeToolset
33 |
34 | steps:
35 | - task: PowerShell@2
36 | displayName: Generate Graph Files
37 | inputs:
38 | filePath: eng\common\generate-graph-files.ps1
39 | arguments: $(_GraphArguments)
40 | continueOnError: true
41 | - task: PublishBuildArtifacts@1
42 | displayName: Publish Graph to Artifacts
43 | inputs:
44 | PathtoPublish: '$(Build.StagingDirectory)/GraphFiles'
45 | PublishLocation: Container
46 | ArtifactName: GraphFiles
47 | continueOnError: true
48 | condition: always()
49 |
--------------------------------------------------------------------------------
/eng/common/templates/job/publish-build-assets.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | configuration: 'Debug'
3 |
4 | # Optional: condition for the job to run
5 | condition: ''
6 |
7 | # Optional: 'true' if future jobs should run even if this job fails
8 | continueOnError: false
9 |
10 | # Optional: dependencies of the job
11 | dependsOn: ''
12 |
13 | # Optional: Include PublishBuildArtifacts task
14 | enablePublishBuildArtifacts: false
15 |
16 | # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
17 | pool: {}
18 |
19 | # Optional: should run as a public build even in the internal project
20 | # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
21 | runAsPublic: false
22 |
23 | # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing
24 | publishUsingPipelines: false
25 |
26 | jobs:
27 | - job: Asset_Registry_Publish
28 |
29 | dependsOn: ${{ parameters.dependsOn }}
30 |
31 | displayName: Publish to Build Asset Registry
32 |
33 | pool: ${{ parameters.pool }}
34 |
35 | variables:
36 | - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
37 | - name: _BuildConfig
38 | value: ${{ parameters.configuration }}
39 | - group: Publish-Build-Assets
40 |
41 | steps:
42 | - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
43 | - task: DownloadBuildArtifacts@0
44 | displayName: Download artifact
45 | inputs:
46 | artifactName: AssetManifests
47 | downloadPath: '$(Build.StagingDirectory)/Download'
48 | condition: ${{ parameters.condition }}
49 | continueOnError: ${{ parameters.continueOnError }}
50 |
51 | - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
52 | - task: NuGetAuthenticate@0
53 |
54 | - task: PowerShell@2
55 | displayName: Publish Build Assets
56 | inputs:
57 | filePath: eng\common\sdk-task.ps1
58 | arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
59 | /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
60 | /p:BuildAssetRegistryToken=$(MaestroAccessToken)
61 | /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com
62 | /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }}
63 | /p:Configuration=$(_BuildConfig)
64 | condition: ${{ parameters.condition }}
65 | continueOnError: ${{ parameters.continueOnError }}
66 |
67 | - task: powershell@2
68 | displayName: Create ReleaseConfigs Artifact
69 | inputs:
70 | targetType: inline
71 | script: |
72 | Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId)
73 | Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)"
74 | Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild)
75 |
76 | - task: PublishBuildArtifacts@1
77 | displayName: Publish ReleaseConfigs Artifact
78 | inputs:
79 | PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs.txt'
80 | PublishLocation: Container
81 | ArtifactName: ReleaseConfigs
82 |
83 | - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
84 | - task: PublishBuildArtifacts@1
85 | displayName: Publish Logs to VSTS
86 | inputs:
87 | PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
88 | PublishLocation: Container
89 | ArtifactName: $(Agent.Os)_PublishBuildAssets
90 | continueOnError: true
91 | condition: always()
92 |
--------------------------------------------------------------------------------
/eng/common/templates/jobs/jobs.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | # Optional: 'true' if failures in job.yml job should not fail the job
3 | continueOnError: false
4 |
5 | # Optional: Enable installing Microbuild plugin
6 | # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
7 | # _TeamName - the name of your team
8 | # _SignType - 'test' or 'real'
9 | enableMicrobuild: false
10 |
11 | # Optional: Include PublishBuildArtifacts task
12 | enablePublishBuildArtifacts: false
13 |
14 | # Optional: Enable publishing to the build asset registry
15 | enablePublishBuildAssets: false
16 |
17 | # Optional: Enable publishing using release pipelines
18 | enablePublishUsingPipelines: false
19 |
20 | graphFileGeneration:
21 | # Optional: Enable generating the graph files at the end of the build
22 | enabled: false
23 | # Optional: Include toolset dependencies in the generated graph files
24 | includeToolset: false
25 |
26 | # Optional: Include PublishTestResults task
27 | enablePublishTestResults: false
28 |
29 | # Optional: enable sending telemetry
30 | # if enabled then the 'helixRepo' parameter should also be specified
31 | enableTelemetry: false
32 |
33 | # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
34 | jobs: []
35 |
36 | # Optional: define the helix repo for telemetry (example: 'dotnet/arcade')
37 | helixRepo: ''
38 |
39 | # Optional: Override automatically derived dependsOn value for "publish build assets" job
40 | publishBuildAssetsDependsOn: ''
41 |
42 | # Optional: should run as a public build even in the internal project
43 | # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
44 | runAsPublic: false
45 |
46 | # Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
47 | # and some (Microbuild) should only be applied to non-PR cases for internal builds.
48 |
49 | jobs:
50 | - ${{ each job in parameters.jobs }}:
51 | - template: ../job/job.yml
52 | parameters:
53 | # pass along parameters
54 | ${{ each parameter in parameters }}:
55 | ${{ if ne(parameter.key, 'jobs') }}:
56 | ${{ parameter.key }}: ${{ parameter.value }}
57 |
58 | # pass along job properties
59 | ${{ each property in job }}:
60 | ${{ if ne(property.key, 'job') }}:
61 | ${{ property.key }}: ${{ property.value }}
62 |
63 | name: ${{ job.job }}
64 |
65 | - ${{ if and(eq(parameters.enablePublishBuildAssets, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
66 | - template: ../job/publish-build-assets.yml
67 | parameters:
68 | continueOnError: ${{ parameters.continueOnError }}
69 | dependsOn:
70 | - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
71 | - ${{ each job in parameters.publishBuildAssetsDependsOn }}:
72 | - ${{ job.job }}
73 | - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
74 | - ${{ each job in parameters.jobs }}:
75 | - ${{ job.job }}
76 | pool:
77 | vmImage: vs2017-win2016
78 | runAsPublic: ${{ parameters.runAsPublic }}
79 | publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }}
80 | enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
81 |
82 | - ${{ if and(eq(parameters.graphFileGeneration.enabled, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
83 | - template: ../job/generate-graph-files.yml
84 | parameters:
85 | continueOnError: ${{ parameters.continueOnError }}
86 | includeToolset: ${{ parameters.graphFileGeneration.includeToolset }}
87 | dependsOn:
88 | - Asset_Registry_Publish
89 | pool:
90 | vmImage: vs2017-win2016
91 |
--------------------------------------------------------------------------------
/eng/common/templates/phases/publish-build-assets.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | dependsOn: ''
3 | queue: {}
4 | configuration: 'Debug'
5 | condition: succeeded()
6 | continueOnError: false
7 | runAsPublic: false
8 | publishUsingPipelines: false
9 | phases:
10 | - phase: Asset_Registry_Publish
11 | displayName: Publish to Build Asset Registry
12 | dependsOn: ${{ parameters.dependsOn }}
13 | queue: ${{ parameters.queue }}
14 | variables:
15 | _BuildConfig: ${{ parameters.configuration }}
16 | steps:
17 | - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
18 | - task: DownloadBuildArtifacts@0
19 | displayName: Download artifact
20 | inputs:
21 | artifactName: AssetManifests
22 | downloadPath: '$(Build.StagingDirectory)/Download'
23 | condition: ${{ parameters.condition }}
24 | continueOnError: ${{ parameters.continueOnError }}
25 | - task: AzureKeyVault@1
26 | inputs:
27 | azureSubscription: 'DotNet-Engineering-Services_KeyVault'
28 | KeyVaultName: EngKeyVault
29 | SecretsFilter: 'MaestroAccessToken'
30 | condition: ${{ parameters.condition }}
31 | continueOnError: ${{ parameters.continueOnError }}
32 | - task: PowerShell@2
33 | displayName: Publish Build Assets
34 | inputs:
35 | filePath: eng\common\sdk-task.ps1
36 | arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
37 | /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
38 | /p:BuildAssetRegistryToken=$(MaestroAccessToken)
39 | /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com
40 | /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }}
41 | /p:Configuration=$(_BuildConfig)
42 | condition: ${{ parameters.condition }}
43 | continueOnError: ${{ parameters.continueOnError }}
44 | - task: PublishBuildArtifacts@1
45 | displayName: Publish Logs to VSTS
46 | inputs:
47 | PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
48 | PublishLocation: Container
49 | ArtifactName: $(Agent.Os)_Asset_Registry_Publish
50 | continueOnError: true
51 | condition: always()
52 |
--------------------------------------------------------------------------------
/eng/common/templates/post-build/common-variables.yml:
--------------------------------------------------------------------------------
1 | variables:
2 | - group: AzureDevOps-Artifact-Feeds-Pats
3 | - group: DotNet-Blob-Feed
4 | - group: DotNet-DotNetCli-Storage
5 | - group: DotNet-MSRC-Storage
6 | - group: Publish-Build-Assets
7 |
8 | # .NET Core 3.1 Dev
9 | - name: PublicDevRelease_31_Channel_Id
10 | value: 128
11 |
12 | # .NET Core 5 Dev
13 | - name: NetCore_5_Dev_Channel_Id
14 | value: 131
15 |
16 | # .NET Eng - Validation
17 | - name: Net_Eng_Validation_Channel_Id
18 | value: 9
19 |
20 | # .NET Eng - Latest
21 | - name: Net_Eng_Latest_Channel_Id
22 | value: 2
23 |
24 | # .NET 3 Eng - Validation
25 | - name: NET_3_Eng_Validation_Channel_Id
26 | value: 390
27 |
28 | # .NET 3 Eng
29 | - name: NetCore_3_Tools_Channel_Id
30 | value: 344
31 |
32 | # .NET Core 3.1 Release
33 | - name: PublicRelease_31_Channel_Id
34 | value: 129
35 |
36 | # General Testing
37 | - name: GeneralTesting_Channel_Id
38 | value: 529
39 |
40 | # .NET Core 3.1 Blazor Features
41 | - name: NetCore_31_Blazor_Features_Channel_Id
42 | value: 531
43 |
44 | # Whether the build is internal or not
45 | - name: IsInternalBuild
46 | value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }}
47 |
48 | # Default Maestro++ API Endpoint and API Version
49 | - name: MaestroApiEndPoint
50 | value: "https://maestro-prod.westus2.cloudapp.azure.com"
51 | - name: MaestroApiAccessToken
52 | value: $(MaestroAccessToken)
53 | - name: MaestroApiVersion
54 | value: "2019-01-16"
55 |
56 | - name: SourceLinkCLIVersion
57 | value: 3.0.0
58 | - name: SymbolToolVersion
59 | value: 1.0.1
60 |
61 | # Feed Configurations
62 | # These should include the suffix "/index.json"
63 |
64 | # Default locations for Installers and checksums
65 | # Public Locations
66 | - name: ChecksumsBlobFeedUrl
67 | value: https://dotnetclichecksums.blob.core.windows.net/dotnet/index.json
68 | - name: InstallersBlobFeedUrl
69 | value: https://dotnetcli.blob.core.windows.net/dotnet/index.json
70 |
71 | # Private Locations
72 | - name: InternalChecksumsBlobFeedUrl
73 | value: https://dotnetclichecksumsmsrc.blob.core.windows.net/dotnet/index.json
74 | - name: InternalChecksumsBlobFeedKey
75 | value: $(dotnetclichecksumsmsrc-storage-key)
76 |
77 | - name: InternalInstallersBlobFeedUrl
78 | value: https://dotnetclimsrc.blob.core.windows.net/dotnet/index.json
79 | - name: InternalInstallersBlobFeedKey
80 | value: $(dotnetclimsrc-access-key)
81 |
--------------------------------------------------------------------------------
/eng/common/templates/post-build/darc-gather-drop.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | jobs:
5 | - job: gatherDrop
6 | displayName: Gather Drop
7 | dependsOn: setupMaestroVars
8 | condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], format('[{0}]', ${{ parameters.ChannelId }}))
9 | variables:
10 | - name: BARBuildId
11 | value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
12 | pool:
13 | vmImage: 'windows-2019'
14 | steps:
15 | - task: PowerShell@2
16 | displayName: Darc gather-drop
17 | inputs:
18 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/darc-gather-drop.ps1
19 | arguments: -BarBuildId $(BARBuildId)
20 | -DropLocation $(Agent.BuildDirectory)/Temp/Drop/
21 | -MaestroApiAccessToken $(MaestroApiAccessToken)
22 | -MaestroApiEndPoint $(MaestroApiEndPoint)
23 | -MaestroApiVersion $(MaestroApiVersion)
24 |
--------------------------------------------------------------------------------
/eng/common/templates/post-build/promote-build.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | jobs:
5 | - job:
6 | displayName: Promote Build
7 | dependsOn: setupMaestroVars
8 | condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'], format('[{0}]', ${{ parameters.ChannelId }}))
9 | variables:
10 | - name: BARBuildId
11 | value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
12 | - name: ChannelId
13 | value: ${{ parameters.ChannelId }}
14 | pool:
15 | vmImage: 'windows-2019'
16 | steps:
17 | - task: PowerShell@2
18 | displayName: Add Build to Channel
19 | inputs:
20 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/promote-build.ps1
21 | arguments: -BuildId $(BARBuildId)
22 | -ChannelId $(ChannelId)
23 | -MaestroApiAccessToken $(MaestroApiAccessToken)
24 | -MaestroApiEndPoint $(MaestroApiEndPoint)
25 | -MaestroApiVersion $(MaestroApiVersion)
26 |
--------------------------------------------------------------------------------
/eng/common/templates/post-build/setup-maestro-vars.yml:
--------------------------------------------------------------------------------
1 | jobs:
2 | - job: setupMaestroVars
3 | displayName: Setup Maestro Vars
4 | pool:
5 | vmImage: 'windows-2019'
6 | steps:
7 | - task: DownloadBuildArtifacts@0
8 | displayName: Download Release Configs
9 | inputs:
10 | buildType: current
11 | artifactName: ReleaseConfigs
12 |
13 | - task: PowerShell@2
14 | name: setReleaseVars
15 | displayName: Set Release Configs Vars
16 | inputs:
17 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/setup-maestro-vars.ps1
18 | arguments: -ReleaseConfigsPath '$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt'
19 |
--------------------------------------------------------------------------------
/eng/common/templates/post-build/trigger-subscription.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | steps:
5 | - task: PowerShell@2
6 | displayName: Triggering subscriptions
7 | inputs:
8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/trigger-subscriptions.ps1
9 | arguments: -SourceRepo $(Build.Repository.Uri)
10 | -ChannelId ${{ parameters.ChannelId }}
11 | -MaestroApiAccessToken $(MaestroAccessToken)
12 | -MaestroApiEndPoint $(MaestroApiEndPoint)
13 | -MaestroApiVersion $(MaestroApiVersion)
14 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/build-reason.yml:
--------------------------------------------------------------------------------
1 | # build-reason.yml
2 | # Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons
3 | # to include steps (',' separated).
4 | parameters:
5 | conditions: ''
6 | steps: []
7 |
8 | steps:
9 | - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}:
10 | - ${{ parameters.steps }}
11 | - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}:
12 | - ${{ parameters.steps }}
13 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/promote-build.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | steps:
5 | - task: PowerShell@2
6 | displayName: Add Build to Channel
7 | inputs:
8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/promote-build.ps1
9 | arguments: -BuildId $(BARBuildId)
10 | -ChannelId ${{ parameters.ChannelId }}
11 | -MaestroApiAccessToken $(MaestroApiAccessToken)
12 | -MaestroApiEndPoint $(MaestroApiEndPoint)
13 | -MaestroApiVersion $(MaestroApiVersion)
14 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/run-on-unix.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | agentOs: ''
3 | steps: []
4 |
5 | steps:
6 | - ${{ if ne(parameters.agentOs, 'Windows_NT') }}:
7 | - ${{ parameters.steps }}
8 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/run-on-windows.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | agentOs: ''
3 | steps: []
4 |
5 | steps:
6 | - ${{ if eq(parameters.agentOs, 'Windows_NT') }}:
7 | - ${{ parameters.steps }}
8 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/run-script-ifequalelse.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | # if parameter1 equals parameter 2, run 'ifScript' command, else run 'elsescript' command
3 | parameter1: ''
4 | parameter2: ''
5 | ifScript: ''
6 | elseScript: ''
7 |
8 | # name of script step
9 | name: Script
10 |
11 | # display name of script step
12 | displayName: If-Equal-Else Script
13 |
14 | # environment
15 | env: {}
16 |
17 | # conditional expression for step execution
18 | condition: ''
19 |
20 | steps:
21 | - ${{ if and(ne(parameters.ifScript, ''), eq(parameters.parameter1, parameters.parameter2)) }}:
22 | - script: ${{ parameters.ifScript }}
23 | name: ${{ parameters.name }}
24 | displayName: ${{ parameters.displayName }}
25 | env: ${{ parameters.env }}
26 | condition: ${{ parameters.condition }}
27 |
28 | - ${{ if and(ne(parameters.elseScript, ''), ne(parameters.parameter1, parameters.parameter2)) }}:
29 | - script: ${{ parameters.elseScript }}
30 | name: ${{ parameters.name }}
31 | displayName: ${{ parameters.displayName }}
32 | env: ${{ parameters.env }}
33 | condition: ${{ parameters.condition }}
--------------------------------------------------------------------------------
/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "sdk": {
3 | "version": "3.1.100"
4 | },
5 | "tools": {
6 | "dotnet": "3.1.100",
7 | "runtimes": {
8 | "dotnet": [
9 | "2.1.11"
10 | ]
11 | }
12 | },
13 | "msbuild-sdks": {
14 | "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.21110.10"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/runtimeconfig.template.json:
--------------------------------------------------------------------------------
1 |
2 | {
3 | "rollForwardOnNoCandidateFx": 2
4 | }
--------------------------------------------------------------------------------
/src/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | true
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Blazor.BuildTools/Cli/Commands/CheckNodeJsInstalledCommand.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using Microsoft.Extensions.CommandLineUtils;
5 | using System;
6 | using System.Diagnostics;
7 | using System.Text.RegularExpressions;
8 |
9 | namespace Microsoft.AspNetCore.Blazor.BuildTools.Cli.Commands
10 | {
11 | class CheckNodeJsInstalledCommand
12 | {
13 | private static Regex NodeVersionRegex = new Regex(@"^v(\d+\.\d+\.\d+)");
14 |
15 | public static void Command(CommandLineApplication command)
16 | {
17 | command.Description = "Asserts that Node.js is installed.";
18 | command.HelpOption("-?|-h|--help");
19 |
20 | var minVersionOption = command.Option(
21 | "-v|--version",
22 | "Specifies a minimum acceptable version of Node.js.",
23 | CommandOptionType.SingleValue);
24 |
25 | command.OnExecute(() =>
26 | {
27 | var foundNodeVersion = GetInstalledNodeVersion();
28 | if (foundNodeVersion == null)
29 | {
30 | return 1;
31 | }
32 |
33 | if (minVersionOption.HasValue())
34 | {
35 | var minVersion = new Version(minVersionOption.Value());
36 | if (foundNodeVersion < minVersion)
37 | {
38 | Console.WriteLine($"ERROR: The installed version of Node.js is too old. Required version: {minVersion}; Found version: {foundNodeVersion}.");
39 | return 1;
40 | }
41 | }
42 |
43 | Console.WriteLine($"Found Node.js version {foundNodeVersion}");
44 | return 0;
45 | });
46 | }
47 |
48 | private static Version GetInstalledNodeVersion()
49 | {
50 | var versionString = InvokeNodeVersionCommand();
51 | if (versionString == null)
52 | {
53 | return null;
54 | }
55 |
56 | var versionStringMatch = NodeVersionRegex.Match(versionString);
57 | if (!versionStringMatch.Success)
58 | {
59 | Console.WriteLine($"ERROR: Got unparseable Node.js version string: {versionStringMatch}");
60 | return null;
61 | }
62 |
63 | return new Version(versionStringMatch.Groups[1].Value);
64 | }
65 |
66 | private static string InvokeNodeVersionCommand()
67 | {
68 | try
69 | {
70 | var process = Process.Start(new ProcessStartInfo
71 | {
72 | FileName = "node",
73 | Arguments = "-v",
74 | RedirectStandardOutput = true
75 | });
76 | process.WaitForExit();
77 |
78 | if (process.ExitCode != 0)
79 | {
80 | Console.WriteLine($"ERROR: The command 'node -v' exited with code {process.ExitCode}.");
81 | return null;
82 | }
83 | else
84 | {
85 | return process.StandardOutput.ReadToEnd();
86 | }
87 | }
88 | catch (Exception ex)
89 | {
90 | Console.WriteLine("ERROR: Node.js was not found. Ensure that Node.js is installed and that 'node' is present on the system PATH.");
91 | Console.WriteLine("The underlying error was: " + ex.Message);
92 | return null;
93 | }
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Blazor.BuildTools/Cli/Program.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using Microsoft.AspNetCore.Blazor.BuildTools.Cli.Commands;
5 | using Microsoft.Extensions.CommandLineUtils;
6 |
7 | namespace Microsoft.AspNetCore.Blazor.BuildTools
8 | {
9 | static class Program
10 | {
11 | static int Main(string[] args)
12 | {
13 | var app = new CommandLineApplication
14 | {
15 | Name = "blazor-buildtools"
16 | };
17 | app.HelpOption("-?|-h|--help");
18 |
19 | app.Command("checknodejs", CheckNodeJsInstalledCommand.Command);
20 | app.Command("ilwipe", ILWipeCommand.Command);
21 |
22 | if (args.Length > 0)
23 | {
24 | return app.Execute(args);
25 | }
26 | else
27 | {
28 | app.ShowHelp();
29 | return 0;
30 | }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Blazor.BuildTools/Core/ILWipe/AssemblyItem.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using System;
5 | using Mono.Cecil;
6 | using System.Collections.Generic;
7 | using System.Linq;
8 | using Mono.Cecil.Cil;
9 |
10 | namespace Microsoft.AspNetCore.Blazor.BuildTools.Core.ILWipe
11 | {
12 | class AssemblyItem
13 | {
14 | public static IEnumerable ListContents(string assemblyPath)
15 | {
16 | var moduleDefinition = ModuleDefinition.ReadModule(assemblyPath);
17 | return ListContents(moduleDefinition);
18 | }
19 |
20 | public static IEnumerable ListContents(ModuleDefinition moduleDefinition)
21 | {
22 | return moduleDefinition.Types
23 | .SelectMany(GetNestedTypesRecursive)
24 | .SelectMany(type => type.Methods)
25 | .Select(method => new AssemblyItem(method))
26 | .OrderBy(item => item.ToString(), StringComparer.Ordinal);
27 | }
28 |
29 | public MethodDefinition Method { get; }
30 |
31 | public AssemblyItem(MethodDefinition method)
32 | {
33 | Method = method ?? throw new ArgumentNullException(nameof(method));
34 | }
35 |
36 | public void WipeFromAssembly(MethodDefinition createMethodWipedException)
37 | {
38 | if (!Method.HasBody)
39 | {
40 | return; // Nothing to do
41 | }
42 |
43 | if (Method.HasCustomAttributes)
44 | {
45 | for (int i = 0; i < Method.CustomAttributes.Count; i++)
46 | {
47 | if (Method.CustomAttributes[i].AttributeType.FullName == "System.Runtime.CompilerServices.AsyncStateMachineAttribute")
48 | {
49 | Method.CustomAttributes.RemoveAt(i);
50 | break;
51 | }
52 | }
53 | }
54 |
55 | // We don't want to actually remove the method definition from the assembly, because
56 | // then you'd have an assembly that was invalid (it could contain calls to the method
57 | // that no longer exists). Instead, remove all the instructions from its body, and
58 | // replace it with "throw CreateMethodWipedException()". Then:
59 | // [1] The method body is very short, while still definitely being valid (still OK for
60 | // it to have any return type)
61 | // [2] We've removed its references to other methods/types, so they are more likely
62 | // to be actually removed fully by a subsequent IL linker pass
63 | // [3] If the method is actually invoked at runtime, the stack trace will make clear
64 | // which method is being excessively wiped
65 | var il = Method.Body.GetILProcessor();
66 | il.Body.Instructions.Clear();
67 | il.Body.Variables.Clear();
68 | il.Body.ExceptionHandlers.Clear();
69 | il.Append(il.Create(OpCodes.Call, createMethodWipedException));
70 | il.Append(il.Create(OpCodes.Throw));
71 | }
72 |
73 | public override string ToString()
74 | {
75 | var result = Method.ToString();
76 | return result.Substring(result.IndexOf(' ') + 1);
77 | }
78 |
79 | public int CodeSize
80 | => Method.Body?.CodeSize ?? 0;
81 |
82 | private static IEnumerable GetNestedTypesRecursive(TypeDefinition type)
83 | {
84 | yield return type;
85 |
86 | foreach (var descendant in type.NestedTypes.SelectMany(GetNestedTypesRecursive))
87 | {
88 | yield return descendant;
89 | }
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Blazor.BuildTools/Core/ILWipe/MethodWipedExceptionMethod.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using Mono.Cecil;
5 | using Mono.Cecil.Cil;
6 | using System;
7 |
8 | namespace Microsoft.AspNetCore.Blazor.BuildTools.Core.ILWipe
9 | {
10 | static class MethodWipedExceptionMethod
11 | {
12 | public static MethodDefinition AddToAssembly(ModuleDefinition moduleDefinition)
13 | {
14 | // Adds the following method to the assembly:
15 | // namespace ILWipe
16 | // {
17 | // internal static class ILWipeHelpers
18 | // {
19 | // public static Exception CreateMethodWipedException()
20 | // {
21 | // return new NotImplementedException("Cannot call method because it was wiped. See stack trace for details.");
22 | // }
23 | // }
24 | // }
25 | var ilWipeHelpersType = new TypeDefinition("ILWipe", "ILWipeHelpers",
26 | TypeAttributes.NotPublic | TypeAttributes.Class | TypeAttributes.Abstract | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit,
27 | moduleDefinition.TypeSystem.Object);
28 | moduleDefinition.Types.Add(ilWipeHelpersType);
29 |
30 | var methodAttributes =
31 | MethodAttributes.Public |
32 | MethodAttributes.HideBySig |
33 | MethodAttributes.Static;
34 | var createMethodWipedExceptionMethod = new MethodDefinition(
35 | "CreateMethodWipedException",
36 | methodAttributes,
37 | ImportEquivalentTypeFromMscorlib(moduleDefinition, typeof(Exception)));
38 | ilWipeHelpersType.Methods.Add(createMethodWipedExceptionMethod);
39 |
40 | var notImplExceptionType = ImportEquivalentTypeFromMscorlib(moduleDefinition, typeof(NotImplementedException));
41 | var notImplExceptionCtor = new MethodReference(".ctor", moduleDefinition.TypeSystem.Void, notImplExceptionType);
42 | notImplExceptionCtor.HasThis = true;
43 | notImplExceptionCtor.Parameters.Add(new ParameterDefinition(moduleDefinition.TypeSystem.String));
44 |
45 | var il = createMethodWipedExceptionMethod.Body.GetILProcessor();
46 | il.Append(il.Create(OpCodes.Ldstr, "Cannot invoke method because it was wiped. See stack trace for details."));
47 | il.Append(il.Create(OpCodes.Newobj, notImplExceptionCtor));
48 | il.Append(il.Create(OpCodes.Ret));
49 |
50 | return createMethodWipedExceptionMethod;
51 | }
52 |
53 | static TypeReference ImportEquivalentTypeFromMscorlib(ModuleDefinition module, Type type)
54 | {
55 | // We have to do this instead of module.ImportReference(type), because the latter
56 | // would try to reference it in System.Private.CoreLib because this tool itself
57 | // compiles to target netcoreapp rather than netstandard
58 | IMetadataScope mscorlibScope;
59 | if (module.TryGetTypeReference(typeof(object).FullName, out var objectRef))
60 | {
61 | mscorlibScope = objectRef.Scope;
62 | }
63 | else if (module.Name == "mscorlib.dll")
64 | {
65 | mscorlibScope = module;
66 | }
67 | else
68 | {
69 | throw new InvalidOperationException($"Could not resolve System.Object type within '{module.FileName}'.");
70 | }
71 |
72 | var typeRef = new TypeReference(type.Namespace, type.Name, module, mscorlibScope, type.IsValueType);
73 | return module.ImportReference(typeRef);
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Blazor.BuildTools/Core/ILWipe/SpecList.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using System.Collections.Generic;
5 | using System.Linq;
6 |
7 | namespace Microsoft.AspNetCore.Blazor.BuildTools.Core.ILWipe
8 | {
9 | class SpecList
10 | {
11 | private List _itemSpecs;
12 |
13 | public SpecList(string[] fromSpecLines)
14 | {
15 | var linesToUse = fromSpecLines.Where(
16 | line => !string.IsNullOrWhiteSpace(line) && !line.StartsWith('#'));
17 | _itemSpecs = new List(
18 | linesToUse.Select(line => new SpecListEntry(line)));
19 | }
20 |
21 | public bool IsEmpty
22 | {
23 | get => _itemSpecs.Count == 0;
24 | }
25 |
26 | public bool Match(AssemblyItem item)
27 | {
28 | // If this needs to be faster, consider implementing some kind of matching tree.
29 | var lastMatchingSpec = _itemSpecs.LastOrDefault(spec => spec.IsMatch(item));
30 | return lastMatchingSpec == null ? false : !lastMatchingSpec.Negated;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Blazor.BuildTools/Core/ILWipe/WipeAssembly.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using System;
5 | using System.IO;
6 | using Mono.Cecil;
7 | using System.Linq;
8 |
9 | namespace Microsoft.AspNetCore.Blazor.BuildTools.Core.ILWipe
10 | {
11 | static class WipeAssembly
12 | {
13 | public static void Exec(string inputPath, string outputPath, string specFilePath, bool logVerbose)
14 | {
15 | if (string.IsNullOrEmpty(outputPath))
16 | {
17 | outputPath = Path.ChangeExtension(inputPath, ".wiped" + Path.GetExtension(inputPath));
18 | }
19 |
20 | var specLines = File.ReadAllLines(specFilePath);
21 | var wipeSpecList = new SpecList(specLines);
22 | var moduleDefinition = ModuleDefinition.ReadModule(inputPath);
23 |
24 | if (!wipeSpecList.IsEmpty)
25 | {
26 | var createMethodWipedException = MethodWipedExceptionMethod.AddToAssembly(moduleDefinition);
27 |
28 | var contents = AssemblyItem.ListContents(moduleDefinition).ToList();
29 | foreach (var contentItem in contents)
30 | {
31 | var shouldWipe = wipeSpecList.Match(contentItem)
32 | && contentItem.Method != createMethodWipedException;
33 |
34 | if (logVerbose)
35 | {
36 | Console.WriteLine($"{(shouldWipe ? "Wiping" : "Retaining")}: {contentItem}");
37 | }
38 |
39 | if (shouldWipe)
40 | {
41 | contentItem.WipeFromAssembly(createMethodWipedException);
42 | }
43 | }
44 | }
45 |
46 | // Also resolve referenced assemblies in the same directory
47 | if (moduleDefinition.AssemblyResolver is DefaultAssemblyResolver resolver)
48 | {
49 | resolver.AddSearchDirectory(Path.GetDirectoryName(inputPath));
50 | }
51 |
52 | moduleDefinition.Write(outputPath);
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Blazor.BuildTools/Microsoft.AspNetCore.Blazor.BuildTools.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp2.1
5 | Exe
6 | false
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy/DebugProxyOptions.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | namespace Microsoft.AspNetCore.Components.WebAssembly.DebugProxy
5 | {
6 | public class DebugProxyOptions
7 | {
8 | public string BrowserHost { get; set; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy/Hosting/DebugProxyHost.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using System;
5 | using System.Collections.Generic;
6 | using System.IO;
7 | using System.Text;
8 | using Microsoft.AspNetCore.Hosting;
9 | using Microsoft.Extensions.Configuration;
10 | using Microsoft.Extensions.DependencyInjection;
11 | using Microsoft.Extensions.Hosting;
12 | using Microsoft.Extensions.Logging;
13 |
14 | namespace Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.Hosting
15 | {
16 | public static class DebugProxyHost
17 | {
18 | ///
19 | /// Creates a custom HostBuilder for the DebugProxyLauncher so that we can inject
20 | /// only the needed configurations.
21 | ///
22 | /// Command line arguments passed in
23 | /// Host where browser is listening for debug connections
24 | ///
25 | public static IHostBuilder CreateDefaultBuilder(string[] args, string browserHost)
26 | {
27 | var builder = new HostBuilder();
28 |
29 | builder.ConfigureAppConfiguration((hostingContext, config) =>
30 | {
31 | if (args != null)
32 | {
33 | config.AddCommandLine(args);
34 | }
35 | config.SetBasePath(Directory.GetCurrentDirectory());
36 | config.AddJsonFile("blazor-debugproxysettings.json", optional: true, reloadOnChange: true);
37 | })
38 | .ConfigureLogging((hostingContext, logging) =>
39 | {
40 | logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
41 | logging.AddConsole();
42 | logging.AddDebug();
43 | logging.AddEventSourceLogger();
44 | })
45 | .ConfigureWebHostDefaults(webBuilder =>
46 | {
47 | webBuilder.UseStartup();
48 |
49 | // By default we bind to a dyamic port
50 | // This can be overridden using an option like "--urls http://localhost:9500"
51 | webBuilder.UseUrls("http://127.0.0.1:0");
52 | })
53 | .ConfigureServices(serviceCollection =>
54 | {
55 | serviceCollection.AddSingleton(new DebugProxyOptions
56 | {
57 | BrowserHost = browserHost
58 | });
59 | });
60 |
61 | return builder;
62 |
63 | }
64 | }
65 | }
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 | Microsoft.AspNetCore.Components.WebAssembly.DebugProxy
6 | true
7 | true
8 | exe
9 | false
10 | DebugProxy
11 | Debug proxy for use when building Blazor applications.
12 | Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.nuspec
13 |
14 | false
15 | $(NoWarn);CS0649
16 | 8
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $CommonMetadataElements$
5 |
6 |
7 | $CommonFileElements$
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy/Program.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using System;
5 | using System.Diagnostics;
6 | using Microsoft.AspNetCore.Components.WebAssembly.DebugProxy.Hosting;
7 | using Microsoft.AspNetCore.Hosting;
8 | using Microsoft.Extensions.CommandLineUtils;
9 | using Microsoft.Extensions.Configuration;
10 | using Microsoft.Extensions.DependencyInjection;
11 | using Microsoft.Extensions.Hosting;
12 |
13 | namespace Microsoft.AspNetCore.Components.WebAssembly.DebugProxy
14 | {
15 | public class Program
16 | {
17 | static int Main(string[] args)
18 | {
19 | var app = new CommandLineApplication(throwOnUnexpectedArg: false)
20 | {
21 | Name = "webassembly-debugproxy"
22 | };
23 | app.HelpOption("-?|-h|--help");
24 |
25 | var browserHostOption = new CommandOption("-b|--browser-host", CommandOptionType.SingleValue)
26 | {
27 | Description = "Host on which the browser is listening for debug connections. Example: http://localhost:9300"
28 | };
29 |
30 | var ownerPidOption = new CommandOption("-op|--owner-pid", CommandOptionType.SingleValue)
31 | {
32 | Description = "ID of the owner process. The debug proxy will shut down if this process exits."
33 | };
34 |
35 | app.Options.Add(browserHostOption);
36 | app.Options.Add(ownerPidOption);
37 |
38 | app.OnExecute(() =>
39 | {
40 | var browserHost = browserHostOption.HasValue() ? browserHostOption.Value(): "http://127.0.0.1:9222";
41 | var host = DebugProxyHost.CreateDefaultBuilder(args, browserHost).Build();
42 |
43 | if (ownerPidOption.HasValue())
44 | {
45 | var ownerProcess = Process.GetProcessById(int.Parse(ownerPidOption.Value()));
46 | ownerProcess.EnableRaisingEvents = true;
47 | ownerProcess.Exited += async (sender, eventArgs) =>
48 | {
49 | Console.WriteLine("Exiting because parent process has exited");
50 | await host.StopAsync();
51 | };
52 | }
53 |
54 | host.Run();
55 |
56 | return 0;
57 | });
58 |
59 | try
60 | {
61 | return app.Execute(args);
62 | }
63 | catch (CommandParsingException cex)
64 | {
65 | app.Error.WriteLine(cex.Message);
66 | app.ShowHelp();
67 | return 1;
68 | }
69 | }
70 | }
71 | }
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.DebugProxy/Startup.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using System;
5 | using System.Net;
6 | using Microsoft.AspNetCore.Builder;
7 | using Microsoft.Extensions.DependencyInjection;
8 | using Microsoft.Extensions.Logging;
9 | using WebAssembly.Net.Debugging;
10 |
11 | namespace Microsoft.AspNetCore.Components.WebAssembly.DebugProxy
12 | {
13 | public class Startup
14 | {
15 | public void Configure(IApplicationBuilder app, DebugProxyOptions debugProxyOptions)
16 | {
17 | app.UseDeveloperExceptionPage();
18 | app.UseWebSockets();
19 | app.UseRouting();
20 |
21 | app.UseEndpoints(endpoints =>
22 | {
23 | // At the homepage, we check whether we can uniquely identify the target tab
24 | // - If yes, we redirect directly to the debug tools, proxying to that tab
25 | // - If no, we present a list of available tabs for the user to pick from
26 | endpoints.MapGet("/", new TargetPickerUi(debugProxyOptions).Display);
27 |
28 | // At this URL, we wire up the actual WebAssembly proxy
29 | endpoints.MapGet("/ws-proxy", async (context) =>
30 | {
31 | if (!context.WebSockets.IsWebSocketRequest)
32 | {
33 | context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
34 | return;
35 | }
36 |
37 | var loggerFactory = context.RequestServices.GetRequiredService();
38 | var browserUri = new Uri(context.Request.Query["browser"]);
39 | var ideSocket = await context.WebSockets.AcceptWebSocketAsync();
40 | await new MonoProxy(loggerFactory).Run(browserUri, ideSocket);
41 | });
42 | });
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/.gitignore:
--------------------------------------------------------------------------------
1 | dist/
2 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/Microsoft.AspNetCore.Components.WebAssembly.Runtime.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.0
5 | Binaries for the .NET WebAssembly runtime and build tools used in Blazor applications.
6 | true
7 | true
8 | true
9 | Microsoft.AspNetCore.Components.WebAssembly.Runtime.nuspec
10 |
11 |
12 |
13 | $(ArtifactsBinDir)Microsoft.AspNetCore.Blazor.BuildTools/$(Configuration)/netcoreapp2.1/Microsoft.AspNetCore.Blazor.BuildTools.dll
14 | $(MSBuildThisFileDirectory)incoming\
15 | $(MSBuildThisFileDirectory)dist\
16 | $(MSBuildThisFileDirectory)bclwipe\
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | <_WasmItemsToCopy Include="@(WasmItemsToCopy)"
33 | DestinationPath="$(MonoDistDir)wasm\%(RecursiveDir)%(FileName)%(Extension)"
34 | Condition="'%(Extension)'!='.js'" />
35 |
36 | <_WasmItemsToCopy Include="@(WasmItemsToCopy)"
37 | DestinationPath="$(MonoDistDir)wasm\%(RecursiveDir)%(FileName).$(PackageVersion)%(Extension)"
38 | Condition="'%(Extension)'=='.js'" />
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/Microsoft.AspNetCore.Components.WebAssembly.Runtime.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $CommonMetadataElements$
5 |
6 |
7 | $CommonFileElements$
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/bclwipe/mscorlib.txt:
--------------------------------------------------------------------------------
1 | # Nothing to do here yet
2 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/build/netstandard1.0/Microsoft.AspNetCore.Components.WebAssembly.Runtime.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | $(MSBuildThisFileDirectory)../../
4 | $(ComponentsWebAssemblyRuntimeBasePath)tools/monolinker/monolinker.exe
5 | $(ComponentsWebAssemblyRuntimeBasePath)tools/dotnetwasm/bcl/
6 | $(ComponentsWebAssemblyRuntimeBasePath)tools/dotnetwasm/bcl/Facades/
7 | $(ComponentsWebAssemblyRuntimeBasePath)tools/dotnetwasm/framework/
8 | $(ComponentsWebAssemblyRuntimeBasePath)tools/dotnetwasm/wasm/
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/Microsoft.Win32.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/Microsoft.Win32.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/Microsoft.Win32.Registry.AccessControl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/Microsoft.Win32.Registry.AccessControl.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/Microsoft.Win32.Registry.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/Microsoft.Win32.Registry.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.AppContext.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.AppContext.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Buffers.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Buffers.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.Concurrent.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.Concurrent.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.NonGeneric.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.NonGeneric.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.Specialized.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.Specialized.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Collections.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.Annotations.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.Annotations.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.EventBasedAsync.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.EventBasedAsync.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.TypeConverter.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.TypeConverter.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ComponentModel.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Console.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Console.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Data.Common.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Data.Common.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Data.SqlClient.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Data.SqlClient.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Contracts.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Contracts.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Debug.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Debug.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.FileVersionInfo.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.FileVersionInfo.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Process.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Process.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.StackTrace.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.StackTrace.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.TextWriterTraceListener.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.TextWriterTraceListener.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Tools.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Tools.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.TraceEvent.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.TraceEvent.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.TraceSource.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.TraceSource.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Tracing.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Diagnostics.Tracing.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Drawing.Common.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Drawing.Common.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Drawing.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Drawing.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Dynamic.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Dynamic.Runtime.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Globalization.Calendars.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Globalization.Calendars.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Globalization.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Globalization.Extensions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Globalization.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Globalization.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.Compression.ZipFile.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.Compression.ZipFile.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.AccessControl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.AccessControl.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.DriveInfo.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.DriveInfo.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.Watcher.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.Watcher.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.FileSystem.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.IsolatedStorage.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.IsolatedStorage.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.MemoryMappedFiles.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.MemoryMappedFiles.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.Pipes.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.Pipes.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.UnmanagedMemoryStream.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.UnmanagedMemoryStream.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.IO.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.Expressions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.Expressions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.Parallel.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.Parallel.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.Queryable.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.Queryable.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Linq.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Memory.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Memory.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.AuthenticationManager.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.AuthenticationManager.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Cache.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Cache.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.HttpListener.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.HttpListener.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Mail.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Mail.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.NameResolution.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.NameResolution.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.NetworkInformation.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.NetworkInformation.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Ping.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Ping.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Requests.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Requests.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Security.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Security.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.ServicePoint.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.ServicePoint.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Sockets.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Sockets.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Utilities.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.Utilities.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.WebHeaderCollection.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.WebHeaderCollection.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.WebSockets.Client.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.WebSockets.Client.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.WebSockets.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Net.WebSockets.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ObjectModel.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ObjectModel.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.DispatchProxy.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.DispatchProxy.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Emit.ILGeneration.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Emit.ILGeneration.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Emit.Lightweight.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Emit.Lightweight.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Emit.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Emit.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Extensions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.TypeExtensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.TypeExtensions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Reflection.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.Reader.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.Reader.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.ReaderWriter.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.ReaderWriter.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.ResourceManager.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.ResourceManager.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.Writer.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Resources.Writer.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.CompilerServices.VisualC.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.CompilerServices.VisualC.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Extensions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Handles.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Handles.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.InteropServices.RuntimeInformation.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.InteropServices.RuntimeInformation.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.InteropServices.WindowsRuntime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.InteropServices.WindowsRuntime.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.InteropServices.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.InteropServices.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Loader.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Loader.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Numerics.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Numerics.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Formatters.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Formatters.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Json.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Xml.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.Serialization.Xml.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Runtime.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.AccessControl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.AccessControl.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Claims.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Claims.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Algorithms.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Algorithms.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Cng.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Cng.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Csp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Csp.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.DeriveBytes.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.DeriveBytes.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encoding.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encoding.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.Aes.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.Aes.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.ECDsa.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.ECDsa.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Encryption.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Hashing.Algorithms.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Hashing.Algorithms.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Hashing.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Hashing.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.OpenSsl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.OpenSsl.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Pkcs.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Pkcs.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.ProtectedData.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.ProtectedData.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.RSA.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.RSA.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.RandomNumberGenerator.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.RandomNumberGenerator.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.X509Certificates.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Cryptography.X509Certificates.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Principal.Windows.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Principal.Windows.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Principal.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.Principal.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.SecureString.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Security.SecureString.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ServiceProcess.ServiceController.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ServiceProcess.ServiceController.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.Encoding.CodePages.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.Encoding.CodePages.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.Encoding.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.Encoding.Extensions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.Encoding.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.Encoding.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.RegularExpressions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Text.RegularExpressions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.AccessControl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.AccessControl.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Overlapped.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Overlapped.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Tasks.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Tasks.Extensions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Tasks.Parallel.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Tasks.Parallel.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Tasks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Tasks.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Thread.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Thread.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.ThreadPool.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.ThreadPool.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Timer.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.Timer.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Threading.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.ValueTuple.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.ReaderWriter.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.ReaderWriter.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XDocument.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XDocument.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XPath.XDocument.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XPath.XDocument.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XPath.XmlDocument.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XPath.XmlDocument.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XPath.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XPath.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XmlDocument.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XmlDocument.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XmlSerializer.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.XmlSerializer.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.Xsl.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/System.Xml.Xsl.Primitives.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/netstandard.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Facades/netstandard.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.CJK.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.CJK.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.MidEast.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.MidEast.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.Other.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.Other.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.Rare.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.Rare.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.West.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.West.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/I18N.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Microsoft.CSharp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Microsoft.CSharp.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Mono.Security.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/Mono.Security.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.ComponentModel.Composition.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.ComponentModel.Composition.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.ComponentModel.DataAnnotations.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.ComponentModel.DataAnnotations.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Core.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Data.DataSetExtensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Data.DataSetExtensions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Data.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Data.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.IO.Compression.FileSystem.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.IO.Compression.FileSystem.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.IO.Compression.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.IO.Compression.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Net.Http.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Net.Http.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Numerics.Vectors.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Numerics.Vectors.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Numerics.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Numerics.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Runtime.CompilerServices.Unsafe.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Runtime.CompilerServices.Unsafe.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Runtime.Serialization.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Runtime.Serialization.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Security.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Security.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.ServiceModel.Internals.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.ServiceModel.Internals.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Transactions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Transactions.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Xml.Linq.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Xml.Linq.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Xml.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.Xml.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/System.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/mscorlib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/bcl/mscorlib.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/framework/System.Net.Http.WebAssemblyHttpHandler.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/framework/System.Net.Http.WebAssemblyHttpHandler.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/framework/WebAssembly.Bindings.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/framework/WebAssembly.Bindings.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/framework/WebAssembly.Net.WebSockets.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/framework/WebAssembly.Net.WebSockets.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/wasm/dotnet.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/incoming/wasm/dotnet.wasm
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/tools/binaries/monolinker/Mono.Cecil.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/tools/binaries/monolinker/Mono.Cecil.dll
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/tools/binaries/monolinker/monolinker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/tools/binaries/monolinker/monolinker.exe
--------------------------------------------------------------------------------
/src/Microsoft.AspNetCore.Components.WebAssembly.Runtime/tools/binaries/monolinker/monolinker.runtimeconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "runtimeOptions": {
3 | "tfm": "netcoreapp3.0",
4 | "framework": {
5 | "name": "Microsoft.NETCore.App",
6 | "version": "3.0.0"
7 | },
8 | "rollForwardOnNoCandidateFx": 2
9 | }
10 | }
--------------------------------------------------------------------------------
/src/TimeZoneData/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Buffers.Binary;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Text.Json;
6 |
7 | namespace Microsoft.AspNetCore.Components.WebAssembly.Runtime.TimeZone
8 | {
9 | class Program
10 | {
11 | static void Main(string[] args)
12 | {
13 | var tzFolder = Path.Combine(Directory.GetCurrentDirectory(), "obj", "data", "output");
14 | if (!Directory.Exists(tzFolder))
15 | {
16 | throw new DirectoryNotFoundException("TZOutput file does not exist. Use run.sh to run this project");
17 | }
18 |
19 | // https://en.wikipedia.org/wiki/Tz_database#Area
20 | var areas = new[] { "Africa", "America", "Antarctica", "Arctic", "Asia", "Atlantic", "Australia", "Europe", "Indian", "Pacific" };
21 | var stream = new MemoryStream();
22 | var indices = new List