├── .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(); 23 | 24 | foreach (var area in areas) 25 | { 26 | var directoryInfo = new DirectoryInfo(Path.Combine(tzFolder, area)); 27 | foreach (var entry in directoryInfo.EnumerateFiles()) 28 | { 29 | System.Console.WriteLine(entry.FullName); 30 | var relativePath = entry.FullName.Substring(tzFolder.Length).Trim('/'); 31 | indices.Add(new object[] { relativePath, entry.Length }); 32 | 33 | using (var readStream = entry.OpenRead()) 34 | readStream.CopyTo(stream); 35 | } 36 | } 37 | 38 | stream.Position = 0; 39 | var jsonBytes = JsonSerializer.SerializeToUtf8Bytes(indices); 40 | using (var timezoneFile = File.OpenWrite("dotnet.timezones.dat")) 41 | { 42 | var bytes = new byte[4]; 43 | BinaryPrimitives.WriteInt32LittleEndian(bytes, jsonBytes.Length); 44 | timezoneFile.Write(bytes); 45 | timezoneFile.Write(jsonBytes); 46 | 47 | stream.CopyTo(timezoneFile); 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/TimeZoneData/README.md: -------------------------------------------------------------------------------- 1 | ## About timezonedata 2 | 3 | This project is used to build the timezone database used by .NET WASM runtime to support timezones. The output of this project is checked in to this folder under the file named `dotnet.timezones.dat`. This output is currently manually regenerated. 4 | 5 | ### Building this project 6 | 7 | Prereqs: 8 | * *nix machine 9 | * .NET Core SDK 3.1 or newer installed. 10 | 11 | Run `run.sh`. This should update the `dotnet.timezones.dat` file. Commit this file to git. 12 | -------------------------------------------------------------------------------- /src/TimeZoneData/TimeZoneData.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp3.1 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/TimeZoneData/_._: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/TimeZoneData/_._ -------------------------------------------------------------------------------- /src/TimeZoneData/dotnet.timezones.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/blazor/c1a13c33e378d3964e19fd2bc2d51a16231ddc58/src/TimeZoneData/dotnet.timezones.dat -------------------------------------------------------------------------------- /src/TimeZoneData/run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | input_dir="obj/data/input" 4 | output_dir="obj/data/output" 5 | 6 | if [[ -d "obj/data" ]] 7 | then 8 | rm -rf "obj/data" 9 | fi 10 | 11 | mkdir -p "$input_dir" 12 | mkdir "$output_dir" 13 | 14 | curl -L https://data.iana.org/time-zones/tzdata-latest.tar.gz -o "$input_dir/tzdata.tar.gz" 15 | tar xvzf "$input_dir/tzdata.tar.gz" -C "$input_dir" 16 | 17 | files=("africa" "antarctica" "asia" "australasia" "etcetera" "europe" "northamerica" "southamerica") 18 | 19 | for file in "${files[@]}" 20 | do 21 | zic -d "$output_dir" "$input_dir/$file" 22 | done 23 | 24 | dotnet run --------------------------------------------------------------------------------