Full Code of dotnet/xharness for AI

main 445cc8d23b5b cached
651 files
6.5 MB
1.7M tokens
2389 symbols
1 requests
Download .txt
Showing preview only (6,950K chars total). Download the full file or copy to clipboard to get everything.
Repository: dotnet/xharness
Branch: main
Commit: 445cc8d23b5b
Files: 651
Total size: 6.5 MB

Directory structure:
gitextract_fjkujnb6/

├── .azuredevops/
│   └── dependabot.yml
├── .config/
│   └── tsaoptions.json
├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   ├── copilot-instructions.md
│   └── workflows/
│       ├── backport.yml
│       └── copilot-setup-steps.yml
├── .gitignore
├── Build.cmd
├── CODE_OF_CONDUCT.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE.TXT
├── NuGet.config
├── README.md
├── SECURITY.md
├── THIRD-PARTY-NOTICES.TXT
├── XHarness.slnx
├── azure-pipelines-public.yml
├── azure-pipelines.yml
├── build.sh
├── decoded_output.xml
├── docs/
│   ├── high-level-architecture.md
│   └── integrity-check.md
├── eng/
│   ├── Publishing.props
│   ├── Signing.props
│   ├── Version.Details.xml
│   ├── Versions.props
│   ├── common/
│   │   ├── AGENTS.md
│   │   ├── BuildConfiguration/
│   │   │   └── build-configuration.json
│   │   ├── CIBuild.cmd
│   │   ├── PSScriptAnalyzerSettings.psd1
│   │   ├── README.md
│   │   ├── SetupNugetSources.ps1
│   │   ├── SetupNugetSources.sh
│   │   ├── build.cmd
│   │   ├── build.ps1
│   │   ├── build.sh
│   │   ├── cibuild.sh
│   │   ├── core-templates/
│   │   │   ├── job/
│   │   │   │   ├── job.yml
│   │   │   │   ├── onelocbuild.yml
│   │   │   │   ├── publish-build-assets.yml
│   │   │   │   ├── renovate.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1.yml
│   │   │   ├── jobs/
│   │   │   │   ├── jobs.yml
│   │   │   │   └── source-build.yml
│   │   │   ├── post-build/
│   │   │   │   ├── common-variables.yml
│   │   │   │   ├── post-build.yml
│   │   │   │   └── setup-maestro-vars.yml
│   │   │   ├── stages/
│   │   │   │   └── renovate.yml
│   │   │   ├── steps/
│   │   │   │   ├── cleanup-microbuild.yml
│   │   │   │   ├── enable-internal-runtimes.yml
│   │   │   │   ├── enable-internal-sources.yml
│   │   │   │   ├── generate-sbom.yml
│   │   │   │   ├── get-delegation-sas.yml
│   │   │   │   ├── get-federated-access-token.yml
│   │   │   │   ├── install-microbuild-impl.yml
│   │   │   │   ├── install-microbuild.yml
│   │   │   │   ├── publish-build-artifacts.yml
│   │   │   │   ├── publish-logs.yml
│   │   │   │   ├── publish-pipeline-artifacts.yml
│   │   │   │   ├── retain-build.yml
│   │   │   │   ├── send-to-helix.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1-publish.yml
│   │   │   └── variables/
│   │   │       └── pool-providers.yml
│   │   ├── cross/
│   │   │   ├── armel/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── build-android-rootfs.sh
│   │   │   ├── build-rootfs.sh
│   │   │   ├── install-debs.py
│   │   │   ├── riscv64/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── tizen-build-rootfs.sh
│   │   │   ├── tizen-fetch.sh
│   │   │   └── toolchain.cmake
│   │   ├── darc-init.ps1
│   │   ├── darc-init.sh
│   │   ├── dotnet-install.cmd
│   │   ├── dotnet-install.ps1
│   │   ├── dotnet-install.sh
│   │   ├── dotnet.cmd
│   │   ├── dotnet.ps1
│   │   ├── dotnet.sh
│   │   ├── enable-cross-org-publishing.ps1
│   │   ├── generate-locproject.ps1
│   │   ├── helixpublish.proj
│   │   ├── init-tools-native.cmd
│   │   ├── init-tools-native.ps1
│   │   ├── init-tools-native.sh
│   │   ├── internal/
│   │   │   ├── Directory.Build.props
│   │   │   ├── NuGet.config
│   │   │   └── Tools.csproj
│   │   ├── internal-feed-operations.ps1
│   │   ├── internal-feed-operations.sh
│   │   ├── loc/
│   │   │   └── P22DotNetHtmlLocalization.lss
│   │   ├── msbuild.ps1
│   │   ├── msbuild.sh
│   │   ├── native/
│   │   │   ├── CommonLibrary.psm1
│   │   │   ├── common-library.sh
│   │   │   ├── init-compiler.sh
│   │   │   ├── init-distro-rid.sh
│   │   │   ├── init-os-and-arch.sh
│   │   │   ├── install-cmake-test.sh
│   │   │   ├── install-cmake.sh
│   │   │   ├── install-dependencies.sh
│   │   │   └── install-tool.ps1
│   │   ├── pipeline-logging-functions.ps1
│   │   ├── pipeline-logging-functions.sh
│   │   ├── post-build/
│   │   │   ├── check-channel-consistency.ps1
│   │   │   ├── nuget-validation.ps1
│   │   │   ├── nuget-verification.ps1
│   │   │   ├── publish-using-darc.ps1
│   │   │   ├── redact-logs.ps1
│   │   │   └── symbols-validation.ps1
│   │   ├── renovate.env
│   │   ├── retain-build.ps1
│   │   ├── sdk-task.ps1
│   │   ├── sdk-task.sh
│   │   ├── template-guidance.md
│   │   ├── templates/
│   │   │   ├── job/
│   │   │   │   ├── job.yml
│   │   │   │   ├── onelocbuild.yml
│   │   │   │   ├── publish-build-assets.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1.yml
│   │   │   ├── jobs/
│   │   │   │   ├── jobs.yml
│   │   │   │   └── source-build.yml
│   │   │   ├── post-build/
│   │   │   │   ├── common-variables.yml
│   │   │   │   ├── post-build.yml
│   │   │   │   └── setup-maestro-vars.yml
│   │   │   ├── steps/
│   │   │   │   ├── enable-internal-runtimes.yml
│   │   │   │   ├── enable-internal-sources.yml
│   │   │   │   ├── generate-sbom.yml
│   │   │   │   ├── get-delegation-sas.yml
│   │   │   │   ├── get-federated-access-token.yml
│   │   │   │   ├── publish-build-artifacts.yml
│   │   │   │   ├── publish-logs.yml
│   │   │   │   ├── publish-pipeline-artifacts.yml
│   │   │   │   ├── retain-build.yml
│   │   │   │   ├── send-to-helix.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   ├── source-index-stage1-publish.yml
│   │   │   │   └── vmr-sync.yml
│   │   │   ├── variables/
│   │   │   │   └── pool-providers.yml
│   │   │   └── vmr-build-pr.yml
│   │   ├── templates-official/
│   │   │   ├── job/
│   │   │   │   ├── job.yml
│   │   │   │   ├── onelocbuild.yml
│   │   │   │   ├── publish-build-assets.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1.yml
│   │   │   ├── jobs/
│   │   │   │   ├── jobs.yml
│   │   │   │   └── source-build.yml
│   │   │   ├── post-build/
│   │   │   │   ├── common-variables.yml
│   │   │   │   ├── post-build.yml
│   │   │   │   └── setup-maestro-vars.yml
│   │   │   ├── steps/
│   │   │   │   ├── enable-internal-runtimes.yml
│   │   │   │   ├── enable-internal-sources.yml
│   │   │   │   ├── generate-sbom.yml
│   │   │   │   ├── get-delegation-sas.yml
│   │   │   │   ├── get-federated-access-token.yml
│   │   │   │   ├── publish-build-artifacts.yml
│   │   │   │   ├── publish-logs.yml
│   │   │   │   ├── publish-pipeline-artifacts.yml
│   │   │   │   ├── retain-build.yml
│   │   │   │   ├── send-to-helix.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1-publish.yml
│   │   │   └── variables/
│   │   │       └── pool-providers.yml
│   │   ├── tools.ps1
│   │   ├── tools.sh
│   │   ├── vmr-sync.ps1
│   │   └── vmr-sync.sh
│   ├── common-variables.yml
│   ├── e2e-test.yml
│   └── pipelines/
│       └── apiscan-steps.yml
├── es-metadata.yml
├── global.json
├── src/
│   ├── Microsoft.DotNet.XHarness.Android/
│   │   ├── AdbExitCodes.cs
│   │   ├── AdbFailureException.cs
│   │   ├── AdbRunner.cs
│   │   ├── AndroidDevice.cs
│   │   ├── ApkHelper.cs
│   │   ├── Execution/
│   │   │   ├── AdbProcessManager.cs
│   │   │   ├── AdbReportFactory.cs
│   │   │   ├── Api23AndOlderReportManager.cs
│   │   │   ├── IAdbProcessManager.cs
│   │   │   ├── IReportManager.cs
│   │   │   └── NewReportManager.cs
│   │   ├── InstrumentationRunner.cs
│   │   └── Microsoft.DotNet.XHarness.Android.csproj
│   ├── Microsoft.DotNet.XHarness.Apple/
│   │   ├── AppOperations/
│   │   │   ├── AppInstaller.cs
│   │   │   ├── AppRunner.cs
│   │   │   ├── AppRunnerBase.cs
│   │   │   ├── AppRunnerFactory.cs
│   │   │   ├── AppTester.cs
│   │   │   ├── AppTesterFactory.cs
│   │   │   └── AppUninstaller.cs
│   │   ├── CommunicationChannel.cs
│   │   ├── CrashSnapshotReporterFactory.cs
│   │   ├── Darwin.cs
│   │   ├── DeviceFinder.cs
│   │   ├── DeviceLogCapturerFactory.cs
│   │   ├── ErrorKnowledgeBase.cs
│   │   ├── ExitCodeDetector.cs
│   │   ├── ILogger.cs
│   │   ├── Microsoft.DotNet.XHarness.Apple.csproj
│   │   └── Orchestration/
│   │       ├── BaseOrchestrator.cs
│   │       ├── InstallOrchestrator.cs
│   │       ├── JustRunOrchestrator.cs
│   │       ├── JustTestOrchestrator.cs
│   │       ├── RunOrchestrator.cs
│   │       ├── SimulatorResetOrchestrator.cs
│   │       ├── TestOrchestrator.cs
│   │       └── UninstallOrchestrator.cs
│   ├── Microsoft.DotNet.XHarness.CLI/
│   │   ├── CommandArguments/
│   │   │   ├── Android/
│   │   │   │   ├── AndroidAdbCommandArguments.cs
│   │   │   │   ├── AndroidArchitecture.cs
│   │   │   │   ├── AndroidDeviceCommandArguments.cs
│   │   │   │   ├── AndroidInstallCommandArguments.cs
│   │   │   │   ├── AndroidRunCommandArguments.cs
│   │   │   │   ├── AndroidStateCommandArguments.cs
│   │   │   │   ├── AndroidTestCommandArguments.cs
│   │   │   │   ├── AndroidUninstallCommandArguments.cs
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── ApiVersionArgument.cs
│   │   │   │   │   ├── DeviceArchitectureArgument.cs
│   │   │   │   │   ├── DeviceIdArgument.cs
│   │   │   │   │   ├── DeviceOutputFolderArgument.cs
│   │   │   │   │   ├── InstrumentationArguments.cs
│   │   │   │   │   ├── InstrumentationNameArgument.cs
│   │   │   │   │   ├── LaunchTimeoutArgument.cs
│   │   │   │   │   ├── PackageNameArgument.cs
│   │   │   │   │   ├── ShowAdbPathArgument.cs
│   │   │   │   │   └── WifiArgument.cs
│   │   │   │   └── IAndroidAppRunArguments.cs
│   │   │   ├── AndroidHeadless/
│   │   │   │   ├── AndroidHeadlessInstallCommandArguments.cs
│   │   │   │   ├── AndroidHeadlessRunCommandArguments.cs
│   │   │   │   ├── AndroidHeadlessTestCommandArguments.cs
│   │   │   │   ├── AndroidHeadlessUninstallCommandArguments.cs
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── RuntimePathArgument.cs
│   │   │   │   │   ├── TestAssemblyArgument.cs
│   │   │   │   │   ├── TestPathArgument.cs
│   │   │   │   │   └── TestScriptArgument.cs
│   │   │   │   └── IAndroidHeadlessAppRunArguments.cs
│   │   │   ├── Apple/
│   │   │   │   ├── AppleDeviceCommandsArguments.cs
│   │   │   │   ├── AppleInstallCommandArguments.cs
│   │   │   │   ├── AppleJustRunCommandArguments.cs
│   │   │   │   ├── AppleJustTestCommandArguments.cs
│   │   │   │   ├── AppleMlaunchCommandArguments.cs
│   │   │   │   ├── AppleResetSimulatorCommandArguments.cs
│   │   │   │   ├── AppleRunCommandArguments.cs
│   │   │   │   ├── AppleStateCommandArguments.cs
│   │   │   │   ├── AppleTestCommandArguments.cs
│   │   │   │   ├── AppleUninstallCommandArguments.cs
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── BundleIdentifierArgument.cs
│   │   │   │   │   ├── CommunicationChannelArgument.cs
│   │   │   │   │   ├── DeviceNameArgument.cs
│   │   │   │   │   ├── EnableLldbArgument.cs
│   │   │   │   │   ├── EnvironmentalVariablesArgument.cs
│   │   │   │   │   ├── ForceInstallationArgument.cs
│   │   │   │   │   ├── HideProgressArgument.cs
│   │   │   │   │   ├── IncludeWirelessArgument.cs
│   │   │   │   │   ├── LaunchTimeoutArgument.cs
│   │   │   │   │   ├── ListInstalledArgument.cs
│   │   │   │   │   ├── MlaunchArgument.cs
│   │   │   │   │   ├── NoWaitArgument.cs
│   │   │   │   │   ├── ResetSimulatorArgument.cs
│   │   │   │   │   ├── ShowDevicesUUIDArgument.cs
│   │   │   │   │   ├── ShowSimulatorsUUIDArgument.cs
│   │   │   │   │   ├── SignalAppEndArgument.cs
│   │   │   │   │   ├── TargetArgument.cs
│   │   │   │   │   ├── XcodeArgument.cs
│   │   │   │   │   └── XmlResultJargonArgument.cs
│   │   │   │   ├── IAppleAppRunArguments.cs
│   │   │   │   ├── IAppleArguments.cs
│   │   │   │   └── Simulators/
│   │   │   │       ├── FindCommandArguments.cs
│   │   │   │       ├── InstallCommandArguments.cs
│   │   │   │       ├── ListCommandArguments.cs
│   │   │   │       └── SimulatorsCommandArguments.cs
│   │   │   ├── Argument.cs
│   │   │   ├── Arguments/
│   │   │   │   ├── AppPathArgument.cs
│   │   │   │   ├── ClassMethodFilters.cs
│   │   │   │   ├── EnableCoverageArgument.cs
│   │   │   │   ├── ExpectedExitCodeArgument.cs
│   │   │   │   ├── OutputDirectoryArgument.cs
│   │   │   │   ├── SingleMethodFilters.cs
│   │   │   │   ├── TimeoutArgument.cs
│   │   │   │   ├── TypeFromAssemblyArgument.cs
│   │   │   │   ├── WebServerHttpEnvironmentVariables.cs
│   │   │   │   ├── WebServerHttpsEnvironmentVariables.cs
│   │   │   │   ├── WebServerMiddlewareArgument.cs
│   │   │   │   ├── WebServerUploadResults.cs
│   │   │   │   ├── WebServerUseCorsArguments.cs
│   │   │   │   ├── WebServerUseCrossOriginPolicyArguments.cs
│   │   │   │   ├── WebServerUseDefaultFiles.cs
│   │   │   │   └── WebServerUseHttpsArguments.cs
│   │   │   ├── DiagnosticsArgument.cs
│   │   │   ├── HelpArgument.cs
│   │   │   ├── UseJsonArgument.cs
│   │   │   ├── VerbosityArgument.cs
│   │   │   ├── WASI/
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── WasmEngineArgument.cs
│   │   │   │   │   ├── WasmEngineArguments.cs
│   │   │   │   │   └── WasmEngineLocationArgument.cs
│   │   │   │   └── WasiTestCommandArguments.cs
│   │   │   ├── WASM/
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── BackgroundThrottlingArgument.cs
│   │   │   │   │   ├── BrowserArgument.cs
│   │   │   │   │   ├── BrowserArguments.cs
│   │   │   │   │   ├── BrowserLocationArgument.cs
│   │   │   │   │   ├── DebuggerPortArgument.cs
│   │   │   │   │   ├── ErrorPatternsFileArgument.cs
│   │   │   │   │   ├── HTMLFileArgument.cs
│   │   │   │   │   ├── JavaScriptEngineArgument.cs
│   │   │   │   │   ├── JavaScriptEngineArguments.cs
│   │   │   │   │   ├── JavaScriptEngineLocationArgument.cs
│   │   │   │   │   ├── JavaScriptFileArgument.cs
│   │   │   │   │   ├── LocaleArgument.cs
│   │   │   │   │   ├── NoHeadlessArgument.cs
│   │   │   │   │   ├── NoIncognitoArgument.cs
│   │   │   │   │   ├── NoQuitArgument.cs
│   │   │   │   │   ├── PageLoadStrategyArgument.cs
│   │   │   │   │   ├── SymbolMapFileArgument.cs
│   │   │   │   │   ├── SymbolicatePatternsFileArgument.cs
│   │   │   │   │   └── SymbolicatorArgument.cs
│   │   │   │   ├── IWebServerArguments.cs
│   │   │   │   ├── WasmTestBrowserCommandArguments.cs
│   │   │   │   ├── WasmTestCommandArguments.cs
│   │   │   │   └── WebServerCommandArguments.cs
│   │   │   └── XHarnessCommandArguments.cs
│   │   ├── Commands/
│   │   │   ├── Android/
│   │   │   │   ├── AndroidAdbCommand.cs
│   │   │   │   ├── AndroidCommand.cs
│   │   │   │   ├── AndroidCommandSet.cs
│   │   │   │   ├── AndroidDeviceCommand.cs
│   │   │   │   ├── AndroidInstallCommand.cs
│   │   │   │   ├── AndroidRunCommand.cs
│   │   │   │   ├── AndroidStateCommand.cs
│   │   │   │   ├── AndroidTestCommand.cs
│   │   │   │   ├── AndroidUninstallCommand.cs
│   │   │   │   └── IDiagnosticDataExtensions.cs
│   │   │   ├── AndroidHeadless/
│   │   │   │   ├── AndroidHeadlessCommandSet.cs
│   │   │   │   ├── AndroidHeadlessInstallCommand.cs
│   │   │   │   ├── AndroidHeadlessRunCommand.cs
│   │   │   │   ├── AndroidHeadlessTestCommand.cs
│   │   │   │   └── AndroidHeadlessUninstallCommand.cs
│   │   │   ├── Apple/
│   │   │   │   ├── AppleAppCommand.cs
│   │   │   │   ├── AppleCommand.cs
│   │   │   │   ├── AppleCommandSet.cs
│   │   │   │   ├── AppleDeviceCommand.cs
│   │   │   │   ├── AppleInstallCommand.cs
│   │   │   │   ├── AppleJustRunCommand.cs
│   │   │   │   ├── AppleJustTestCommand.cs
│   │   │   │   ├── AppleMlaunchCommand.cs
│   │   │   │   ├── AppleResetSimulatorCommand.cs
│   │   │   │   ├── AppleRunCommand.cs
│   │   │   │   ├── AppleStateCommand.cs
│   │   │   │   ├── AppleTestCommand.cs
│   │   │   │   ├── AppleUninstallCommand.cs
│   │   │   │   └── Simulators/
│   │   │   │       ├── FindCommand.cs
│   │   │   │       ├── InstallCommand.cs
│   │   │   │       ├── ListCommand.cs
│   │   │   │       ├── Simulator.cs
│   │   │   │       ├── SimulatorsCommand.cs
│   │   │   │       └── SimulatorsCommandSet.cs
│   │   │   ├── GetStateCommand.cs
│   │   │   ├── WASI/
│   │   │   │   ├── Engine/
│   │   │   │   │   └── WasiTestCommand.cs
│   │   │   │   └── WasiCommandSet.cs
│   │   │   ├── WASM/
│   │   │   │   ├── Browser/
│   │   │   │   │   ├── WasmBrowserTestRunner.cs
│   │   │   │   │   └── WasmTestBrowserCommand.cs
│   │   │   │   ├── ErrorPatternScanner.cs
│   │   │   │   ├── JS/
│   │   │   │   │   └── WasmTestCommand.cs
│   │   │   │   ├── WasmCommandSet.cs
│   │   │   │   ├── WasmLogMessage.cs
│   │   │   │   ├── WasmTestMessagesProcessor.cs
│   │   │   │   └── WebServerCommand.cs
│   │   │   ├── WebServer.cs
│   │   │   ├── XHarnessCommand.cs
│   │   │   ├── XHarnessHelpCommand.cs
│   │   │   └── XHarnessVersionCommand.cs
│   │   ├── Microsoft.DotNet.XHarness.CLI.csproj
│   │   ├── Program.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Resources/
│   │   │   ├── Strings.Designer.cs
│   │   │   └── Strings.resx
│   │   └── XHarnessConsoleLoggerFormatter.cs
│   ├── Microsoft.DotNet.XHarness.Common/
│   │   ├── CLI/
│   │   │   ├── EnvironmentVariables.cs
│   │   │   ├── ExitCode.cs
│   │   │   └── NoDeviceFoundException.cs
│   │   ├── CommandDiagnostics.cs
│   │   ├── Execution/
│   │   │   ├── IMacOSProcessManager.cs
│   │   │   ├── IProcessManager.cs
│   │   │   ├── LinuxProcessManager.cs
│   │   │   ├── MacOSProcessManager.cs
│   │   │   ├── ProcessManager.cs
│   │   │   ├── ProcessManagerFactory.cs
│   │   │   ├── UnixProcessManager.cs
│   │   │   └── WindowsProcessManager.cs
│   │   ├── Logging/
│   │   │   ├── AggregatedLog.cs
│   │   │   ├── CallbackLog.cs
│   │   │   ├── ConsoleLog.cs
│   │   │   ├── FileBackedLog.cs
│   │   │   ├── ILog.cs
│   │   │   ├── Log.cs
│   │   │   ├── MemoryLog.cs
│   │   │   ├── NullLog.cs
│   │   │   ├── ReadableLog.cs
│   │   │   └── ScanLog.cs
│   │   ├── Microsoft.DotNet.XHarness.Common.csproj
│   │   ├── RunSummaryEmitter.cs
│   │   ├── TargetPlatform.cs
│   │   ├── Utilities/
│   │   │   ├── DisposableList.cs
│   │   │   ├── Extensions.cs
│   │   │   ├── FileUtils.cs
│   │   │   └── StringUtils.cs
│   │   ├── WasmSymbolicatorBase.cs
│   │   └── XmlResultJargon.cs
│   ├── Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/
│   │   ├── DefaultAndroidEntryPoint.cs
│   │   └── Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit.csproj
│   ├── Microsoft.DotNet.XHarness.TestRunners.Common/
│   │   ├── AndroidApplicationEntryPointBase.cs
│   │   ├── ApplicationEntryPoint.cs
│   │   ├── ApplicationOptions.cs
│   │   ├── CoverageManager.cs
│   │   ├── Extensions.cs
│   │   ├── IDevice.cs
│   │   ├── IgnoreFileParser.cs
│   │   ├── LogWriter.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.Common.csproj
│   │   ├── MinimumLogLevel.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── TcpTextWriter.cs
│   │   ├── TestAssemblyInfo.cs
│   │   ├── TestCompletionStatus.cs
│   │   ├── TestExecutionState.cs
│   │   ├── TestFailureInfo.cs
│   │   ├── TestResult.cs
│   │   ├── TestRunResult.cs
│   │   ├── TestRunSelector.cs
│   │   ├── TestRunSelectorType.cs
│   │   ├── TestRunner.cs
│   │   ├── WasmApplicationEntryPointBase.cs
│   │   └── iOSApplicationEntryPointBase.cs
│   ├── Microsoft.DotNet.XHarness.TestRunners.NUnit/
│   │   ├── FilterBuilder.cs
│   │   ├── INUnitTestRunner.cs
│   │   ├── IResultSummary.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.NUnit.csproj
│   │   ├── NUnit3XmlOutputWriter.cs
│   │   ├── NUnitTestListener.cs
│   │   ├── NUnitTestRunner.cs
│   │   ├── OutputWriter.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── ResultSummary.cs
│   │   ├── TestStatusExtensions.cs
│   │   └── XmlResultJargonExtensions.cs
│   ├── Microsoft.DotNet.XHarness.TestRunners.Xunit/
│   │   ├── AndroidApplicationEntryPoint.cs
│   │   ├── CompletionCallbackExecutionSink.cs
│   │   ├── CustomXunitTestRunner.cs
│   │   ├── EnvironmentVariables.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.Xunit.csproj
│   │   ├── NUnit3Xml.xslt
│   │   ├── NUnitXml.xslt
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── ReflectionBasedXunitTestRunner.cs
│   │   ├── TestCaseExtensions.cs
│   │   ├── ThreadlessXunitTestRunner.cs
│   │   ├── WasmApplicationEntryPoint.cs
│   │   ├── WasmThreadedTestRunner.cs
│   │   ├── WasmXmlResultWriter.cs
│   │   ├── XUnitFilter.cs
│   │   ├── XUnitFilterType.cs
│   │   ├── XUnitFiltersCollection.cs
│   │   ├── XUnitTestRunner.cs
│   │   ├── XunitTestRunnerBase.cs
│   │   ├── YieldingXunitTestFrameworkExecutor.cs
│   │   └── iOSApplicationEntryPoint.cs
│   └── Microsoft.DotNet.XHarness.iOS.Shared/
│       ├── AppBundleInformation.cs
│       ├── AppBundleInformationParser.cs
│       ├── Collections/
│       │   ├── BlockingEnumerableCollection.cs
│       │   └── IAsyncEnumerable.cs
│       ├── CrashSnapshotReporter.cs
│       ├── Execution/
│       │   ├── Arguments.cs
│       │   ├── EnviromentVariables.cs
│       │   ├── IMlaunchProcessManager.cs
│       │   ├── MLaunchArguments.cs
│       │   └── MlaunchProcessManager.cs
│       ├── Extension.cs
│       ├── Hardware/
│       │   ├── Device.cs
│       │   ├── HardwareDeviceLoader.cs
│       │   ├── IDevice.cs
│       │   ├── IDeviceLoader.cs
│       │   ├── IHardwareDevice.cs
│       │   ├── ISimulatorDevice.cs
│       │   ├── ISimulatorLoader.cs
│       │   ├── SimDevicePair.cs
│       │   ├── SimDeviceSpecification.cs
│       │   ├── SimDeviceType.cs
│       │   ├── SimRuntime.cs
│       │   ├── SimulatorDevice.cs
│       │   ├── SimulatorLoader.cs
│       │   ├── SimulatorSelector.cs
│       │   └── TCCDatabase.cs
│       ├── IErrorKnowledgeBase.cs
│       ├── IResultFileHandler.cs
│       ├── IResultParser.cs
│       ├── ITestReporter.cs
│       ├── Listeners/
│       │   ├── SimpleFileListener.cs
│       │   ├── SimpleHttpListener.cs
│       │   ├── SimpleListener.cs
│       │   ├── SimpleListenerFactory.cs
│       │   ├── SimpleTcpListener.cs
│       │   ├── TcpTunnel.cs
│       │   └── TunnelBore.cs
│       ├── Logging/
│       │   ├── AppInstallMonitorLog.cs
│       │   ├── CaptureLog.cs
│       │   ├── DeviceLogCapturer.cs
│       │   ├── IEventLogger.cs
│       │   ├── ILogs.cs
│       │   ├── LogFile.cs
│       │   ├── LogType.cs
│       │   ├── Logs.cs
│       │   └── WrenchLog.cs
│       ├── Microsoft.DotNet.XHarness.iOS.Shared.csproj
│       ├── ResultFileHandler.cs
│       ├── RunMode.cs
│       ├── SdkVersions.cs
│       ├── TestExecutingResult.cs
│       ├── TestReporter.cs
│       ├── TestReporterFactory.cs
│       ├── TestTarget.cs
│       ├── Utilities/
│       │   ├── DirectoryUtilities.cs
│       │   ├── Extensions.cs
│       │   ├── Helpers.cs
│       │   ├── PlistExtensions.cs
│       │   └── ProjectFileExtensions.cs
│       └── XmlResults/
│           ├── IXmlResultParser.cs
│           ├── NUnitV2ResultParser.cs
│           ├── NUnitV2TestReportGenerator.cs
│           ├── NUnitV3ResultParser.cs
│           ├── NUnitV3TestReportGenerator.cs
│           ├── TestReportGenerator.cs
│           ├── TouchUnitResultParser.cs
│           ├── TouchUnitTestReportGenerator.cs
│           ├── TrxResultParser.cs
│           ├── TrxTestReportGenerator.cs
│           ├── XUnitResultParser.cs
│           ├── XUnitTestReportGenerator.cs
│           └── XmlResultParser.cs
├── tests/
│   ├── Directory.Build.targets
│   ├── Microsoft.DotNet.XHarness.Android.Tests/
│   │   ├── AdbRunnerLogFilterTests.cs
│   │   ├── AdbRunnerTests.cs
│   │   ├── InstrumentationRunnerSummaryTests.cs
│   │   └── Microsoft.DotNet.XHarness.Android.Tests.csproj
│   ├── Microsoft.DotNet.XHarness.Apple.Tests/
│   │   ├── AppOperations/
│   │   │   ├── AppInstallerTests.cs
│   │   │   ├── AppRunTestBase.cs
│   │   │   ├── AppRunnerTests.cs
│   │   │   ├── AppTesterTests.cs
│   │   │   └── AppUninstallerTests.cs
│   │   ├── DeviceFinderTests.cs
│   │   ├── ErrorKnowledgeBaseTests.cs
│   │   ├── ExitCodeDetectorTests.cs
│   │   ├── Microsoft.DotNet.XHarness.Apple.Tests.csproj
│   │   ├── MockLogs.cs
│   │   └── Orchestration/
│   │       ├── CopyLogsToMainLogTests.cs
│   │       ├── InstallOrchestratorTests.cs
│   │       ├── JustRunOrchestratorTests.cs
│   │       ├── JustTestOrchestratorTests.cs
│   │       ├── OrchestratorTestBase.cs
│   │       ├── RunOrchestratorTests.cs
│   │       ├── SimulatorResetOrchestratorTests.cs
│   │       ├── TestOrchestratorTests.cs
│   │       └── UninstallOrchestratorTests.cs
│   ├── Microsoft.DotNet.XHarness.CLI.Tests/
│   │   ├── CommandArguments/
│   │   │   └── ArgumentTests.cs
│   │   ├── Commands/
│   │   │   └── XHarnessCommandTests.cs
│   │   ├── Microsoft.DotNet.XHarness.CLI.Tests.csproj
│   │   ├── Resources/
│   │   │   └── StringsTests.cs
│   │   ├── UnitTestArguments.cs
│   │   └── UnitTestCommand.cs
│   ├── Microsoft.DotNet.XHarness.Common.Tests/
│   │   ├── Execution/
│   │   │   └── ProcessManagerTests.cs
│   │   ├── Logging/
│   │   │   ├── CallbackLogTest.cs
│   │   │   ├── ConsoleLogTest.cs
│   │   │   └── ScanLogTest.cs
│   │   ├── Microsoft.DotNet.XHarness.Common.Tests.csproj
│   │   └── Utilities/
│   │       └── StringUtilsTests.cs
│   ├── Microsoft.DotNet.XHarness.TestRunners.Tests/
│   │   ├── CoverageManagerTests.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.Tests.csproj
│   │   ├── NUnit/
│   │   │   ├── NUnit3XmlOutputWriterTests.cs
│   │   │   └── TestStatusExtensionsTests.cs
│   │   └── xUnit/
│   │       ├── XUnitFilterTests.cs
│   │       └── XUnitFiltersCollectionTests.cs
│   ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests/
│   │   ├── AppBundleInformationParserTests.cs
│   │   ├── CrashSnapshotReporterTests.cs
│   │   ├── Execution/
│   │   │   └── MlaunchArgumentsTests.cs
│   │   ├── Hardware/
│   │   │   ├── DefaultSimulatorSelectorTests.cs
│   │   │   ├── DeviceTest.cs
│   │   │   ├── HardwareDeviceLoaderTests.cs
│   │   │   ├── SimulatorDeviceTest.cs
│   │   │   ├── SimulatorLoaderTests.cs
│   │   │   └── TCCDatabaseTests.cs
│   │   ├── Listeners/
│   │   │   ├── SimpleFileListenerTest.cs
│   │   │   ├── SimpleListenerFactoryTest.cs
│   │   │   └── SimpleTcpListenerTest.cs
│   │   ├── Logging/
│   │   │   ├── CaptureLogTest.cs
│   │   │   ├── LogFileTest.cs
│   │   │   └── LogsTest.cs
│   │   ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests.csproj
│   │   ├── ResultFileHandlerTests.cs
│   │   ├── Samples/
│   │   │   ├── Info.plist
│   │   │   ├── Issue8214.xml
│   │   │   ├── Issue95.xml
│   │   │   ├── MtouchArchMissingEverywhere.xml
│   │   │   ├── MtouchArchMissingInConfiguration.xml
│   │   │   ├── NUnitV2Sample.xml
│   │   │   ├── NUnitV2SampleFailure.xml
│   │   │   ├── NUnitV3Sample.xml
│   │   │   ├── NUnitV3SampleFailure.xml
│   │   │   ├── NUnitV3SampleFailures.xml
│   │   │   ├── NUnitV3SampleParameterizedFailure.xml
│   │   │   ├── NUnitV3SampleSuccess.xml
│   │   │   ├── TestCaseFailures.xml
│   │   │   ├── TestProject/
│   │   │   │   ├── Info.plist
│   │   │   │   └── SystemXunit.csproj
│   │   │   ├── TouchUnitSample.xml
│   │   │   ├── TouchUnitSample2.xml
│   │   │   ├── devices.xml
│   │   │   ├── run-log.txt
│   │   │   ├── simulators.xml
│   │   │   └── xUnitSample.xml
│   │   ├── TestExecutingResultTests.cs
│   │   ├── TestReporterTests.cs
│   │   ├── Utilities/
│   │   │   ├── PListExtensionsTests.cs
│   │   │   └── ProjectFileExtensionsTests.cs
│   │   └── XmlResultParserTests.cs
│   └── integration-tests/
│       ├── Android/
│       │   ├── Commands.Tests.proj
│       │   ├── Device.Tests.proj
│       │   ├── Simulator.Tests.proj
│       │   └── TestApks.proj
│       ├── Apple/
│       │   ├── Device.Commands.Tests.proj
│       │   ├── Device.iOS.Tests.proj
│       │   ├── Device.tvOS.Tests.proj
│       │   ├── Simulator.Commands.Tests.proj
│       │   ├── Simulator.Scouting.Commands.Tests.proj
│       │   ├── Simulator.Scouting.Tests.proj
│       │   ├── Simulator.Tests.proj
│       │   ├── SimulatorInstaller.Tests.proj
│       │   ├── TestAppBundle.proj
│       │   └── helix-payloads/
│       │       └── simulatorinstaller-integration-tests.sh
│       ├── Directory.Build.props
│       ├── Directory.Build.targets
│       ├── README.md
│       ├── Storage.props
│       └── WASM/
│           └── WASM.Helix.SDK.Tests.proj
└── tools/
    ├── Install-XHarness.ps1
    ├── install-xharness.sh
    ├── run-e2e-test.ps1
    └── run-e2e-test.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .azuredevops/dependabot.yml
================================================
version: 2

# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github.
enable-campaigned-updates: false
enable-security-updates: false


================================================
FILE: .config/tsaoptions.json
================================================
{  
    "instanceUrl": "https://devdiv.visualstudio.com/",
    "template": "TFSDEVDIV",
    "projectName": "DEVDIV",
    "areaPath": "DevDiv\\NET Fundamentals\\Infrastructure\\XHarness",
    "iterationPath": "DevDiv",
    "notificationAliases": [ "runtimerepo-infra@microsoft.com" ],
    "repositoryName":"dotnet-xharness",
    "codebaseName": "dotnet-xharness",
    "serviceTreeId": "97d8e3f4-a4c4-4c48-8ce1-d6b3342c16f1"
}


================================================
FILE: .editorconfig
================================================
# editorconfig.org

# top-most EditorConfig file
root = true

# Default settings:
# A newline ending every file
# Use 4 spaces as indentation
[*]
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

[project.json]
indent_size = 2

# C# files
[*.cs]
# New line preferences
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true

# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current

# Modifier preferences
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

# avoid this. unless absolutely necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

# Types: use keywords instead of BCL types, and permit var only when the type is clear
csharp_style_var_for_built_in_types = true:silent
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = false:silent
csharp_style_deconstructed_variable_declaration = true:silent
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

# name all constant fields using PascalCase
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols  = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style    = pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds   = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
dotnet_naming_style.pascal_case_style.capitalization = pascal_case

# static fields should have s_ prefix
dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
dotnet_naming_rule.static_fields_should_have_prefix.symbols  = static_fields
dotnet_naming_rule.static_fields_should_have_prefix.style    = static_prefix_style
dotnet_naming_symbols.static_fields.applicable_kinds   = field
dotnet_naming_symbols.static_fields.required_modifiers = static
dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
dotnet_naming_style.static_prefix_style.required_prefix = s_
dotnet_naming_style.static_prefix_style.capitalization = camel_case

# internal and private fields should be _camelCase
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols  = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style    = camel_case_underscore_style
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case

# Code style defaults
csharp_using_directive_placement = outside_namespace:suggestion
dotnet_sort_system_directives_first = true
csharp_prefer_braces = true:silent
csharp_preserve_single_line_blocks = true:none
csharp_preserve_single_line_statements = false:none
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_simple_using_statement = false:none
csharp_style_prefer_switch_expression = true:suggestion

# Code quality
dotnet_style_readonly_field = true:suggestion
dotnet_code_quality_unused_parameters = non_public:suggestion

# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
csharp_prefer_simple_default_expression = true:suggestion

# Expression-bodied members
csharp_style_expression_bodied_methods = true:silent
csharp_style_expression_bodied_constructors = true:silent
csharp_style_expression_bodied_operators = true:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = true:silent

# Pattern matching
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion

# Null checking preferences
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion

# Other features
csharp_style_prefer_index_operator = false:none
csharp_style_prefer_range_operator = false:none
csharp_style_pattern_local_over_anonymous_function = false:none

# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = do_not_ignore
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

# Analyzers
dotnet_code_quality.ca1802.api_surface = private, internal
csharp_style_namespace_declarations=file_scoped:suggestion

# C++ Files
[*.{cpp,h,in}]
curly_bracket_next_line = true
indent_brace_style = Allman

# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
indent_size = 2

# Xml build files
[*.builds]
indent_size = 2

# Xml files
[*.{xml,stylecop,resx,ruleset}]
indent_size = 2

# Xml config files
[*.{props,targets,config,nuspec}]
indent_size = 2

# Shell scripts
[*.sh]
end_of_line = lf
[*.{cmd, bat}]
end_of_line = crlf


================================================
FILE: .git-blame-ignore-revs
================================================
# Change to file-scoped namespaces
2863beb74c1abad7ddfe9ef7afea6fc2605e8a03


================================================
FILE: .gitattributes
================================================
# Apply LF to shell scripts automatically
*.sh text eol=lf


================================================
FILE: .github/copilot-instructions.md
================================================
# XHarness Repository Copilot Instructions

## Project Overview

XHarness is a .NET command-line tool that enables running xUnit/NUnit tests on mobile platforms (Android, Apple iOS/tvOS/watchOS/xrOS/Mac Catalyst), WASI, and desktop browsers (WASM). It is part of the .NET ecosystem and is essential for cross-platform testing in the .NET Foundation projects.

**Key Capabilities:**
- Device/emulator management and discovery
- Application lifecycle management (install, run, uninstall)
- Test execution and result collection in multiple formats (text, xUnit/NUnit XML)
- Crash dump collection and symbolication
- TCP and USB connection modes
- Apple Simulator runtime installation
- Integration with Helix cloud testing infrastructure

## Architecture Overview

XHarness is organized into two main layers:

### Tooling Layer (src/)
- **Microsoft.DotNet.XHarness.CLI** - Main CLI entry point with command definitions
- **Microsoft.DotNet.XHarness.Android** - Android-specific operations using ADB
- **Microsoft.DotNet.XHarness.Apple** - Apple platform operations using mlaunch
- **Microsoft.DotNet.XHarness.iOS.Shared** - Apple mobile platforms shared functionality
- **Microsoft.DotNet.XHarness.Common** - Core building blocks (logging, execution, utilities, diagnostics)

### Application Layer (src/)
- **Microsoft.DotNet.XHarness.TestRunners.Common** - Test discovery, execution, and results aggregation
- **Microsoft.DotNet.XHarness.TestRunners.Xunit** - XUnit framework integration
- **Microsoft.DotNet.XHarness.TestRunners.NUnit** - NUnit framework integration
- **Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit** - Default Android entry point

## Command Structure

XHarness follows a platform → command pattern:
```bash
xharness [platform] [command] [options]
```

### Supported Platforms and Commands:

**Android Commands:**
- `AndroidTest`, `AndroidDevice`, `AndroidInstall`, `AndroidRun`, `AndroidUninstall`, `AndroidAdb`, `AndroidState`

**Apple Commands:**
- `AppleTest`, `AppleRun`, `AppleInstall`, `AppleUninstall`, `AppleJustTest`, `AppleJustRun`, `AppleDevice`, `AppleMlaunch`, `AppleState`

**Apple Simulator Commands:**
- `List`, `Find`, `Install`, `ResetSimulator`

**WASM Commands:**
- `WasmTest`, `WasmTestBrowser`, `WebServer`

**WASI Commands:**
- `WasiTest`

## Development Guidelines

### System Requirements
- .NET 6+ for development and runtime
- macOS with full Xcode installation for Apple scenarios
- Linux/macOS/Windows for Android scenarios
- Linux for browser scenarios

### Build System
- Use `./build.sh` (Linux/macOS) or `Build.cmd` (Windows) for proper SDK setup
- Alternative: `dotnet build XHarness.slnx` (requires correct .NET version)
- Integration with Arcade SDK for .NET Foundation build standards
- Azure DevOps pipelines for CI/CD

### Key Dependencies
- **ADB (Android Debug Bridge)** - Required for Android operations
- **mlaunch** - Required for Apple platform operations
- **Helix SDK** - For cloud testing integration
- Downloaded automatically during CLI build process

### Exit Codes
XHarness uses standardized exit codes (see `src/Microsoft.DotNet.XHarness.Common/CLI/ExitCode.cs`):
- `0` - SUCCESS
- `1` - TESTS_FAILED
- `70` - TIMED_OUT
- `78` - PACKAGE_INSTALLATION_FAILURE
- `80` - APP_CRASH
- `81` - DEVICE_NOT_FOUND
- And many more specific failure scenarios

## Platform-Specific Knowledge

### Android Development
- Uses ADB for device communication
- Supports APK installation and logcat collection
- Package name-based application identification
- Emulator and physical device support

### Apple Development
- Uses mlaunch for device/simulator communication
- Supports .app bundle and .ipa installations
- Requires proper code signing and provisioning profiles
- Complex simulator runtime management
- TCP connection workarounds for test result streaming

### WASM/WASI Development
- Browser-based test execution
- WebAssembly runtime requirements
- Custom web server for test hosting

## Testing Strategy

### Unit Tests
- Located in `tests/` directory with platform-specific test projects
- Follow naming convention: `Microsoft.DotNet.XHarness.[Component].Tests`
- Use xUnit framework consistently

### Integration Tests
- Located in `tests/integration-tests/`
- E2E tests that use Helix cloud infrastructure
- Test real device/simulator scenarios
- Use `./tools/run-e2e-test.sh` for execution

### Test Runners
- Applications must include TestRunner library for `apple test` command
- TestRunner handles environmental variables and TCP connections
- Alternative: Use `apple run` for apps without TestRunner

## Common Patterns and Conventions

### Command Implementation
- Extend `XHarnessCommand<T>` abstract base class
- Implement required properties: `CommandUsage`, `CommandDescription`, `Arguments`
- Use dependency injection for logging and services
- Return appropriate `ExitCode` enum values

### Logging
- Multiple logger types: `ConsoleLogger`, `FileLogger`, `MemoryLogger`, `AggregatedLogs`, `CallbackLogger`
- Console logger is default for commands
- File logger used for mlaunch and adb commands
- Memory logger used by platform-specific command runners

### Error Handling
- Use specific exception types in `Microsoft.DotNet.XHarness.Common.CLI`
- `NoDeviceFoundException` for device discovery failures
- Proper exit code mapping for different failure scenarios

### Environmental Variables
- `XHARNESS_DISABLE_COLORED_OUTPUT` - Disable colored logging
- `XHARNESS_LOG_WITH_TIMESTAMPS` - Enable timestamps
- `XHARNESS_LOG_TEST_START` - Log test start messages
- `XHARNESS_MLAUNCH_PATH` - Custom mlaunch path for development

## File and Directory Structure

```
/
├── src/                          # Source code
├── tests/                        # Unit and integration tests
├── docs/                         # Documentation
├── eng/                          # Build and engineering files
├── tools/                        # Development tools and scripts
├── azure-pipelines*.yml         # CI/CD pipeline definitions
├── XHarness.slnx                # Main solution file
├── build.sh / Build.cmd         # Build scripts
└── README.md                    # Main documentation
```

## Troubleshooting Guidelines

### Common Issues
1. **Apple unit tests not running**: Ensure TestRunner is included in app bundle
2. **iOS/tvOS device timeouts**: Use `--signal-app-end` flag and ensure app logs the `RUN_END_TAG`
3. **Build failures**: Check .NET SDK version and use provided build scripts
4. **Device not found**: Verify device connection and platform-specific tooling (ADB/mlaunch)

### Debugging Tips
- Use appropriate verbosity levels for logging
- Check device/simulator state before test execution
- Verify app signing and provisioning for Apple platforms
- Monitor TCP connections for test result streaming

## Development Workflow

### For Bug Fixes
1. Identify affected platform and component
2. Create unit tests to reproduce the issue
3. Implement minimal fix in appropriate layer
4. Ensure no regression in existing functionality
5. Update integration tests if needed

### For New Features
1. Understand platform-specific requirements
2. Design feature following existing command patterns
3. Implement with proper error handling and exit codes
4. Add comprehensive tests (unit and integration)
5. Update documentation and help text

### Code Quality
- Follow existing naming conventions and code patterns
- Use dependency injection for testability
- Implement proper logging throughout
- Handle platform-specific edge cases
- Maintain backwards compatibility when possible

## Self-Improvement Instructions

**IMPORTANT**: If you discover any issues, gaps, or outdated information in these instructions while working on XHarness issues, you must update this document with your new knowledge and learnings. This includes:

1. **New platform-specific quirks or workarounds discovered**
2. **Additional environmental variables or configuration options**
3. **Updated build procedures or dependency requirements**
4. **New testing patterns or debugging techniques**
5. **Command structure changes or new platform support**
6. **Performance optimization patterns**
7. **Security considerations or best practices**

When updating these instructions:
- Add specific examples and code snippets where helpful
- Include version information for any platform-specific requirements
- Document the context and scenario where the knowledge applies
- Maintain the existing structure and organization
- Test your changes to ensure accuracy

Your goal is to continuously improve these instructions to become the most effective autonomous agent for XHarness development, capable of solving issues, fixing bugs, and implementing new features efficiently.

---

*These instructions are designed to help you understand and work effectively with the XHarness codebase. Keep them updated as you learn more about the project.*

================================================
FILE: .github/workflows/backport.yml
================================================
name: Backport PR to branch
on:
  issue_comment:
    types: [created]
  schedule:
    # once a day at 13:00 UTC to cleanup old runs
    - cron: '0 13 * * *'

permissions:
  contents: write
  issues: write
  pull-requests: write
  actions: write

jobs:
  backport:
    uses: dotnet/arcade/.github/workflows/backport-base.yml@main


================================================
FILE: .github/workflows/copilot-setup-steps.yml
================================================
# Automatically run the setup steps when they are changed to allow for easy validation, and
# allow manual testing through the repository's "Actions" tab
on:
  workflow_dispatch:
  push:
    paths:
      - .github/workflows/copilot-setup-steps.yml
  pull_request:
    paths:
      - .github/workflows/copilot-setup-steps.yml

permissions:
  contents: read

jobs:

  copilot-setup-steps:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - name: Do an initial restore to ensure all dependencies are restored
        run: |
          ./eng/common/build.sh --restore
      - name: Put repo-local dotnet install on PATH
        run: |
          echo "PATH=$PWD/.dotnet:$PATH" >> $GITHUB_ENV

      - name: Check dotnet version
        run: |
          dotnet --version


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

# Local installations of .net core
.dotnet/

# Locally restored packages (when simulating AzDO build)
.packages/

# remove noise in mac os x
.DS_Store

# some ide stuff
.idea

.vscode/
.nuget/


================================================
FILE: Build.cmd
================================================
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*"
exit /b %ErrorLevel%


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct

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).


================================================
FILE: Directory.Build.props
================================================
<Project>

  <Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />

  <PropertyGroup>
    <LangVersion>latest</LangVersion>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
    <DisableImplicitNamespaceImports_DotNet>true</DisableImplicitNamespaceImports_DotNet>
    <Copyright>$(CopyrightNetFoundation)</Copyright>
    <Nullable>enable</Nullable>
    <!-- All .NET TFMs that shipped XHarness packages must support.
         Arcade defines NetCurrent/NetMinimum but drops older TFMs that downstream repos still need.
         Update this property when changing the supported range. -->
    <XHarnessNetTFMs>$(NetCurrent);net10.0;net9.0;net8.0</XHarnessNetTFMs>
  </PropertyGroup>

</Project>


================================================
FILE: Directory.Build.targets
================================================
<Project>

  <Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />

</Project>


================================================
FILE: Directory.Packages.props
================================================
<Project>

  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
    <!-- Arcade uses multiple feeds, so we need to supress this warning. -->
    <NoWarn>$(NoWarn);NU1507</NoWarn>
  </PropertyGroup>

  <ItemGroup>
    <PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.1" />
    <PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
    <PackageVersion Include="Mono.Options" Version="6.12.0.148" />
    <PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageVersion Include="Selenium.WebDriver" Version="4.0.0-alpha05" />
    <PackageVersion Include="Microsoft.Tools.Mlaunch" Version="1.1.113" />
    <PackageVersion Include="NUnit" Version="3.13.0" />
    <PackageVersion Include="NUnit.Engine" Version="3.13.0" />
    <PackageVersion Include="xunit.extensibility.execution" Version="$(XUnitVersion)" />
    <PackageVersion Include="xunit.runner.utility" Version="$(XUnitVersion)" />
    <PackageVersion Include="Moq" Version="4.20.70" />
  </ItemGroup>

</Project>


================================================
FILE: LICENSE.TXT
================================================
The MIT License (MIT)

Copyright (c) .NET Foundation and Contributors

All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================
FILE: NuGet.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
    <add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
    <add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
  </packageSources>
  <disabledPackageSources />
</configuration>


================================================
FILE: README.md
================================================
# XHarness

This repo contains the code to build the **XHarness dotnet tool** and a **TestRunner library** that makes running unit tests in mobile platforms easier.

## What is XHarness

XHarness is primarily a command line tool that enables running xUnit like tests on Android, Apple iOS / tvOS / WatchOS / xrOS / Mac Catalyst, WASI and desktop browsers (WASM).
It can
- locate devices/emulators
- install a given application, run it and collect results uninstalling it after,
- perform the operations above as part of one command or separately if need be,
- handle application crashes by collecting crash dumps (symbolicate),
- use different types of connection modes (network, USB cable),
- output test results in various different formats from text to xUnit/NUnit XML
- install Apple Simulator runtimes (different versions of iOS, tvOS...).

## System requirements

The tool requires **.NET 6** or later to be run. It is packaged as a `dotnet tool` command and can be installed using the [dotnet tool CLI](https://docs.microsoft.com/en-us/dotnet/core/tools/).

- The Apple scenarios require you to run the tool on MacOS with full Xcode installation
- Android scenarios are supported on Linux, macOS and Windows systems
- Browsers scenarios are supported on Linux systems

## Try the tool out quickly

If you want to test the tool quickly, following script will install the required .NET SDK and the XHarness tool locally in the current folder.

```bash
# Using bash on Linux/MacOS
curl -L https://aka.ms/get-xharness | bash -
```

```powershell
# Using PowerShell on Windows
iex ((New-Object System.Net.WebClient).DownloadString('https://aka.ms/get-xharness-ps1'))
```

You can delete the folder after you're done, nothing is installed in your system.

## Installation and usage

To install the latest version of the tool run (in bash):

```bash
dotnet tool install Microsoft.DotNet.XHarness.CLI                                                   \
    --global                                                                                        \
    --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json \
    --version "11.0.0-prerelease*"
```

Or run (in PowerShell):

```powershell
dotnet tool install Microsoft.DotNet.XHarness.CLI                                                   `
    --global                                                                                        `
    --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json `
    --version "11.0.0-prerelease*"
```

You can get a specific version from [the dotnet-eng feed](https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&view=versions&package=Microsoft.DotNet.XHarness.CLI&protocolType=NuGet) where it is published.
So far, we are in preview so omitting the version will fail to locate a stable version of the tool and fail the installation so a specific version has to be supplied.

To run the tool, use the `xharness` command.
The tool returns one of the exit codes [listed here (ExitCode.cs)](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.Common/CLI/ExitCode.cs).
The tool always expects the platform (`android`/`apple`/`browser`) followed by a command.
To get an up-to-date set of commands, please run `xharness help`.

> Applications run via the `apple test` command require a TestRunner inside of the iOS/tvOS app bundle to work properly.
The `apple run` command, on the other hand, doesn't expect the TestRunner and only runs the application and tries to detect the exit code. Detection of exit code might not work across different iOS versions reliably.
>
> **\*** See the [Test Runners section](#test-runners).

Example:

```bash
xharness android state
```

To list all the possible commands, use the `help` command:

```bash
xharness help
```

To get help for a specific command or sub-command, run:

```bash
xharness help apple
xharness help apple test
```

### Other settings

There are other settings which can be controlled via **environmental variables** and are primarily meant for build pipeline scenarios:

- `XHARNESS_DISABLE_COLORED_OUTPUT` - disable colored logging so that control characters are not making the logs hard to read
- `XHARNESS_LOG_WITH_TIMESTAMPS` - enable timestamps for logging
- `XHARNESS_LOG_TEST_START` - log test start messages, useful to diagnose when tests are hanging. Currently only works for WebAssembly
- `XHARNESS_MLAUNCH_PATH` - local path to the mlaunch binary when developing XHarness (when not using as .NET tool)

### Arcade/Helix integration

In case your repository is onboarded into [Arcade](https://github.com/dotnet/arcade) you can use the [Arcade Helix SDK](https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.Helix/Sdk) to run XHarness jobs over Helix. More on how to do that is described [here](https://github.com/dotnet/arcade/blob/master/src/Microsoft.DotNet.Helix/Sdk/tools/xharness-runner/Readme.md).

## Examples

To run an iOS/tvOS app bundle on a 64bit iPhone Simulator:

```bash
xharness apple test           \
    --app=/path/to/an.app     \
    --output-directory=out    \
    --target=ios-simulator-64
```

or the same can be achieved via the shorthand versions of the same options:

```bash
xharness apple test -a=/path/to/an.app -o=out -t=ios-simulator-64
```

The `out` dir will then contain log files such as these:
```console
iPhone X (iOS 13.3) - created by xharness.log   # logs from the Simulator
test-Simulator_iOS64.log                        # logs from the tool itself
test-ios-simulator-64-20200430_025916.xml       # test results in XML format
```

Example for Android apk:

```bash
xharness android test                                    \
    --output-directory=out                               \
    --package-name=net.dot.System.Numerics.Vectors.Tests \
    --app=/path/to/test.apk
```
Output directory will have a file with dump from logcat and a file with tests results.

## Test Runners

The repository also contains several TestRunners which are libraries that can be bundled inside of the application and execute the tests.
The TestRunner detects and executes unit tests inside of the application. It also connects to XHarness over TCP connection from within the running app bundle and reports test run results/state.

There is a library `Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit` that provides default logic for Android test app entry point.
It is possible to use `DefaultAndroidEntryPoint` from there for the test app by providing only test result path and test assemblies.
Other parameters can be overrided as well if needed.

Currently we support Xunit and NUnit test assemblies but the `Microsoft.DotNet.XHarness.Tests.Runners` supports implementation of custom runner too.

## Development instructions
When working on XHarness, there are couple of neat hacks that can improve the inner loop.
The repository can either be built using regular .NET, assuming you have new enough version:
```
dotnet build XHarness.slnx
```
or you can use the build scripts `build.sh` or `Build.cmd` in repository root which will install the correct .NET SDK into the `.dotnet` folder.
You can then use
```
./.dotnet/dotnet build XHarness.slnx
```

You can also use Visual Studio 2019+ and just F5 the `Microsoft.DotNet.XHarness.CLI` project.

### ADB, mlaunch
In order for XHarness to work, you will need ADB (for Android) and mlaunch (for anything Apple).
These are executables that go with the packaged .NET xharness tool.

The easiest way to get these at the moment for development purposes is to build the CLI project and they will be downloaded.
```
dotnet build src/Microsoft.DotNet.XHarness.CLI/Microsoft.DotNet.XHarness.CLI.csproj
```

You can then find these dependencies in `artifacts/obj/Microsoft.DotNet.XHarness.CLI/`.

For iOS flows, you can further store the path to mlaunch to an environmental variable `XHARNESS_MLAUNCH_PATH`
```
export XHARNESS_MLAUNCH_PATH='[xharness root]/artifacts/obj/Microsoft.DotNet.XHarness.CLI/mlaunch/bin/mlaunch'
```
and you won't have to specify the `--mlaunch` argument.

### Running E2E tests
In case you want to test your changes in XHarness, you can run E2E tests located in `/tests/integration-tests`. These usually download some pre-built application and send it to our "test cloud" called Helix together with an XHarness version built from your sources. There, XHarness executes the app on a device/simulator.

To run the E2E tests, you can find a script in `tools/` that will build everything and create the cloud job for you:
```
./tools/run-e2e-test.sh Apple/Simulator.Tests.proj
```

## Troubleshooting

Some XHarness commands only work in some scenarios and it's good to know what to expect from the tool.
Some Android/Apple versions also require some workarounds and those are also good to know about.

### My Apple unit tests are not running

For the `apple test` command, XHarness expects the application to contain a `TestRunner` which is a library you can find in this repository.
This library executes unit tests similarly how you would execute them on other platforms.
However, the `TestRunner` from this repository contains more mechanisms that help to work around some issues (mostly in Apple platforms).

The way it works is that XHarness usually sets some [environmental variables](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/EnviromentVariables.cs) for the application and the [`TestRunner` recognizes them](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.TestRunners.Common/ApplicationOptions.cs) and acts upon them.

The workarounds we talk about are for example some TCP connections between the app and XHarness so that we can stream back the test results.

For these reasons, the `test` command won't just work with any app. For those scenarios, use the `apple run` commands.

### iOS/tvOS device runs are timing out

For some iOS/tvOS, we have problems detecting when the application exits on the real device (simulators work fine).
The workaround we went with lies in sharing a random string with the application using an [environmental variable `RUN_END_TAG`](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/EnviromentVariables.cs) and expecting the app to output this string at the end of its run.

To turn this workaround on, run XHarness with `--signal-app-end` and make sure your application logs the string it reads from the env variable.
Using the `TestRunner` from this repository will automatically give you this functionality.

## Contribution

We welcome contributions! Please follow the [Code of Conduct](CODE_OF_CONDUCT.md).

## Filing issues

This repo should contain issues that are tied to the XHarness command line tool and the TestRunners.

For other issues, please use the following repos:

- For .NET runtime and Base Class Library issues, file in the [dotnet/runtime](https://github.com/dotnet/runtime) repo
- For overall .NET SDK issues, file in the [dotnet/sdk](https://github.com/dotnet/sdk) repo

## License

.NET (including the xharness repo) is licensed under the [MIT](LICENSE.TXT) license.


================================================
FILE: SECURITY.md
================================================
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.3 BLOCK -->

## Security

Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).

If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.

## Reporting Security Issues

**Please do not report security vulnerabilities through public GitHub issues.**

Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).

If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).

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 original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).

Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:

  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
  * Full paths of source file(s) related to the manifestation of the issue
  * The location of the affected source code (tag/branch/commit or direct URL)
  * Any special configuration required to reproduce the issue
  * Step-by-step instructions to reproduce the issue
  * Proof-of-concept or exploit code (if possible)
  * Impact of the issue, including how an attacker might exploit the issue

This information will help us triage your report more quickly.

If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.

## Preferred Languages

We prefer all communications to be in English.

## Policy

Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).

<!-- END MICROSOFT SECURITY.MD BLOCK -->


================================================
FILE: THIRD-PARTY-NOTICES.TXT
================================================
.NET Core uses third-party libraries or other resources that may be
distributed under licenses different than the .NET Core software.

In the event that we accidentally failed to list a required notice, please
bring it to our attention. Post an issue or email us:

           dotnet@microsoft.com

The attached notices are provided for information only.

No notices are provided at this time.

================================================
FILE: XHarness.slnx
================================================
<Solution>
  <Folder Name="/Solution Items/">
    <File Path=".editorconfig" />
    <File Path="global.json" />
  </Folder>
  <Folder Name="/src/">
    <Project Path="src/Microsoft.DotNet.XHarness.Android/Microsoft.DotNet.XHarness.Android.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.Apple/Microsoft.DotNet.XHarness.Apple.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.CLI/Microsoft.DotNet.XHarness.CLI.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.Common/Microsoft.DotNet.XHarness.Common.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.iOS.Shared/Microsoft.DotNet.XHarness.iOS.Shared.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.TestRunners.Common/Microsoft.DotNet.XHarness.TestRunners.Common.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.TestRunners.NUnit/Microsoft.DotNet.XHarness.TestRunners.NUnit.csproj" />
    <Project Path="src/Microsoft.DotNet.XHarness.TestRunners.Xunit/Microsoft.DotNet.XHarness.TestRunners.Xunit.csproj" />
  </Folder>
  <Folder Name="/tests/">
    <Project Path="tests/Microsoft.DotNet.XHarness.Android.Tests/Microsoft.DotNet.XHarness.Android.Tests.csproj" />
    <Project Path="tests/Microsoft.DotNet.XHarness.Apple.Tests/Microsoft.DotNet.XHarness.Apple.Tests.csproj" />
    <Project Path="tests/Microsoft.DotNet.XHarness.CLI.Tests/Microsoft.DotNet.XHarness.CLI.Tests.csproj" />
    <Project Path="tests/Microsoft.DotNet.XHarness.Common.Tests/Microsoft.DotNet.XHarness.Common.Tests.csproj" />
    <Project Path="tests/Microsoft.DotNet.XHarness.iOS.Shared.Tests/Microsoft.DotNet.XHarness.iOS.Shared.Tests.csproj" />
    <Project Path="tests/Microsoft.DotNet.XHarness.TestRunners.Tests/Microsoft.DotNet.XHarness.TestRunners.Tests.csproj" />
  </Folder>
</Solution>


================================================
FILE: azure-pipelines-public.yml
================================================
variables:
- template: /eng/common-variables.yml
- template: /eng/common/templates/variables/pool-providers.yml

# CI and PR triggers
trigger:
  batch: true
  branches:
    include:
    - main
    - release/*

pr:
  branches:
    include:
    - main
    - release/*

# Build

stages:
- stage: Build_Windows_NT
  displayName: Build Windows
  jobs:
  - template: /eng/common/templates/jobs/jobs.yml
    parameters:
      enableTelemetry: true
      enablePublishBuildArtifacts: true
      enableMicrobuild: true
      publishingVersion: 4
      enablePublishBuildAssets: true
      helixRepo: dotnet/xharness

      jobs:
      - job: Windows_NT
        enablePublishing: true
        pool:
            name: $(DncEngPublicBuildPool)
            demands: ImageOverride -equals 1es-windows-2022-open
        strategy:
          matrix:
            Release:
              _BuildConfig: Release
              _PublishArgs: ''
            Debug:
              _BuildConfig: Debug
              _PublishArgs: /p:Publish=false
        steps:
        - script: eng\common\CIBuild.cmd
            -configuration $(_BuildConfig)
            -prepareMachine
            $(_PublishArgs)
          name: Build
          displayName: Build and run tests
          condition: succeeded()

        - task: PublishTestResults@2
          displayName: 'Publish Unit Test Results'
          inputs:
            testResultsFormat: xUnit
            testResultsFiles: '$(Build.SourcesDirectory)/artifacts/TestResults/**/*.xml'
            mergeTestResults: true
            searchFolder: $(system.defaultworkingdirectory)
            testRunTitle: XHarness unit tests - $(Agent.JobName)
          condition: succeededOrFailed()

- stage: Build_OSX
  displayName: Build OSX
  dependsOn:
  jobs:
  - template: /eng/common/templates/jobs/jobs.yml
    parameters:
      enableTelemetry: true
      enablePublishBuildArtifacts: true
      enableMicrobuild: true
      publishingVersion: 4
      enablePublishBuildAssets: true
      helixRepo: dotnet/xharness

      jobs:
      - job: OSX
        enablePublishing: true
        pool:
          vmImage: macOS-15
        strategy:
          matrix:
            Release:
              _BuildConfig: Release
              _PublishArgs: ''
            Debug:
              _BuildConfig: Debug
              _PublishArgs: /p:Publish=false
        steps:
        - script: eng/common/cibuild.sh
            --configuration $(_BuildConfig)
            --prepareMachine
            $(_PublishArgs)
          name: Build
          displayName: Build and run tests
          condition: succeeded()

        - publish: $(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping/Microsoft.DotNet.XHarness.CLI.11.0.0-ci.nupkg
          artifact: Microsoft.DotNet.XHarness.CLI.$(_BuildConfig)
          displayName: Publish XHarness CLI for Helix Testing
          condition: and(succeeded(), eq(variables['_BuildConfig'], 'Debug'))

        - task: PublishTestResults@2
          displayName: 'Publish Unit Test Results'
          inputs:
            testResultsFormat: xUnit
            testResultsFiles: '$(Build.SourcesDirectory)/artifacts/TestResults/**/*.xml'
            mergeTestResults: true
            searchFolder: $(system.defaultworkingdirectory)
            testRunTitle: XHarness unit tests - $(Agent.JobName)
          condition: succeededOrFailed()

# E2E tests

- template: eng/e2e-test.yml
  parameters:
    name: E2E_Android_Simulators
    displayName: Android - Simulators
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Android/Simulator.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_Android_Devices
    displayName: Android - Devices
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Android/Device.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_Android_Manual_Commands
    displayName: Android - Manual Commands
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Android/Commands.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_Apple_Simulators
    displayName: Apple - Simulators
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Simulator.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_iOS_Devices
    displayName: Apple - iOS devices
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Device.iOS.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_tvOS_Devices
    displayName: Apple - tvOS devices
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Device.tvOS.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_Apple_Simulator_Commands
    displayName: Apple - Simulator Commands
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Simulator.Commands.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_Apple_Device_Commands
    displayName: Apple - Device Commands
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Device.Commands.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_Apple_Simulator_Mgmt
    displayName: Apple - Simulator management
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/SimulatorInstaller.Tests.proj

- template: eng/e2e-test.yml
  parameters:
    name: E2E_WASM
    displayName: WASM
    testProject: $(Build.SourcesDirectory)/tests/integration-tests/WASM/WASM.Helix.SDK.Tests.proj


================================================
FILE: azure-pipelines.yml
================================================
variables:
- template: /eng/common-variables.yml@self
- template: /eng/common/templates-official/variables/pool-providers.yml@self

# CI triggers
trigger:
  batch: true
  branches:
    include:
    - main
    - release/*
    - internal/release/*

pr: none

# Scheduled trigger - runs once per week on Sunday at midnight UTC
schedules:
- cron: '0 0 * * 0'
  displayName: Weekly build
  branches:
    include:
    - main
  always: true

resources:
  repositories:
  - repository: 1ESPipelineTemplates
    type: git
    name: 1ESPipelineTemplates/1ESPipelineTemplates
    ref: refs/tags/release

extends:
  template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
  parameters:
    settings:
        networkIsolationPolicy: Permissive,CFSClean,CFSClean2
    sdl:
      tsa:
        enabled: true
      policheck:
        enabled: true
      binskim:
        enabled: true
      codeql:
        ${{ if startsWith(variables['Build.SourceBranch'], 'refs/heads/release/') }}:
          enabledOnNonDefaultBranches: true
    pool:
      name: $(DncEngInternalBuildPool)
      image: 1es-windows-2022
      os: windows
    stages:
    - stage: Build
      jobs:
      - template: /eng/common/templates-official/jobs/jobs.yml@self
        parameters:
          enableTelemetry: true
          enablePublishBuildArtifacts: true
          enableMicrobuild: true
          publishingVersion: 4
          ${{ if ne(variables['Build.Reason'], 'Schedule') }}:
            enablePublishBuildAssets: true
          helixRepo: dotnet/xharness
          jobs:
          - job: Windows_NT
            enablePublishing: true
            displayName: Build Windows
            timeoutInMinutes: 120
            steps:
              - script: eng\common\CIBuild.cmd -configuration $(_BuildConfig) -prepareMachine $(_InternalBuildArgs) /p:Test=false
                name: Build
                displayName: Build
                condition: succeeded()

              - template: /eng/pipelines/apiscan-steps.yml
            templateContext:
              outputs:
              - output: pipelineArtifact
                artifact: Artifacts_Windows_NT
                path: '$(Build.SourcesDirectory)\artifacts\bin\Microsoft.DotNet.XHarness.CLI'
                displayName: 'Publish Windows_NT Artifacts'
                condition: succeeded()
    - ${{ if ne(variables['Build.Reason'], 'Schedule') }}:
      - template: /eng/common/templates-official/post-build/post-build.yml@self
        parameters:
          publishingInfraVersion: 4
          enableSymbolValidation: true
          enableSourceLinkValidation: true


================================================
FILE: build.sh
================================================
#!/usr/bin/env bash

source="${BASH_SOURCE[0]}"

# resolve $SOURCE until the file is no longer a symlink
while [[ -h $source ]]; do
  scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
  source="$(readlink "$source")"

  # if $source was a relative symlink, we need to resolve it relative to the path where the
  # symlink file was located
  [[ $source != /* ]] && source="$scriptroot/$source"
done

scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
"$scriptroot/eng/common/build.sh" --build --restore $@


================================================
FILE: decoded_output.xml
================================================


================================================
FILE: docs/high-level-architecture.md
================================================
# Overview

This document provides a high-level overview of the XHarness architecture, which is organized into two main layers: the tooling layer and the application layer.

## Tooling layer

The tooling layer represents the foundation of the tool.

**XHarness.CLI** is the CLI that defines commands and arguments for interacting with XHarness. It serves as the main entry point for users.

Supported platforms include Android, Apple mobile, MacCatalyst, WASI, and desktop browsers (WASM). The available commands are:

### Android commands:
- `AndroidTest`
- `AndroidDevice`
- `AndroidInstall`
- `AndroidRun`
- `AndroidUninstall`
- `AndroidAdb`
- `AndroidState`

### Apple mobile commands:
- `AppleTest`
- `AppleRun`
- `AppleInstall`
- `AppleUninstall`
- `AppleJustTest`
- `AppleJustRun`
- `AppleDevice`
- `AppleMlaunch`
- `AppleState`

### Apple simulator commands:
- `List`
- `Find`
- `Install`
- `ResetSimulator`

### WASM commands:
- `WasmTest`
- `WasmTestBrowser`
- `WebServer`

### WASI commands:
- `WasiTest`

**XHarness.Android** and **XHarness.Apple** implement platform-specific operations and their orchestration. On Android, it uses `adb` runner for communication with devices and command execution. For Apple mobile platforms, it relies on `mlaunch` manager to interact with simulators and devices.

**XHarness.iOS.Shared** is specific to Apple mobile platforms, managing functionalities such as AppBundle information, simulators, and device configurations.

**XHarness.Common** provides the essential building blocks, including logging, execution, utilities, and diagnostics. Logging supports various formats, such as `ConsoleLogger`, `FileLogger`, `MemoryLogger`, `AggregatedLogs`, and `CallbackLogger`. The execution component implements platform-specific command runners. Utilities contain helper functions used across the tool. Diagnostics provide detailed information about the execution environment.

Logging is enabled by default, with the console logger being the default for commands. The file logger is used for `mlaunch` and `adb` commands. The memory logger is used by the platform-specific command runners.

## Application layer

The application layer manages test execution, discovery, and results aggregation.

**XHarness.TestRunners.XUnit** and **XHarness.TestRunners.NUnit** are framework-specific components designed to run tests using these frameworks.

**XHarness.TestRunners.Common** implements the tests discovery, execution, and results aggregation.

![High-level overview of the XHarness architecture](xharness-overview.svg)


================================================
FILE: docs/integrity-check.md
================================================
# Integrity check of 3rd party dependencies

## NuGet dependencies

All NuGet dependencies are checked and verified by Component Governance tool as part of the official build in the 1ES production pipeline.

## Android platform tools

Android platform tools are distributed as part of the XHarness.CLI NuGet package.
The tools and required dependencies are downloaded from the official Google repository (as documented in: https://developer.android.com/studio/releases/platform-tools) and embedded in the XHarness.CLI NuGet package for each supported host operating system.

- NOTE: Example URL used for downloading specific platform tools version for Windows: https://dl.google.com/android/repository/platform-tools_r30.0.5-windows.zip

This dependency is listed in the SBOM manifest generated during the official build of XHarness.CLI NuGet package.

## Apple iOS simulator runtimes

XHarness enables users to download and install a specific iOS simulator runtime (available through `xharness apple simulators install <ios-simulator-64_version>` command).
Invoking the said command will:

- Fetch information about the available simulator runtimes from Apple repository
- Download the desired simulator runtime image
- Install/Mount the desired simulator runtime image

Regarding integrity check all the above operations are using:

- If Xcode version < 16:
  - Official Apple sources: https://devimages-cdn.apple.com/downloads/xcode/simulators/index2.dvtdownloadableindex to acquire simulator image information like image build number, file size, download URL and similar
  - Official download URLs acquired from the previous step to download runtime images (example: https://download.developer.apple.com/Developer_Tools/iOS_17.5_Simulator_Runtime/iOS_17.5_Simulator_Runtime.dmg)
    - Download request uses ADC cookies
    - Downloaded image payload is compared against the specified file size
  - Official Apple tooling which performs package verification prior to installation/mounting:
    - `xcrun simctl runtime add <path>` performs the following by default (from the official documentation `xcrun simctl runtime --help`):

    ```bash
    Add a runtime disk image to the secure storage area. The image will be staged, verified, and mounted.
    ```

    - `hdiutil attach <image>` performs the following by default (from the official documentation https://ss64.com/mac/hdiutil.html):

    ```bash
    By default, hdiutil attach attempts to intelligently verify images that contain checksums before attaching them.
    ```

- If Xcode version >= 16.0
  - Official Apple tooling to download/install/mount simulator runtime images through `xcode -downloadPlatform iOS` (source: https://developer.apple.com/documentation/xcode/installing-additional-simulator-runtimes)


================================================
FILE: eng/Publishing.props
================================================
<Project>

  <!-- We include mlaunch and adb binaries we didn't build and which do not need sympkgs -->
  <PropertyGroup>
    <PublishingVersion>4</PublishingVersion>
    <AutoGenerateSymbolPackages>false</AutoGenerateSymbolPackages>
  </PropertyGroup>

</Project>


================================================
FILE: eng/Signing.props
================================================
<Project>

  <ItemGroup>
    <FileSignInfo Include="mlaunch.dll" CertificateName="3PartySHA2" />
    <FileSignInfo Include="Newtonsoft.Json.dll" CertificateName="3PartySHA2" />
    <FileSignInfo Include="WebDriver.dll" CertificateName="3PartySHA2" />
    <FileSignInfo Include="Xamarin.Localization.Mlaunch.dll" CertificateName="3PartySHA2" />
    <FileSignInfo Include="Xamarin.Localization.Mlaunch.resources.dll" CertificateName="3PartySHA2" />
    <FileSignInfo Include="Microsoft.macOS.dll" CertificateName="3PartySHA2" />
  </ItemGroup>

</Project>


================================================
FILE: eng/Version.Details.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<Dependencies>
  <ProductDependencies>
  </ProductDependencies>
  <ToolsetDependencies>
    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26251.2">
      <Uri>https://github.com/dotnet/arcade</Uri>
      <Sha>3f6871376906201d8237b9c0167fd4a844098566</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="11.0.0-beta.26251.2">
      <Uri>https://github.com/dotnet/arcade</Uri>
      <Sha>3f6871376906201d8237b9c0167fd4a844098566</Sha>
    </Dependency>
  </ToolsetDependencies>
</Dependencies>


================================================
FILE: eng/Versions.props
================================================
<Project>
  <PropertyGroup>
    <!-- change the following places when changing the VersionPrefix:
           - README.md
           - azure-pipelines-public.yml
           - tools/install-xharness.sh and .ps1
    -->
    <VersionPrefix>11.0.0</VersionPrefix>
    <PreReleaseVersionLabel>prerelease</PreReleaseVersionLabel>
    <!-- Don't allow netstandard1.x dependencies in this repository. -->
    <FlagNetStandard1XDependencies>true</FlagNetStandard1XDependencies>
  </PropertyGroup>
</Project>


================================================
FILE: eng/common/AGENTS.md
================================================
# `eng/common`

Files under `eng/common` come from [Arcade](https://github.com/dotnet/arcade).
Edits in `eng/common` will be overwritten by automation unless the changes are made directly in the Arcade repository.
For more information, see the [Arcade documentation](https://github.com/dotnet/arcade/tree/main/Documentation).


================================================
FILE: eng/common/BuildConfiguration/build-configuration.json
================================================
{
  "RetryCountLimit": 1,
  "RetryByAnyError": false
}


================================================
FILE: eng/common/CIBuild.cmd
================================================
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"


================================================
FILE: eng/common/PSScriptAnalyzerSettings.psd1
================================================
@{
    IncludeRules=@('PSAvoidUsingCmdletAliases',
                   'PSAvoidUsingWMICmdlet',
                   'PSAvoidUsingPositionalParameters',
                   'PSAvoidUsingInvokeExpression',
                   'PSUseDeclaredVarsMoreThanAssignments',
                   'PSUseCmdletCorrectly',
                   'PSStandardDSCFunctionsInResource',
                   'PSUseIdenticalMandatoryParametersForDSC',
                   'PSUseIdenticalParametersForDSC')
}

================================================
FILE: eng/common/README.md
================================================
# Don't touch this folder

                uuuuuuuuuuuuuuuuuuuu
              u" uuuuuuuuuuuuuuuuuu "u
            u" u$$$$$$$$$$$$$$$$$$$$u "u
          u" u$$$$$$$$$$$$$$$$$$$$$$$$u "u
        u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
      u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
    u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
    $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
    $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
    $ $$$" ... "$...  ...$" ... "$$$  ... "$$$ $
    $ $$$u `"$$$$$$$  $$$  $$$$$  $$  $$$  $$$ $
    $ $$$$$$uu "$$$$  $$$  $$$$$  $$  """ u$$$ $
    $ $$$""$$$  $$$$  $$$u "$$$" u$$  $$$$$$$$ $
    $ $$$$....,$$$$$..$$$$$....,$$$$..$$$$$$$$ $
    $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
    "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
      "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
        "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
          "u "$$$$$$$$$$$$$$$$$$$$$$$$" u"
            "u "$$$$$$$$$$$$$$$$$$$$" u"
              "u """""""""""""""""" u"
                """"""""""""""""""""

!!! Changes made in this directory are subject to being overwritten by automation !!!

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.


================================================
FILE: eng/common/SetupNugetSources.ps1
================================================
# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
# disabled internal Maestro (darc-int*) feeds.
#
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
#
# See example call for this script below.
#
#  - task: PowerShell@2
#    displayName: Setup internal Feeds Credentials
#    condition: eq(variables['Agent.OS'], 'Windows_NT')
#    inputs:
#      filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
#      arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
#    env:
#      Token: $(dn-bot-dnceng-artifact-feeds-rw)
#
# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
# This ensures that:
# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
# - The credential provider is installed.
#
# This logic is also abstracted into enable-internal-sources.yml.

[CmdletBinding()]
param (
    [Parameter(Mandatory = $true)][string]$ConfigFile,
    $Password
)

$ErrorActionPreference = "Stop"
Set-StrictMode -Version 2.0
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

. $PSScriptRoot\tools.ps1

# Adds or enables the package source with the given name
function AddOrEnablePackageSource($sources, $disabledPackageSources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
    if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource -DisabledPackageSources $disabledPackageSources -Creds $creds -PackageSourceName $SourceName)) {
        AddPackageSource -Sources $sources -SourceName $SourceName -SourceEndPoint $SourceEndPoint -Creds $creds -Username $userName -pwd $Password
    }
}

# Add source entry to PackageSources
function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
    $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']")
    
    if ($packageSource -eq $null)
    {
        Write-Host "Adding package source $SourceName"

        $packageSource = $doc.CreateElement("add")
        $packageSource.SetAttribute("key", $SourceName)
        $packageSource.SetAttribute("value", $SourceEndPoint)
        $sources.AppendChild($packageSource) | Out-Null
    }
    else {
        Write-Host "Package source $SourceName already present and enabled."
    }

    AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd
}

# Add a credential node for the specified source
function AddCredential($creds, $source, $username, $pwd) {
    # If no cred supplied, don't do anything.
    if (!$pwd) {
        return;
    }

    Write-Host "Inserting credential for feed: " $source

    # Looks for credential configuration for the given SourceName. Create it if none is found.
    $sourceElement = $creds.SelectSingleNode($Source)
    if ($sourceElement -eq $null)
    {
        $sourceElement = $doc.CreateElement($Source)
        $creds.AppendChild($sourceElement) | Out-Null
    }

    # Add the <Username> node to the credential if none is found.
    $usernameElement = $sourceElement.SelectSingleNode("add[@key='Username']")
    if ($usernameElement -eq $null)
    {
        $usernameElement = $doc.CreateElement("add")
        $usernameElement.SetAttribute("key", "Username")
        $sourceElement.AppendChild($usernameElement) | Out-Null
    }
    $usernameElement.SetAttribute("value", $Username)

    # Add the <ClearTextPassword> to the credential if none is found.
    # Add it as a clear text because there is no support for encrypted ones in non-windows .Net SDKs.
    #   -> https://github.com/NuGet/Home/issues/5526
    $passwordElement = $sourceElement.SelectSingleNode("add[@key='ClearTextPassword']")
    if ($passwordElement -eq $null)
    {
        $passwordElement = $doc.CreateElement("add")
        $passwordElement.SetAttribute("key", "ClearTextPassword")
        $sourceElement.AppendChild($passwordElement) | Out-Null
    }
    
    $passwordElement.SetAttribute("value", $pwd)
}

# Enable all darc-int package sources.
function EnableMaestroInternalPackageSources($DisabledPackageSources, $Creds) {
    $maestroInternalSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
    ForEach ($DisabledPackageSource in $maestroInternalSources) {
        EnableInternalPackageSource -DisabledPackageSources $DisabledPackageSources -Creds $Creds -PackageSourceName $DisabledPackageSource.key
    }
}

# Enables an internal package source by name, if found. Returns true if the package source was found and enabled, false otherwise.
function EnableInternalPackageSource($DisabledPackageSources, $Creds, $PackageSourceName) {
    $DisabledPackageSource = $DisabledPackageSources.SelectSingleNode("add[@key='$PackageSourceName']")
    if ($DisabledPackageSource) {
        Write-Host "Enabling internal source '$($DisabledPackageSource.key)'."
        
        # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries
        $DisabledPackageSources.RemoveChild($DisabledPackageSource)

        AddCredential -Creds $creds -Source $DisabledPackageSource.Key -Username $userName -pwd $Password
        return $true
    }
    return $false
}

if (!(Test-Path $ConfigFile -PathType Leaf)) {
  Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile"
  ExitWithExitCode 1
}

# Load NuGet.config
$doc = New-Object System.Xml.XmlDocument
$filename = (Get-Item $ConfigFile).FullName
$doc.Load($filename)

# Get reference to <PackageSources> - fail if none exist
$sources = $doc.DocumentElement.SelectSingleNode("packageSources")
if ($sources -eq $null) {
    Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile"
    ExitWithExitCode 1
}

$creds = $null
$feedSuffix = "v3/index.json"
if ($Password) {
    $feedSuffix = "v2"
    # Looks for a <PackageSourceCredentials> node. Create it if none is found.
    $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials")
    if ($creds -eq $null) {
        $creds = $doc.CreateElement("packageSourceCredentials")
        $doc.DocumentElement.AppendChild($creds) | Out-Null
    }
}

$userName = "dn-bot"

# Check for disabledPackageSources; we'll enable any darc-int ones we find there
$disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources")
if ($disabledSources -ne $null) {
    Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node"
    EnableMaestroInternalPackageSources -DisabledPackageSources $disabledSources -Creds $creds
}
$dotnetVersions = @('5','6','7','8','9','10')

foreach ($dotnetVersion in $dotnetVersions) {
    $feedPrefix = "dotnet" + $dotnetVersion;
    $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']")
    if ($dotnetSource -ne $null) {
        AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
        AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
    }
}

$doc.Save($filename)


================================================
FILE: eng/common/SetupNugetSources.sh
================================================
#!/usr/bin/env bash

# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
# disabled internal Maestro (darc-int*) feeds.
# 
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
#
# See example call for this script below.
#
#  - task: Bash@3
#    displayName: Setup Internal Feeds
#    inputs:
#      filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh
#      arguments: $(System.DefaultWorkingDirectory)/NuGet.config
#    condition: ne(variables['Agent.OS'], 'Windows_NT')
#  - task: NuGetAuthenticate@1
#
# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
# This ensures that:
# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
# - The credential provider is installed.
#
# This logic is also abstracted into enable-internal-sources.yml.

ConfigFile=$1
CredToken=$2
NL='\n'
TB='    '

source="${BASH_SOURCE[0]}"

# resolve $source until the file is no longer a symlink
while [[ -h "$source" ]]; do
  scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
  source="$(readlink "$source")"
  # if $source was a relative symlink, we need to resolve it relative to the path where the
  # symlink file was located
  [[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"

. "$scriptroot/tools.sh"

if [ ! -f "$ConfigFile" ]; then
    Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile"
    ExitWithExitCode 1
fi

if [[ `uname -s` == "Darwin" ]]; then
    NL=$'\\\n'
    TB=''
fi

# Enables an internal package source by name, if found. Returns 0 if found and enabled, 1 if not found.
EnableInternalPackageSource() {
    local PackageSourceName="$1"
    
    # Check if disabledPackageSources section exists
    grep -i "<disabledPackageSources>" "$ConfigFile" > /dev/null
    if [ "$?" != "0" ]; then
        return 1  # No disabled sources section
    fi
    
    # Check if this source name is disabled
    grep -i "<add key=\"$PackageSourceName\" value=\"true\"" "$ConfigFile" > /dev/null
    if [ "$?" == "0" ]; then
        echo "Enabling internal source '$PackageSourceName'."
        # Remove the disabled entry (including any surrounding comments or whitespace on the same line)
        sed -i.bak "/<add key=\"$PackageSourceName\" value=\"true\" \/>/d" "$ConfigFile"
        
        # Add the source name to PackageSources for credential handling
        PackageSources+=("$PackageSourceName")
        return 0  # Found and enabled
    fi
    
    return 1  # Not found in disabled sources
}

# Add source entry to PackageSources
AddPackageSource() {
    local SourceName="$1"
    local SourceEndPoint="$2"
    
    # Check if source already exists
    grep -i "<add key=\"$SourceName\"" "$ConfigFile" > /dev/null
    if [ "$?" == "0" ]; then
        echo "Package source $SourceName already present and enabled."
        PackageSources+=("$SourceName")
        return
    fi
    
    echo "Adding package source $SourceName"
    PackageSourcesNodeFooter="</packageSources>"
    PackageSourceTemplate="${TB}<add key=\"$SourceName\" value=\"$SourceEndPoint\" />"
    
    sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" "$ConfigFile"
    PackageSources+=("$SourceName")
}

# Adds or enables the package source with the given name
AddOrEnablePackageSource() {
    local SourceName="$1"
    local SourceEndPoint="$2"
    
    # Try to enable if disabled, if not found then add new source
    EnableInternalPackageSource "$SourceName"
    if [ "$?" != "0" ]; then
        AddPackageSource "$SourceName" "$SourceEndPoint"
    fi
}

# Enable all darc-int package sources
EnableMaestroInternalPackageSources() {
    # Check if disabledPackageSources section exists
    grep -i "<disabledPackageSources>" "$ConfigFile" > /dev/null
    if [ "$?" != "0" ]; then
        return  # No disabled sources section
    fi
    
    # Find all darc-int disabled sources
    local DisabledDarcIntSources=()
    DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' "$ConfigFile" | tr -d '"')
    
    for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do
        if [[ $DisabledSourceName == darc-int* ]]; then
            EnableInternalPackageSource "$DisabledSourceName"
        fi
    done
}

# Ensure there is a <packageSources>...</packageSources> section.
grep -i "<packageSources>" $ConfigFile
if [ "$?" != "0" ]; then
    Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile"
    ExitWithExitCode 1
fi

PackageSources=()

# Set feed suffix based on whether credentials are provided
FeedSuffix="v3/index.json"
if [ -n "$CredToken" ]; then
    FeedSuffix="v2"
    
    # Ensure there is a <packageSourceCredentials>...</packageSourceCredentials> section.
    grep -i "<packageSourceCredentials>" $ConfigFile
    if [ "$?" != "0" ]; then
        echo "Adding <packageSourceCredentials>...</packageSourceCredentials> section."

        PackageSourcesNodeFooter="</packageSources>"
        PackageSourceCredentialsTemplate="${TB}<packageSourceCredentials>${NL}${TB}</packageSourceCredentials>"

        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile
    fi
fi

# Check for disabledPackageSources; we'll enable any darc-int ones we find there
grep -i "<disabledPackageSources>" $ConfigFile > /dev/null
if [ "$?" == "0" ]; then
    echo "Checking for any darc-int disabled package sources in the disabledPackageSources node"
    EnableMaestroInternalPackageSources
fi

DotNetVersions=('5' '6' '7' '8' '9' '10')

for DotNetVersion in ${DotNetVersions[@]} ; do
    FeedPrefix="dotnet${DotNetVersion}";
    grep -i "<add key=\"$FeedPrefix\"" $ConfigFile > /dev/null
    if [ "$?" == "0" ]; then
        AddOrEnablePackageSource "$FeedPrefix-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal/nuget/$FeedSuffix"
        AddOrEnablePackageSource "$FeedPrefix-internal-transport" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal-transport/nuget/$FeedSuffix"
    fi
done

# I want things split line by line
PrevIFS=$IFS
IFS=$'\n'
PackageSources+="$IFS"
PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"')
IFS=$PrevIFS

if [ "$CredToken" ]; then
    for FeedName in ${PackageSources[@]} ; do
        # Check if there is no existing credential for this FeedName
        grep -i "<$FeedName>" $ConfigFile 
        if [ "$?" != "0" ]; then
            echo "	Inserting credential for feed: $FeedName"

            PackageSourceCredentialsNodeFooter="</packageSourceCredentials>"
            NewCredential="${TB}${TB}<$FeedName>${NL}${TB}<add key=\"Username\" value=\"dn-bot\" />${NL}${TB}${TB}<add key=\"ClearTextPassword\" value=\"$CredToken\" />${NL}${TB}${TB}</$FeedName>"

            sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile
        fi
    done
fi


================================================
FILE: eng/common/build.cmd
================================================
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*"
exit /b %ErrorLevel%


================================================
FILE: eng/common/build.ps1
================================================
[CmdletBinding(PositionalBinding=$false)]
Param(
  [string][Alias('c')]$configuration = "Debug",
  [string]$platform = $null,
  [string] $projects,
  [string][Alias('v')]$verbosity = "minimal",
  [string] $msbuildEngine = $null,
  [bool] $warnAsError = $true,
  [string] $warnNotAsError = '',
  [bool] $nodeReuse = $true,
  [switch] $buildCheck = $false,
  [switch][Alias('r')]$restore,
  [switch] $deployDeps,
  [switch][Alias('b')]$build,
  [switch] $rebuild,
  [switch] $deploy,
  [switch][Alias('t')]$test,
  [switch] $integrationTest,
  [switch] $performanceTest,
  [switch] $sign,
  [switch] $pack,
  [switch] $publish,
  [switch] $clean,
  [switch][Alias('pb')]$productBuild,
  [switch]$fromVMR,
  [switch][Alias('bl')]$binaryLog,
  [switch][Alias('nobl')]$excludeCIBinarylog,
  [switch] $ci,
  [switch] $prepareMachine,
  [string] $runtimeSourceFeed = '',
  [string] $runtimeSourceFeedKey = '',
  [switch] $excludePrereleaseVS,
  [switch] $nativeToolsOnMachine,
  [switch] $help,
  [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
)

# Unset 'Platform' environment variable to avoid unwanted collision in InstallDotNetCore.targets file
# some computer has this env var defined (e.g. Some HP)
if($env:Platform) {
  $env:Platform=""  
}
function Print-Usage() {
  Write-Host "Common settings:"
  Write-Host "  -configuration <value>  Build configuration: 'Debug' or 'Release' (short: -c)"
  Write-Host "  -platform <value>       Platform configuration: 'x86', 'x64' or any valid Platform value to pass to msbuild"
  Write-Host "  -verbosity <value>      Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
  Write-Host "  -binaryLog              Output binary log (short: -bl)"
  Write-Host "  -help                   Print help and exit"
  Write-Host ""

  Write-Host "Actions:"
  Write-Host "  -restore                Restore dependencies (short: -r)"
  Write-Host "  -build                  Build solution (short: -b)"
  Write-Host "  -rebuild                Rebuild solution"
  Write-Host "  -deploy                 Deploy built VSIXes"
  Write-Host "  -deployDeps             Deploy dependencies (e.g. VSIXes for integration tests)"
  Write-Host "  -test                   Run all unit tests in the solution (short: -t)"
  Write-Host "  -integrationTest        Run all integration tests in the solution"
  Write-Host "  -performanceTest        Run all performance tests in the solution"
  Write-Host "  -pack                   Package build outputs into NuGet packages and Willow components"
  Write-Host "  -sign                   Sign build outputs"
  Write-Host "  -publish                Publish artifacts (e.g. symbols)"
  Write-Host "  -clean                  Clean the solution"
  Write-Host "  -productBuild           Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
  Write-Host ""

  Write-Host "Advanced settings:"
  Write-Host "  -projects <value>       Semi-colon delimited list of sln/proj's to build. Globbing is supported (*.sln)"
  Write-Host "  -ci                     Set when running on CI server"
  Write-Host "  -excludeCIBinarylog     Don't output binary log (short: -nobl)"
  Write-Host "  -prepareMachine         Prepare machine for CI run, clean up processes after build"
  Write-Host "  -warnAsError <value>    Sets warnaserror msbuild parameter ('true' or 'false')"
  Write-Host "  -warnNotAsError <value> Sets a semi-colon delimited list of warning codes that should not be treated as errors"
  Write-Host "  -msbuildEngine <value>  Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
  Write-Host "  -excludePrereleaseVS    Set to exclude build engines in prerelease versions of Visual Studio"
  Write-Host "  -nativeToolsOnMachine   Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
  Write-Host "  -nodeReuse <value>      Sets nodereuse msbuild parameter ('true' or 'false')"
  Write-Host "  -buildCheck             Sets /check msbuild parameter"
  Write-Host "  -fromVMR                Set when building from within the VMR"
  Write-Host ""

  Write-Host "Command line arguments not listed above are passed thru to msbuild."
  Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)."
}

. $PSScriptRoot\tools.ps1

function InitializeCustomToolset {
  if (-not $restore) {
    return
  }

  $script = Join-Path $EngRoot 'restore-toolset.ps1'

  if (Test-Path $script) {
    . $script
  }
}

function Build {
  $toolsetBuildProj = InitializeToolset
  InitializeCustomToolset

  $bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' }
  $platformArg = if ($platform) { "/p:Platform=$platform" } else { '' }
  $check = if ($buildCheck) { '/check' } else { '' }

  if ($projects) {
    # Re-assign properties to a new variable because PowerShell doesn't let us append properties directly for unclear reasons.
    # Explicitly set the type as string[] because otherwise PowerShell would make this char[] if $properties is empty.
    [string[]] $msbuildArgs = $properties
    
    # Resolve relative project paths into full paths 
    $projects = ($projects.Split(';').ForEach({Resolve-Path $_}) -join ';')
    
    $msbuildArgs += "/p:Projects=$projects"
    $properties = $msbuildArgs
  }

  MSBuild $toolsetBuildProj `
    $bl `
    $platformArg `
    $check `
    /p:Configuration=$configuration `
    /p:RepoRoot=$RepoRoot `
    /p:Restore=$restore `
    /p:DeployDeps=$deployDeps `
    /p:Build=$build `
    /p:Rebuild=$rebuild `
    /p:Deploy=$deploy `
    /p:Test=$test `
    /p:Pack=$pack `
    /p:DotNetBuild=$productBuild `
    /p:DotNetBuildFromVMR=$fromVMR `
    /p:IntegrationTest=$integrationTest `
    /p:PerformanceTest=$performanceTest `
    /p:Sign=$sign `
    /p:Publish=$publish `
    /p:RestoreStaticGraphEnableBinaryLogger=$binaryLog `
    @properties
}

try {
  if ($clean) {
    if (Test-Path $ArtifactsDir) {
      Remove-Item -Recurse -Force $ArtifactsDir
      Write-Host 'Artifacts directory deleted.'
    }
    exit 0
  }

  if ($help -or (($null -ne $properties) -and ($properties.Contains('/help') -or $properties.Contains('/?')))) {
    Print-Usage
    exit 0
  }

  if ($ci) {
    if (-not $excludeCIBinarylog) {
      $binaryLog = $true
    }
    $nodeReuse = $false
  }

  if ($nativeToolsOnMachine) {
    $env:NativeToolsOnMachine = $true
  }
  if ($restore) {
    InitializeNativeTools
  }

  Build
}
catch {
  Write-Host $_.ScriptStackTrace
  Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_
  ExitWithExitCode 1
}

ExitWithExitCode 0


================================================
FILE: eng/common/build.sh
================================================
#!/usr/bin/env bash

# Stop script if unbound variable found (use ${var:-} if intentional)
set -u

# Stop script if command returns non-zero exit code.
# Prevents hidden errors caused by missing error code propagation.
set -e

usage()
{
  echo "Common settings:"
  echo "  --configuration <value>    Build configuration: 'Debug' or 'Release' (short: -c)"
  echo "  --verbosity <value>        Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
  echo "  --binaryLog                Create MSBuild binary log (short: -bl)"
  echo "  --help                     Print help and exit (short: -h)"
  echo ""

  echo "Actions:"
  echo "  --restore                  Restore dependencies (short: -r)"
  echo "  --build                    Build solution (short: -b)"
  echo "  --sourceBuild              Source-build the solution (short: -sb)"
  echo "                             Will additionally trigger the following actions: --restore, --build, --pack"
  echo "                             If --configuration is not set explicitly, will also set it to 'Release'"
  echo "  --productBuild             Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
  echo "                             Will additionally trigger the following actions: --restore, --build, --pack"
  echo "                             If --configuration is not set explicitly, will also set it to 'Release'"
  echo "  --rebuild                  Rebuild solution"
  echo "  --test                     Run all unit tests in the solution (short: -t)"
  echo "  --integrationTest          Run all integration tests in the solution"
  echo "  --performanceTest          Run all performance tests in the solution"
  echo "  --pack                     Package build outputs into NuGet packages and Willow components"
  echo "  --sign                     Sign build outputs"
  echo "  --publish                  Publish artifacts (e.g. symbols)"
  echo "  --clean                    Clean the solution"
  echo ""

  echo "Advanced settings:"
  echo "  --projects <value>       Project or solution file(s) to build"
  echo "  --ci                     Set when running on CI server"
  echo "  --excludeCIBinarylog     Don't output binary log (short: -nobl)"
  echo "  --prepareMachine         Prepare machine for CI run, clean up processes after build"
  echo "  --nodeReuse <value>      Sets nodereuse msbuild parameter ('true' or 'false')"
  echo "  --warnAsError <value>    Sets warnaserror msbuild parameter ('true' or 'false')"
  echo "  --warnNotAsError <value> Sets a semi-colon delimited list of warning codes that should not be treated as errors"
  echo "  --buildCheck <value>     Sets /check msbuild parameter"
  echo "  --fromVMR                Set when building from within the VMR"
  echo ""
  echo "Command line arguments not listed above are passed thru to msbuild."
  echo "Arguments can also be passed in with a single hyphen."
}

source="${BASH_SOURCE[0]}"

# resolve $source until the file is no longer a symlink
while [[ -h "$source" ]]; do
  scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
  source="$(readlink "$source")"
  # if $source was a relative symlink, we need to resolve it relative to the path where the
  # symlink file was located
  [[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"

restore=false
build=false
source_build=false
product_build=false
from_vmr=false
rebuild=false
test=false
integration_test=false
performance_test=false
pack=false
publish=false
sign=false
public=false
ci=false
clean=false

warn_as_error=true
warn_not_as_error=''
node_reuse=true
build_check=false
binary_log=false
exclude_ci_binary_log=false
pipelines_log=false

projects=''
configuration=''
prepare_machine=false
verbosity='minimal'
runtime_source_feed=''
runtime_source_feed_key=''

properties=()
while [[ $# -gt 0 ]]; do
  opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
  case "$opt" in
    -help|-h)
      usage
      exit 0
      ;;
    -clean)
      clean=true
      ;;
    -configuration|-c)
      configuration=$2
      shift
      ;;
    -verbosity|-v)
      verbosity=$2
      shift
      ;;
    -binarylog|-bl)
      binary_log=true
      ;;
    -excludecibinarylog|-nobl)
      exclude_ci_binary_log=true
      ;;
    -pipelineslog|-pl)
      pipelines_log=true
      ;;
    -restore|-r)
      restore=true
      ;;
    -build|-b)
      build=true
      ;;
    -rebuild)
      rebuild=true
      ;;
    -pack)
      pack=true
      ;;
    -sourcebuild|-source-build|-sb)
      build=true
      source_build=true
      product_build=true
      restore=true
      pack=true
      ;;
    -productbuild|-product-build|-pb)
      build=true
      product_build=true
      restore=true
      pack=true
      ;;
    -fromvmr|-from-vmr)
      from_vmr=true
      ;;
    -test|-t)
      test=true
      ;;
    -integrationtest)
      integration_test=true
      ;;
    -performancetest)
      performance_test=true
      ;;
    -sign)
      sign=true
      ;;
    -publish)
      publish=true
      ;;
    -preparemachine)
      prepare_machine=true
      ;;
    -projects)
      projects=$2
      shift
      ;;
    -ci)
      ci=true
      ;;
    -warnaserror)
      warn_as_error=$2
      shift
      ;;
    -warnnotaserror)
      warn_not_as_error=$2
      shift
      ;;
    -nodereuse)
      node_reuse=$2
      shift
      ;;
    -buildcheck)
      build_check=true
      ;;
    -runtimesourcefeed)
      runtime_source_feed=$2
      shift
      ;;
     -runtimesourcefeedkey)
      runtime_source_feed_key=$2
      shift
      ;;
    *)
      properties+=("$1")
      ;;
  esac

  shift
done

if [[ -z "$configuration" ]]; then
  if [[ "$source_build" = true ]]; then configuration="Release"; else configuration="Debug"; fi
fi

if [[ "$ci" == true ]]; then
  pipelines_log=true
  node_reuse=false
  if [[ "$exclude_ci_binary_log" == false ]]; then
    binary_log=true
  fi
fi

. "$scriptroot/tools.sh"

function InitializeCustomToolset {
  local script="$eng_root/restore-toolset.sh"

  if [[ -a "$script" ]]; then
    . "$script"
  fi
}

function Build {
  InitializeToolset
  InitializeCustomToolset

  if [[ ! -z "$projects" ]]; then
    properties+=("/p:Projects=$projects")
  fi

  local bl=""
  if [[ "$binary_log" == true ]]; then
    bl="/bl:\"$log_dir/Build.binlog\""
  fi

  local check=""
  if [[ "$build_check" == true ]]; then
    check="/check"
  fi

  MSBuild $_InitializeToolset \
    $bl \
    $check \
    /p:Configuration=$configuration \
    /p:RepoRoot="$repo_root" \
    /p:Restore=$restore \
    /p:Build=$build \
    /p:DotNetBuild=$product_build \
    /p:DotNetBuildSourceOnly=$source_build \
    /p:DotNetBuildFromVMR=$from_vmr \
    /p:Rebuild=$rebuild \
    /p:Test=$test \
    /p:Pack=$pack \
    /p:IntegrationTest=$integration_test \
    /p:PerformanceTest=$performance_test \
    /p:Sign=$sign \
    /p:Publish=$publish \
    /p:RestoreStaticGraphEnableBinaryLogger=$binary_log \
    ${properties[@]+"${properties[@]}"}

  ExitWithExitCode 0
}

if [[ "$clean" == true ]]; then
  if [ -d "$artifacts_dir" ]; then
    rm -rf $artifacts_dir
    echo "Artifacts directory deleted."
  fi
  exit 0
fi

if [[ "$restore" == true ]]; then
  InitializeNativeTools
fi

Build


================================================
FILE: eng/common/cibuild.sh
================================================
#!/usr/bin/env bash

source="${BASH_SOURCE[0]}"

# resolve $SOURCE until the file is no longer a symlink
while [[ -h $source ]]; do
  scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
  source="$(readlink "$source")"

  # if $source was a relative symlink, we need to resolve it relative to the path where 
  # the symlink file was located
  [[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"

. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@


================================================
FILE: eng/common/core-templates/job/job.yml
================================================
parameters:
# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
  cancelTimeoutInMinutes: ''
  condition: ''
  container: ''
  continueOnError: false
  dependsOn: ''
  displayName: ''
  pool: ''
  steps: []
  strategy: ''
  timeoutInMinutes: ''
  variables: []
  workspace: ''
  templateContext: {}

# Job base template specific parameters
  # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md
  # publishing defaults
  artifacts: ''
  enableMicrobuild: false
  enablePreviewMicrobuild: false
  microbuildPluginVersion: 'latest'
  enableMicrobuildForMacAndLinux: false
  microbuildUseESRP: true
  enablePublishBuildArtifacts: false
  enablePublishBuildAssets: false
  enablePublishTestResults: false
  enablePublishing: false
  enableBuildRetry: false
  mergeTestResults: false
  testRunTitle: ''
  testResultsFormat: ''
  name: ''
  preSteps: []
  artifactPublishSteps: []
  runAsPublic: false

# 1es specific parameters
  is1ESPipeline: ''

jobs:
- job: ${{ parameters.name }}

  ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}:
    cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}

  ${{ if ne(parameters.condition, '') }}:
    condition: ${{ parameters.condition }}

  ${{ if ne(parameters.container, '') }}:
    container: ${{ parameters.container }}

  ${{ if ne(parameters.continueOnError, '') }}:
    continueOnError: ${{ parameters.continueOnError }}

  ${{ if ne(parameters.dependsOn, '') }}:
    dependsOn: ${{ parameters.dependsOn }}

  ${{ if ne(parameters.displayName, '') }}:
    displayName: ${{ parameters.displayName }}

  ${{ if ne(parameters.pool, '') }}:
    pool: ${{ parameters.pool }}

  ${{ if ne(parameters.strategy, '') }}:
    strategy: ${{ parameters.strategy }}

  ${{ if ne(parameters.timeoutInMinutes, '') }}:
    timeoutInMinutes: ${{ parameters.timeoutInMinutes }}

  ${{ if ne(parameters.templateContext, '') }}:
    templateContext: ${{ parameters.templateContext }}

  variables:
  - name: AllowPtrToDetectTestRunRetryFiles
    value: true
  - ${{ if ne(parameters.enableTelemetry, 'false') }}:
    - name: DOTNET_CLI_TELEMETRY_PROFILE
      value: '$(Build.Repository.Uri)'
  # Retry signature validation up to three times, waiting 2 seconds between attempts.
  # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures
  - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY
    value: 3,2000
  - ${{ each variable in parameters.variables }}:
    # handle name-value variable syntax
    # example:
    # - name: [key]
    #   value: [value]
    - ${{ if ne(variable.name, '') }}:
      - name: ${{ variable.name }}
        value: ${{ variable.value }}

    # handle variable groups
    - ${{ if ne(variable.group, '') }}:
      - group: ${{ variable.group }}

    # handle template variable syntax
    # example:
    # - template: path/to/template.yml
    #   parameters:
    #     [key]: [value]
    - ${{ if ne(variable.template, '') }}:
      - template: ${{ variable.template }}
        ${{ if ne(variable.parameters, '') }}:
          parameters: ${{ variable.parameters }}

    # handle key-value variable syntax.
    # example:
    # - [key]: [value]
    - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}:
      - ${{ each pair in variable }}:
        - name: ${{ pair.key }}
          value: ${{ pair.value }}

  # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds
  - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    - group: DotNet-HelixApi-Access

  ${{ if ne(parameters.workspace, '') }}:
    workspace: ${{ parameters.workspace }}

  steps:
  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error

  - ${{ if ne(parameters.preSteps, '') }}:
    - ${{ each preStep in parameters.preSteps }}:
      - ${{ preStep }}

  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    - template: /eng/common/core-templates/steps/install-microbuild.yml
      parameters:
        enableMicrobuild: ${{ parameters.enableMicrobuild }}
        enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
        microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
        enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
        microbuildUseESRP: ${{ parameters.microbuildUseESRP }}
        continueOnError: ${{ parameters.continueOnError }}

  - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}:
    - task: NuGetAuthenticate@1

  - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}:
    - task: DownloadPipelineArtifact@2
      inputs:
        buildType: current
        artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }}
        targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }}
        itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }}

  - ${{ each step in parameters.steps }}:
    - ${{ step }}

  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    - template: /eng/common/core-templates/steps/cleanup-microbuild.yml
      parameters:
        enableMicrobuild: ${{ parameters.enableMicrobuild }}
        enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
        microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
        enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
        continueOnError: ${{ parameters.continueOnError }}

  # Publish test results
  - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}:
    - task: PublishTestResults@2
      displayName: Publish XUnit Test Results
      inputs:
        testResultsFormat: 'xUnit'
        testResultsFiles: '*.xml'
        searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
        testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit
        mergeTestResults: ${{ parameters.mergeTestResults }}
      continueOnError: true
      condition: always()
  - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}:
    - task: PublishTestResults@2
      displayName: Publish TRX Test Results
      inputs:
        testResultsFormat: 'VSTest'
        testResultsFiles: '*.trx'
        searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
        testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx
        mergeTestResults: ${{ parameters.mergeTestResults }}
      continueOnError: true
      condition: always()

  # gather artifacts
  - ${{ if ne(parameters.artifacts.publish, '') }}:
    - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
      - task: CopyFiles@2
        displayName: Gather binaries for publish to artifacts
        inputs:
          SourceFolder: 'artifacts/bin'
          Contents: '**'
          TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin'
      - task: CopyFiles@2
        displayName: Gather packages for publish to artifacts
        inputs:
          SourceFolder: 'artifacts/packages'
          Contents: '**'
          TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
    - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
      - task: CopyFiles@2
        displayName: Gather logs for publish to artifacts
        inputs:
          SourceFolder: 'artifacts/log'
          Contents: '**'
          TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log'
        continueOnError: true
        condition: always()
      
  - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
    - task: CopyFiles@2
      displayName: Gather logs for publish to artifacts
      inputs:
        SourceFolder: 'artifacts/log/$(_BuildConfig)'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)'
      continueOnError: true
      condition: always()
  - ${{ if eq(parameters.enableBuildRetry, 'true') }}:
    - task: CopyFiles@2
      displayName: Gather buildconfiguration for build retry
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)/eng/common/BuildConfiguration'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)/eng/common/BuildConfiguration'
      continueOnError: true
      condition: always()
  - ${{ each step in parameters.artifactPublishSteps }}:
    - ${{ step }}


================================================
FILE: eng/common/core-templates/job/onelocbuild.yml
================================================
parameters:
  # Optional: dependencies of the job
  dependsOn: ''

  # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
  pool: ''

  CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
  GithubPat: $(BotAccount-dotnet-bot-repo-PAT)

  SourcesDirectory: $(System.DefaultWorkingDirectory)
  CreatePr: true
  AutoCompletePr: false
  ReusePr: true
  UseLfLineEndings: true
  UseCheckedInLocProjectJson: false
  SkipLocProjectJsonGeneration: false
  LanguageSet: VS_Main_Languages
  LclSource: lclFilesInRepo
  LclPackageId: ''
  RepoType: gitHub
  GitHubOrg: dotnet
  MirrorRepo: ''
  MirrorBranch: main
  xLocCustomPowerShellScript: ''
  condition: ''
  JobNameSuffix: ''
  is1ESPipeline: ''
jobs:
- job: OneLocBuild${{ parameters.JobNameSuffix }}

  dependsOn: ${{ parameters.dependsOn }}

  displayName: OneLocBuild${{ parameters.JobNameSuffix }}

  variables:
    - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat
    - name: _GenerateLocProjectArguments
      value: -SourcesDirectory ${{ parameters.SourcesDirectory }}
        -LanguageSet "${{ parameters.LanguageSet }}"
        -CreateNeutralXlfs
    - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}:
      - name: _GenerateLocProjectArguments
        value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson
    - template: /eng/common/core-templates/variables/pool-providers.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}

  ${{ if ne(parameters.pool, '') }}:
    pool: ${{ parameters.pool }}
  ${{ if eq(parameters.pool, '') }}:
    pool:
      # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
      ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
        name: AzurePipelines-EO
        image: 1ESPT-Windows2025
        demands: Cmd
        os: windows
      # If it's not devdiv, it's dnceng
      ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
        name: $(DncEngInternalBuildPool)
        image: windows.vs2026.amd64
        os: windows

  steps:
    - ${{ if eq(parameters.is1ESPipeline, '') }}:
      - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error

    - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}:
      - task: Powershell@2
        inputs:
          filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1
          arguments: $(_GenerateLocProjectArguments)
        displayName: Generate LocProject.json
        condition: ${{ parameters.condition }}

    - task: OneLocBuild@2
      displayName: OneLocBuild
      env:
        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
      inputs:
        locProj: eng/Localize/LocProject.json
        outDir: $(Build.ArtifactStagingDirectory)
        lclSource: ${{ parameters.LclSource }}
        lclPackageId: ${{ parameters.LclPackageId }}
        isCreatePrSelected: ${{ parameters.CreatePr }}
        isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }}
        ${{ if eq(parameters.CreatePr, true) }}:
          isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }}
          isShouldReusePrSelected: ${{ parameters.ReusePr }}
        packageSourceAuth: patAuth
        patVariable: ${{ parameters.CeapexPat }}
        ${{ if eq(parameters.RepoType, 'gitHub') }}:
          repoType: ${{ parameters.RepoType }}
          gitHubPatVariable: "${{ parameters.GithubPat }}"
        ${{ if ne(parameters.MirrorRepo, '') }}:
          isMirrorRepoSelected: true
          gitHubOrganization: ${{ parameters.GitHubOrg }}
          mirrorRepo: ${{ parameters.MirrorRepo }}
          mirrorBranch: ${{ parameters.MirrorBranch }}
        ${{ if ne(parameters.xLocCustomPowerShellScript, '') }}:
          xLocCustomPowerShellScript: ${{ parameters.xLocCustomPowerShellScript }}
      condition: ${{ parameters.condition }}

    # Copy the locProject.json to the root of the Loc directory, then publish a pipeline artifact
    - task: CopyFiles@2
      displayName: Copy LocProject.json
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)/eng/Localize/'
        Contents: 'LocProject.json'
        TargetFolder: '$(Build.ArtifactStagingDirectory)/loc'
      condition: ${{ parameters.condition }}

    - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}
        args:
          targetPath: '$(Build.ArtifactStagingDirectory)/loc'
          artifactName: 'Loc'
          displayName: 'Publish Localization Files'
          condition: ${{ parameters.condition }}


================================================
FILE: eng/common/core-templates/job/publish-build-assets.yml
================================================
parameters:
  configuration: 'Debug'

  # Optional: condition for the job to run
  condition: ''

  # Optional: 'true' if future jobs should run even if this job fails
  continueOnError: false

  # Optional: dependencies of the job
  dependsOn: ''

  # Optional: Include PublishBuildArtifacts task
  enablePublishBuildArtifacts: false

  # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
  pool: {}

  # Optional: should run as a public build even in the internal project
  #           if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
  runAsPublic: false

  # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing
  publishAssetsImmediately: false

  artifactsPublishingAdditionalParameters: ''

  signingValidationAdditionalParameters: ''

  is1ESPipeline: ''

  # Optional: 🌤️ or not the build has assets it wants to publish to BAR
  isAssetlessBuild: false

  # Optional, publishing version
  publishingVersion: 3

  # Optional: A minimatch pattern for the asset manifests to publish to BAR
  assetManifestsPattern: '*/manifests/**/*.xml'

  repositoryAlias: self

  officialBuildId: ''

jobs:
- job: Asset_Registry_Publish

  dependsOn: ${{ parameters.dependsOn }}
  timeoutInMinutes: 150

  ${{ if eq(parameters.publishAssetsImmediately, 'true') }}:
    displayName: Publish Assets
  ${{ else }}:
    displayName: Publish to Build Asset Registry

  variables:
  - template: /eng/common/core-templates/variables/pool-providers.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    - group: Publish-Build-Assets
    - group: AzureDevOps-Artifact-Feeds-Pats
    - name: runCodesignValidationInjection
      value: false
    # unconditional - needed for logs publishing (redactor tool version)
    - template: /eng/common/core-templates/post-build/common-variables.yml
  - name: OfficialBuildId
    ${{ if ne(parameters.officialBuildId, '') }}:
      value: ${{ parameters.officialBuildId }}
    ${{ else }}:
      value: $(Build.BuildNumber)

  pool:
    # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
    ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
      name: AzurePipelines-EO
      image: 1ESPT-Windows2025
      demands: Cmd
      os: windows
    # If it's not devdiv, it's dnceng
    ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
      name: NetCore1ESPool-Publishing-Internal
      image: windows.vs2026.amd64
      os: windows
  steps:
  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error

  - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
    - checkout: ${{ parameters.repositoryAlias }}
      fetchDepth: 3
      clean: true

    - ${{ if eq(parameters.isAssetlessBuild, 'false') }}:
      - ${{ if eq(parameters.publishingVersion, 3) }}:
        - task: DownloadPipelineArtifact@2
          displayName: Download Asset Manifests
          inputs:
            artifactName: AssetManifests
            targetPath: '$(Build.StagingDirectory)/AssetManifests'
          condition: ${{ parameters.condition }}
          continueOnError: ${{ parameters.continueOnError }}
      - ${{ if eq(parameters.publishingVersion, 4) }}:
        - task: DownloadPipelineArtifact@2
          displayName: Download V4 asset manifests
          inputs:
            itemPattern: '*/manifests/**/*.xml'
            targetPath: '$(Build.StagingDirectory)/AllAssetManifests'
          condition: ${{ parameters.condition }}
          continueOnError: ${{ parameters.continueOnError }}
        - task: CopyFiles@2
          displayName: Copy V4 asset manifests to AssetManifests
          inputs:
            SourceFolder: '$(Build.StagingDirectory)/AllAssetManifests'
            Contents: ${{ parameters.assetManifestsPattern }}
            TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
            flattenFolders: true
          condition: ${{ parameters.condition }}
          continueOnError: ${{ parameters.continueOnError }}

    - task: NuGetAuthenticate@1

    # Populate internal runtime variables.
    - template: /eng/common/templates/steps/enable-internal-sources.yml
      ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
        parameters:
            legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)

    - template: /eng/common/templates/steps/enable-internal-runtimes.yml

    - task: AzureCLI@2
      displayName: Publish Build Assets
      inputs:
        azureSubscription: "Darc: Maestro Production"
        scriptType: ps
        scriptLocation: scriptPath
        scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1
        arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
          /p:ManifestsPath='$(Build.StagingDirectory)/AssetManifests'
          /p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }}
          /p:MaestroApiEndpoint=https://maestro.dot.net
          /p:OfficialBuildId=$(OfficialBuildId)
          -runtimeSourceFeed https://ci.dot.net/internal
          -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'

      condition: ${{ parameters.condition }}
      continueOnError: ${{ parameters.continueOnError }}

    - task: powershell@2
      displayName: Create ReleaseConfigs Artifact
      inputs:
        targetType: inline
        script: |
          New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force
          $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt"
          Add-Content -Path $filePath -Value $(BARBuildId)
          Add-Content -Path $filePath -Value "$(DefaultChannels)"
          Add-Content -Path $filePath -Value $(IsStableBuild)

          $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt"
          if (Test-Path -Path $symbolExclusionfile)
          {
            Write-Host "SymbolExclusionFile exists"
            Copy-Item -Path $symbolExclusionfile -Destination "$(Build.StagingDirectory)/ReleaseConfigs"
          }

    - ${{ if eq(parameters.publishingVersion, 4) }}:
      - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
        parameters:
          is1ESPipeline: ${{ parameters.is1ESPipeline }}
          args:
            targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml'
            artifactName: AssetManifests
            displayName: 'Publish Merged Manifest'
            retryCountOnTaskFailure: 10 # for any files being locked
            isProduction: false # just metadata for publishing

    - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}
        args:
          displayName: Publish ReleaseConfigs Artifact
          targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'
          artifactName: ReleaseConfigs
          retryCountOnTaskFailure: 10 # for any files being locked
          isProduction: false # just metadata for publishing

    - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}:
      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
        parameters:
          BARBuildId: ${{ parameters.BARBuildId }}
          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
          is1ESPipeline: ${{ parameters.is1ESPipeline }}
          
      # Darc is targeting 8.0, so make sure it's installed
      - task: UseDotNet@2
        inputs:
          version: 8.0.x

      - task: AzureCLI@2
        displayName: Publish Using Darc
        inputs:
          azureSubscription: "Darc: Maestro Production"
          scriptType: ps
          scriptLocation: scriptPath
          scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
          arguments: >
            -BuildId $(BARBuildId)
            -PublishingInfraVersion 3
            -AzdoToken '$(System.AccessToken)'
            -WaitPublishingFinish true
            -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
            -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
            -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
            -runtimeSourceFeed https://ci.dot.net/internal
            -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'

    - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
      - template: /eng/common/core-templates/steps/publish-logs.yml
        parameters:
          is1ESPipeline: ${{ parameters.is1ESPipeline }}
          StageLabel: 'BuildAssetRegistry'
          JobLabel: 'Publish_Artifacts_Logs'


================================================
FILE: eng/common/core-templates/job/renovate.yml
================================================
# --------------------------------------------------------------------------------------
# Renovate Bot Job Template
# --------------------------------------------------------------------------------------
# This Azure DevOps pipeline job template runs Renovate (https://docs.renovatebot.com/)
# to automatically update dependencies in a GitHub repository.
#
# Renovate scans the repository for dependency files and creates pull requests to update
# outdated dependencies based on the configuration specified in the renovateConfigPath
# parameter.
#
# Usage:
#   For each product repo wanting to make use of Renovate, this template is called from
#   an internal Azure DevOps pipeline, typically with a schedule trigger, to check for
#   and propose dependency updates.
#
# For more info, see https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md
# --------------------------------------------------------------------------------------

parameters:

# Path to the Renovate configuration file within the repository.
- name: renovateConfigPath
  type: string
  default: 'eng/renovate.json'

# GitHub repository to run Renovate against, in the format 'owner/repo'.
# This could technically be any repo but convention is to target the same
# repo that contains the calling pipeline. The Renovate config file would
# be co-located with the pipeline's repo and, in most cases, the config
# file is specific to the repo being targeted.
- name: gitHubRepo
  type: string

# List of base branches to target for Renovate PRs.
# NOTE: The Renovate configuration file is always read from the branch where the
# pipeline is run, NOT from the target branches specified here. If you need different
# configurations for different branches, run the pipeline from each branch separately.
- name: baseBranches
  type: object
  default:
  - main

# When true, Renovate will run in dry run mode, which previews changes without creating PRs.
# See the 'Run Renovate' step log output for details of what would have been changed.
- name: dryRun
  type: boolean
  default: false

# By default, Renovate will not recreate a PR for a given dependency/version pair that was
# previously closed. This allows opting in to always recreating PRs even if they were
# previously closed.
- name: forceRecreatePR
  type: boolean
  default: false

# Name of the arcade repository resource in the pipeline.
# This allows repos which haven't been onboarded to Arcade to still use this 
# template by checking out the repo as a resource with a custom name and pointing
# this parameter to it.
- name: arcadeRepoResource
  type: string
  default: self

# Directory name for the self repo under $(Build.SourcesDirectory) in multi-checkout.
# In multi-checkout (when arcadeRepoResource != 'self'), Azure DevOps checks out the
# self repo to $(Build.SourcesDirectory)/<repoName>. Set this to match the auto-generated
# directory name. Using the auto-generated name is necessary rather than explicitly
# defining a checkout path because container jobs expect repos to live under the agent's
# workspace ($(Pipeline.Workspace)). On some self-hosted setups the host path
# (e.g., /mnt/vss/_work) differs from the container path (e.g., /__w), and a custom checkout
# path can fail validation. Using the default checkout location keeps the paths consistent
# and avoids this issue.
- name: selfRepoName
  type: string
  default: ''
- name: arcadeRepoName
  type: string
  default: ''

# Pool configuration for the job.
- name: pool
  type: object
  default:
    name: NetCore1ESPool-Internal
    image: build.azurelinux.3.amd64
    os: linux

jobs:
- job: Renovate
  displayName: Run Renovate
  container: RenovateContainer
  variables:
  - group: dotnet-renovate-bot
  # The Renovate version is automatically updated by https://github.com/dotnet/arcade/blob/main/azure-pipelines-renovate.yml.
  # Changing the variable name here would require updating the name in https://github.com/dotnet/arcade/blob/main/eng/renovate.json as well.
  - name: renovateVersion
    value: '42'
    readonly: true
  - name: renovateLogFilePath
    value: '$(Build.ArtifactStagingDirectory)/renovate.json'
    readonly: true
  - name: dryRunArg
    readonly: true
    ${{ if eq(parameters.dryRun, true) }}:
      value: 'full'
    ${{ else }}:
      value: ''
  - name: recreateWhenArg
    readonly: true
    ${{ if eq(parameters.forceRecreatePR, true) }}:
      value: 'always'
    ${{ else }}:
      value: ''
  # In multi-checkout (without custom paths), Azure DevOps places each repo under
  # $(Build.SourcesDirectory)/<repoName>. selfRepoName must be provided in that case.
  - name: selfRepoPath
    readonly: true
    ${{ if eq(parameters.arcadeRepoResource, 'self') }}:
      value: '$(Build.SourcesDirectory)'
    ${{ else }}:
      value: '$(Build.SourcesDirectory)/${{ parameters.selfRepoName }}'
  - name: arcadeRepoPath
    readonly: true
    ${{ if eq(parameters.arcadeRepoResource, 'self') }}:
      value: '$(Build.SourcesDirectory)'
    ${{ else }}:
      value: '$(Build.SourcesDirectory)/${{ parameters.arcadeRepoName }}'
  pool: ${{ parameters.pool }}
  
  templateContext:
    outputParentDirectory: $(Build.ArtifactStagingDirectory)
    outputs:
    - output: pipelineArtifact
      displayName: Publish Renovate Log
      condition: succeededOrFailed()
      targetPath: $(Build.ArtifactStagingDirectory)
      artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt)
      isProduction: false # logs are non-production artifacts

  steps:
  - checkout: self
    fetchDepth: 1
  
  - ${{ if ne(parameters.arcadeRepoResource, 'self') }}:
    - checkout: ${{ parameters.arcadeRepoResource }}
      fetchDepth: 1

  - script: |
      renovate-config-validator $(selfRepoPath)/${{parameters.renovateConfigPath}} 2>&1 | tee /tmp/renovate-config-validator.out
      validatorExit=${PIPESTATUS[0]}
      if grep -q '^ WARN:' /tmp/renovate-config-validator.out; then
        echo "##vso[task.logissue type=warning]Renovate config validator produced warnings."
        echo "##vso[task.complete result=SucceededWithIssues]"
      fi
      exit $validatorExit
    displayName: Validate Renovate config
    env:
      LOG_LEVEL: info
      LOG_FILE_LEVEL: debug
      LOG_FILE: $(Build.ArtifactStagingDirectory)/renovate-config-validator.json
  
  - script: |
      . $(arcadeRepoPath)/eng/common/renovate.env
      renovate 2>&1 | tee /tmp/renovate.out
      renovateExit=${PIPESTATUS[0]}
      if grep -q '^ WARN:' /tmp/renovate.out; then
        echo "##vso[task.logissue type=warning]Renovate produced warnings."
        echo "##vso[task.complete result=SucceededWithIssues]"
      fi
      exit $renovateExit
    displayName: Run Renovate
    env:
      RENOVATE_FORK_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT)
      RENOVATE_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT)
      RENOVATE_REPOSITORIES: ${{parameters.gitHubRepo}}
      RENOVATE_BASE_BRANCHES: ${{ convertToJson(parameters.baseBranches) }}
      RENOVATE_DRY_RUN: $(dryRunArg)
      RENOVATE_RECREATE_WHEN: $(recreateWhenArg)
      LOG_LEVEL: info
      LOG_FILE_LEVEL: debug
      LOG_FILE: $(renovateLogFilePath)
      RENOVATE_CONFIG_FILE: $(selfRepoPath)/${{parameters.renovateConfigPath}}
  
  - script: |
      echo "PRs created by Renovate:"
      if [ -s "$(renovateLogFilePath)" ]; then
        if ! jq -r 'select(.msg == "PR created" and .pr != null) | "https://github.com/\(.repository)/pull/\(.pr)"' "$(renovateLogFilePath)" | sort -u; then
          echo "##vso[task.logissue type=warning]Failed to parse Renovate log file with jq."
          echo "##vso[task.complete result=SucceededWithIssues]"
        fi
      else
        echo "##vso[task.logissue type=warning]No Renovate log file found or file is empty."
        echo "##vso[task.complete result=SucceededWithIssues]"
      fi
    displayName: List created PRs
    condition: and(succeededOrFailed(), eq('${{ parameters.dryRun }}', false))


================================================
FILE: eng/common/core-templates/job/source-build.yml
================================================
parameters:
  # This template adds arcade-powered source-build to CI. The template produces a server job with a
  # default ID 'Source_Build_Complete' to put in a dependency list if necessary.

  # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed.
  jobNamePrefix: 'Source_Build'

  # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for
  # managed-only repositories. This is an object with these properties:
  #
  # name: ''
  #   The name of the job. This is included in the job ID.
  # targetRID: ''
  #   The name of the target RID to use, instead of the one auto-detected by Arcade.
  # portableBuild: false
  #   Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than
  #   linux-x64), and compiling against distro-provided packages rather than portable ones. The
  #   default is portable mode.
  # skipPublishValidation: false
  #   Disables publishing validation.  By default, a check is performed to ensure no packages are
  #   published by source-build.
  # container: ''
  #   A container to use. Runs in docker.
  # pool: {}
  #   A pool to use. Runs directly on an agent.
  # buildScript: ''
  #   Specifies the build script to invoke to perform the build in the repo. The default
  #   './build.sh' should work for typical Arcade repositories, but this is customizable for
  #   difficult situations.
  # buildArguments: ''
  #   Specifies additional build arguments to pass to the build script.
  # jobProperties: {}
  #   A list of job properties to inject at the top level, for potential extensibility beyond
  #   container and pool.
  platform: {}

  is1ESPipeline: ''

  # If set to true and running on a non-public project,
  # Internal nuget and blob storage locations will be enabled.
  # This is not enabled by default because many repositories do not need internal sources
  # and do not need to have the required service connections approved in the pipeline.
  enableInternalSources: false

jobs:
- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }}
  displayName: Source-Build (${{ parameters.platform.name }})

  ${{ each property in parameters.platform.jobProperties }}:
    ${{ property.key }}: ${{ property.value }}

  ${{ if ne(parameters.platform.container, '') }}:
    container: ${{ parameters.platform.container }}

  ${{ if eq(parameters.platform.pool, '') }}:
    # The default VM host AzDO pool. This should be capable of running Docker containers: almost all
    # source-build builds run in Docker, including the default managed platform.
    # /eng/common/core-templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic
    ${{ if eq(parameters.is1ESPipeline, 'true') }}:
      pool:
        ${{ if eq(variables['System.TeamProject'], 'public') }}:
          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
          demands: ImageOverride -equals build.azurelinux.3.amd64.open
        ${{ if eq(variables['System.TeamProject'], 'internal') }}:
          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
          image: build.azurelinux.3.amd64
          os: linux
    ${{ else }}:
      pool:
        ${{ if eq(variables['System.TeamProject'], 'public') }}:
          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
          demands: ImageOverride -equals build.azurelinux.3.amd64.open
        ${{ if eq(variables['System.TeamProject'], 'internal') }}:
          name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
          demands: ImageOverride -equals build.azurelinux.3.amd64
  ${{ if ne(parameters.platform.pool, '') }}:
    pool: ${{ parameters.platform.pool }}

  workspace:
    clean: all

  steps:
  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error

  - ${{ if eq(parameters.enableInternalSources, true) }}:
    - template: /eng/common/core-templates/steps/enable-internal-sources.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    - template: /eng/common/core-templates/steps/enable-internal-runtimes.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}
  - template: /eng/common/core-templates/steps/source-build.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
      platform: ${{ parameters.platform }}


================================================
FILE: eng/common/core-templates/job/source-index-stage1.yml
================================================
parameters:
  runAsPublic: false
  sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
  preSteps: []
  binlogPath: artifacts/log/Debug/Build.binlog
  condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')
  dependsOn: ''
  pool: ''
  is1ESPipeline: ''

jobs:
- job: SourceIndexStage1
  dependsOn: ${{ parameters.dependsOn }}
  condition: ${{ parameters.condition }}
  variables:
  - name: BinlogPath
    value: ${{ parameters.binlogPath }}
  - name: skipComponentGovernanceDetection
    value: true
  - template: /eng/common/core-templates/variables/pool-providers.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}

  ${{ if ne(parameters.pool, '') }}:
    pool: ${{ parameters.pool }}
  ${{ if eq(parameters.pool, '') }}:
    pool:
      ${{ if eq(variables['System.TeamProject'], 'public') }}:
        name: $(DncEngPublicBuildPool)
        image: windows.vs2026.amd64.open
      ${{ if eq(variables['System.TeamProject'], 'internal') }}:
        name: $(DncEngInternalBuildPool)
        image: windows.vs2026.amd64

  steps:
  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error

  - ${{ each preStep in parameters.preSteps }}:
    - ${{ preStep }}
  - script: ${{ parameters.sourceIndexBuildCommand }}
    displayName: Build Repository

  - template: /eng/common/core-templates/steps/source-index-stage1-publish.yml
    parameters:
      binLogPath: ${{ parameters.binLogPath }}


================================================
FILE: eng/common/core-templates/jobs/jobs.yml
================================================
parameters:
  # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
  continueOnError: false

  # Optional: Include PublishBuildArtifacts task
  enablePublishBuildArtifacts: false

  # Optional: Enable running the source-build jobs to build repo from source
  enableSourceBuild: false

  # Optional: Parameters for source-build template.
  #           See /eng/common/core-templates/jobs/source-build.yml for options
  sourceBuildParameters: []

  graphFileGeneration:
    # Optional: Enable generating the graph files at the end of the build
    enabled: false
    # Optional: Include toolset dependencies in the generated graph files
    includeToolset: false
    
  # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
  jobs: []

  # Optional: Override automatically derived dependsOn value for "publish build assets" job
  publishBuildAssetsDependsOn: ''

  # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage.
  publishAssetsImmediately: false

  # Optional: 🌤️ or not the build has assets it wants to publish to BAR
  isAssetlessBuild: false

  # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml)
  artifactsPublishingAdditionalParameters: ''
  signingValidationAdditionalParameters: ''

  # Optional: should run as a public build even in the internal project
  #           if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
  runAsPublic: false

  enableSourceIndex: false
  sourceIndexParams: {}

  artifacts: {}
  is1ESPipeline: ''

  # Publishing version w/default.
  publishingVersion: 3

  repositoryAlias: self
  officialBuildId: ''

# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
# and some (Microbuild) should only be applied to non-PR cases for internal builds.

jobs:
- ${{ each job in parameters.jobs }}:
  - ${{ if eq(parameters.is1ESPipeline, 'true') }}:
    - template: /eng/common/templates-official/job/job.yml
      parameters: 
        # pass along parameters
        ${{ each parameter in parameters }}:
          ${{ if ne(parameter.key, 'jobs') }}:
            ${{ parameter.key }}: ${{ parameter.value }}

        # pass along job properties
        ${{ each property in job }}:
          ${{ if ne(property.key, 'job') }}:
            ${{ property.key }}: ${{ property.value }}

        name: ${{ job.job }}

  - ${{ else }}:
    - template: /eng/common/templates/job/job.yml
      parameters: 
        # pass along parameters
        ${{ each parameter in parameters }}:
          ${{ if ne(parameter.key, 'jobs') }}:
            ${{ parameter.key }}: ${{ parameter.value }}

        # pass along job properties
        ${{ each property in job }}:
          ${{ if ne(property.key, 'job') }}:
            ${{ property.key }}: ${{ property.value }}

        name: ${{ job.job }}

- ${{ if eq(parameters.enableSourceBuild, true) }}:
  - template: /eng/common/core-templates/jobs/source-build.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
      ${{ each parameter in parameters.sourceBuildParameters }}:
        ${{ parameter.key }}: ${{ parameter.value }}

- ${{ if eq(parameters.enableSourceIndex, 'true') }}:
  - template: ../job/source-index-stage1.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
      runAsPublic: ${{ parameters.runAsPublic }}
      ${{ each parameter in parameters.sourceIndexParams }}:
        ${{ parameter.key }}: ${{ parameter.value }}

- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
  - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, ''), eq(parameters.isAssetlessBuild, true)) }}:
    - template: ../job/publish-build-assets.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}
        continueOnError: ${{ parameters.continueOnError }}
        publishingVersion: ${{ parameters.publishingVersion }}
        dependsOn:
        - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
          - ${{ each job in parameters.publishBuildAssetsDependsOn }}:
            - ${{ job.job }}
        - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
          - ${{ each job in parameters.jobs }}:
            - ${{ job.job }}

        runAsPublic: ${{ parameters.runAsPublic }}
        publishAssetsImmediately: ${{ or(parameters.publishAssetsImmediately, parameters.isAssetlessBuild) }}
        isAssetlessBuild: ${{ parameters.isAssetlessBuild }}
        enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
        artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
        signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }}
        repositoryAlias: ${{ parameters.repositoryAlias }}
        officialBuildId: ${{ parameters.officialBuildId }}


================================================
FILE: eng/common/core-templates/jobs/source-build.yml
================================================
parameters:
  # This template adds arcade-powered source-build to CI. A job is created for each platform, as
  # well as an optional server job that completes when all platform jobs complete.

  # See /eng/common/core-templates/job/source-build.yml
  jobNamePrefix: 'Source_Build'

  # This is the default platform provided by Arcade, intended for use by a managed-only repo.
  defaultManagedPlatform:
    name: 'Managed'
    container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-amd64'

  # Defines the platforms on which to run build jobs. One job is created for each platform, and the
  # object in this array is sent to the job template as 'platform'. If no platforms are specified,
  # one job runs on 'defaultManagedPlatform'.
  platforms: []

  is1ESPipeline: ''

  # If set to true and running on a non-public project,
  # Internal nuget and blob storage locations will be enabled.
  # This is not enabled by default because many repositories do not need internal sources
  # and do not need to have the required service connections approved in the pipeline.
  enableInternalSources: false

jobs:

- ${{ each platform in parameters.platforms }}:
  - template: /eng/common/core-templates/job/source-build.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
      jobNamePrefix: ${{ parameters.jobNamePrefix }}
      platform: ${{ platform }}
      enableInternalSources: ${{ parameters.enableInternalSources }}

- ${{ if eq(length(parameters.platforms), 0) }}:
  - template: /eng/common/core-templates/job/source-build.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
      jobNamePrefix: ${{ parameters.jobNamePrefix }}
      platform: ${{ parameters.defaultManagedPlatform }}
      enableInternalSources: ${{ parameters.enableInternalSources }}


================================================
FILE: eng/common/core-templates/post-build/common-variables.yml
================================================
variables:
  - group: Publish-Build-Assets

  # Whether the build is internal or not
  - name: IsInternalBuild
    value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }}

  # Default Maestro++ API Endpoint and API Version
  - name: MaestroApiEndPoint
    value: "https://maestro.dot.net"
  - name: MaestroApiVersion
    value: "2020-02-20"

  - name: SymbolToolVersion
    value: 1.0.1
  - name: BinlogToolVersion
    value: 1.0.11

  - name: runCodesignValidationInjection
    value: false


================================================
FILE: eng/common/core-templates/post-build/post-build.yml
================================================
parameters:
# Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
# Publishing V1 is no longer supported
# Publishing V2 is no longer supported
# Publishing V3 is the default
- name: publishingInfraVersion
  displayName: Which version of publishing should be used to promote the build definition?
  type: number
  default: 3
  values:
  - 3
  - 4

- name: BARBuildId
  displayName: BAR Build Id
  type: number
  default: 0

- name: PromoteToChannelIds
  displayName: Channel to promote BARBuildId to
  type: string
  default: ''

- name: enableSourceLinkValidation
  displayName: Enable SourceLink validation
  type: boolean
  default: false

- name: enableSigningValidation
  displayName: Enable signing validation
  type: boolean
  default: true

- name: enableSymbolValidation
  displayName: Enable symbol validation
  type: boolean
  default: false

- name: enableNugetValidation
  displayName: Enable NuGet validation
  type: boolean
  default: true

- name: publishInstallersAndChecksums
  displayName: Publish installers and checksums
  type: boolean
  default: true

- name: requireDefaultChannels
  displayName: Fail the build if there are no default channel(s) registrations for the current build
  type: boolean
  default: false

- name: isAssetlessBuild
  type: boolean
  displayName: Is Assetless Build
  default: false

# These parameters let the user customize the call to sdk-task.ps1 for publishing
# symbols & general artifacts as well as for signing validation
- name: symbolPublishingAdditionalParameters
  displayName: Symbol publishing additional parameters
  type: string
  default: ''

- name: artifactsPublishingAdditionalParameters
  displayName: Artifact publishing additional parameters
  type: string
  default: ''

- name: signingValidationAdditionalParameters
  displayName: Signing validation additional parameters
  type: string
  default: ''

# Which stages should finish execution before post-build stages start
- name: validateDependsOn
  type: object
  default:
  - build

- name: publishDependsOn
  type: object
  default:
  - Validate

# Optional: Call asset publishing rather than running in a separate stage
- name: publishAssetsImmediately
  type: boolean
  default: false

- name: is1ESPipeline
  type: boolean
  default: false

stages:
- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true')) }}:
  - stage: Validate
    dependsOn: ${{ parameters.validateDependsOn }}
    displayName: Validate Build Assets
    variables:
    - template: /eng/common/core-templates/post-build/common-variables.yml
    - template: /eng/common/core-templates/variables/pool-providers.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    jobs:
    - job:
      displayName: NuGet Validation
      condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true'))
      pool:
        # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
        ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
          name: AzurePipelines-EO
          image: 1ESPT-Windows2025
          demands: Cmd
          os: windows
        # If it's not devdiv, it's dnceng
        ${{ else }}:
          ${{ if eq(parameters.is1ESPipeline, true) }}:
            name: $(DncEngInternalBuildPool)
            image: windows.vs2026.amd64
            os: windows
          ${{ else }}:
            name: $(DncEngInternalBuildPool)
            demands: ImageOverride -equals windows.vs2026.amd64

      steps:
      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
        parameters:
          BARBuildId: ${{ parameters.BARBuildId }}
          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
          is1ESPipeline: ${{ parameters.is1ESPipeline }}

      - ${{ if ne(parameters.publishingInfraVersion, 4) }}:
        - task: DownloadBuildArtifacts@0
          displayName: Download Package Artifacts
          inputs:
            buildType: specific
            buildVersionToDownload: specific
            project: $(AzDOProjectName)
            pipeline: $(AzDOPipelineId)
            buildId: $(AzDOBuildId)
            artifactName: PackageArtifacts
            checkDownloadedFiles: true
      - ${{ if eq(parameters.publishingInfraVersion, 4) }}:
        - task: DownloadPipelineArtifact@2
          displayName: Download Pipeline Artifacts (V4)
          inputs:
            itemPattern: '*/packages/**/*.nupkg'
            targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
        - task: CopyFiles@2
          displayName: Flatten packages to PackageArtifacts
          inputs:
            SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
            Contents: '**/*.nupkg'
            TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
            flattenFolders: true

      - task: PowerShell@2
        displayName: Validate
        inputs:
          filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1
          arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/

    - job:
      displayName: Signing Validation
      condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true'))
      pool:
        # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
        ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
          name: AzurePipelines-EO
          image: 1ESPT-Windows2025
          demands: Cmd
          os: windows
        # If it's not devdiv, it's dnceng
        ${{ else }}:
          ${{ if eq(parameters.is1ESPipeline, true) }}:
            name: $(DncEngInternalBuildPool)
            image: windows.vs2026.amd64
            os: windows
          ${{ else }}:
            name: $(DncEngInternalBuildPool)
            demands: ImageOverride -equals windows.vs2026.amd64
      steps:
      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
        parameters:
          BARBuildId: ${{ parameters.BARBuildId }}
          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
          is1ESPipeline: ${{ parameters.is1ESPipeline }}

      - ${{ if ne(parameters.publishingInfraVersion, 4) }}:
        - task: DownloadBuildArtifacts@0
          displayName: Download Package Artifacts
          inputs:
            buildType: specific
            buildVersionToDownload: specific
            project: $(AzDOProjectName)
            pipeline: $(AzDOPipelineId)
            buildId: $(AzDOBuildId)
            artifactName: PackageArtifacts
            checkDownloadedFiles: true
      - ${{ if eq(parameters.publishingInfraVersion, 4) }}:
        - task: DownloadPipelineArtifact@2
          displayName: Download Pipeline Artifacts (V4)
          inputs:
            itemPattern: '*/packages/**/*.nupkg'
            targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
        - task: CopyFiles@2
          displayName: Flatten packages to PackageArtifacts
          inputs:
            SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
            Contents: '**/*.nupkg'
            TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
            flattenFolders: true

      # This is necessary whenever we want to publish/restore to an AzDO private feed
      # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
      # otherwise it'll complain about accessing a private feed.
      - task: NuGetAuthenticate@1
        displayName: 'Authenticate to AzDO Feeds'

      # Signing validation will optionally work with the buildmanifest file which is downloaded from
      # Azure DevOps above.
      - task: PowerShell@2
        displayName: Validate
        inputs:
          filePath: eng\common\sdk-task.ps1
          arguments: -task SigningValidation -restore -msbuildEngine dotnet
            /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
            /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt'
            ${{ parameters.signingValidationAdditionalParameters }}

      - template: /eng/common/core-templates/steps/publish-logs.yml
        parameters:
          is1ESPipeline: ${{ parameters.is1ESPipeline }}
          StageLabel: 'Validation'
          JobLabel: 'Signing'
          BinlogToolVersion: $(BinlogToolVersion)

    # SourceLink validation has been removed — the underlying CLI tool
    # (targeting netcoreapp2.1) has not functioned for years.
    # The enableSourceLinkValidation parameter is kept but ignored so
    # existing pipelines that pass it are not broken.
    # See https://github.com/dotnet/arcade/issues/16647
    - ${{ if eq(parameters.enableSourceLinkValidation, 'true') }}:
      - job:
        displayName: 'SourceLink Validation Removed - please remove enableSourceLinkValidation from your pipeline'
        pool: server
        steps:
        - task: Delay@1
          displayName: 'Warning: SourceLink validation removed (see https://github.com/dotnet/arcade/issues/16647)'
          inputs:
            delayForMinutes: '0'

- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}:
  - stage: publish_using_darc
    ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true')) }}:
      dependsOn: ${{ parameters.publishDependsOn }}
    ${{ else }}:
      dependsOn: ${{ parameters.validateDependsOn }}
    displayName: Publish using Darc
    variables:
    - template: /eng/common/core-templates/post-build/common-variables.yml
    - template: /eng/common/core-templates/variables/pool-providers.yml
      parameters:
        is1ESPipeline: ${{ parameters.is1ESPipeline }}
    jobs:
    - job:
      displayName: Publish Using Darc
      timeoutInMinutes: 120
      pool:
        # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
        ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
          name: AzurePipelines-EO
          image: 1ESPT-Windows2025
          demands: Cmd
          os: windows
        # If it's not devdiv, it's dnceng
        ${{ else }}:
          ${{ if eq(parameters.is1ESPipeline, true) }}:
            name: NetCore1ESPool-Publishing-Internal
            image: windows.vs2026.amd64
            os: windows
          ${{ else }}:
            name: NetCore1ESPool-Publishing-Internal
            demands: ImageOverride -equals windows.vs2026.amd64
      steps:
      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
        parameters:
          BARBuildId: ${{ parameters.BARBuildId }}
          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
          is1ESPipeline: ${{ parameters.is1ESPipeline }}

      - task: NuGetAuthenticate@1

      # Populate internal runtime variables.
      - template: /eng/common/templates/steps/enable-internal-sources.yml
        parameters:
          legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)

      - template: /eng/common/templates/steps/enable-internal-runtimes.yml

      - task: UseDotNet@2
        inputs:
          version: 8.0.x

      - task: AzureCLI@2
        displayName: Publish Using Darc
        inputs:
          azureSubscription: "Darc: Maestro Production"
          scriptType: ps
          scriptLocation: scriptPath
          scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
          arguments: >
              -BuildId $(BARBuildId)
              -PublishingInfraVersion 3
              -AzdoToken '$(System.AccessToken)'
              -WaitPublishingFinish true
              -RequireDefaultChannels ${{ parameters.requireDefaultChannels }}
              -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
              -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
              -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
              -runtimeSourceFeed https://ci.dot.net/internal 
              -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'


================================================
FILE: eng/common/core-templates/post-build/setup-maestro-vars.yml
================================================
parameters:
  BARBuildId: ''
  PromoteToChannelIds: ''
  is1ESPipeline: ''

steps:
  - ${{ if eq(parameters.is1ESPipeline, '') }}:
    - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error

  - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
    - task: DownloadPipelineArtifact@2
      displayName: Download Release Configs
      inputs:
        artifactName: ReleaseConfigs
        targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'

  - task: AzureCLI@2
    name: setReleaseVars
    displayName: Set Release Configs Vars
    inputs:
      azureSubscription: "Darc: Maestro Production"
      scriptType: pscore
      scriptLocation: inlineScript
      inlineScript: |
        try {
          if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') {
            $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt

            $BarId = $Content | Select -Index 0
            $Channels = $Content | Select -Index 1
            $IsStableBuild = $Content | Select -Index 2

            $AzureDevOpsProject = $Env:System_TeamProject
            $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId
            $AzureDevOpsBuildId = $Env:Build_BuildId
          }
          else {
            . $(System.DefaultWorkingDirectory)\eng\common\tools.ps1
            $darc = Get-Darc
            $buildInfo = & $darc get-build `
              --id ${{ parameters.BARBuildId }} `
              --extended `
              --output-format json `
              --ci `
              | convertFrom-Json

            $BarId = ${{ parameters.BARBuildId }}
            $Channels = $Env:PromoteToMaestroChannels -split ","
            $Channels = $Channels -join "]["
            $Channels = "[$Channels]"

            $IsStableBuild = $buildInfo.stable
            $AzureDevOpsProject = $buildInfo.azureDevOpsProject
            $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId
            $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId
          }

          Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId"
          Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels"
          Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild"

          Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject"
          Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId"
          Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId"
        }
        catch {
          Write-Host $_
          Write-Host $_.Exception
          Write-Host $_.ScriptStackTrace
          exit 1
        }
    env:
      PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }}


================================================
FILE: eng/common/core-templates/stages/renovate.yml
================================================
# --------------------------------------------------------------------------------------
# Renovate Pipeline Template
# --------------------------------------------------------------------------------------
# This template provides a complete reusable pipeline definition for running Renovate
# in a 1ES Official pipeline. Pipelines can extend from this template and only need
# to pass the Renovate job parameters.
#
# For more info, see https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md
# --------------------------------------------------------------------------------------

parameters:

# Path to the Renovate configuration file within the repository.
- name: renovateConfigPath
  type: string
  default: 'eng/renovate.json'

# GitHub repository to run Renovate against, in the format 'owner/repo'.
- name: gitHubRepo
  type: string

# List of base branches to target for Renovate PRs.
- name: baseBranches
  type: object
  default:
  - main

# When true, Renovate will run in dry run mode.
- name: dryRun
  type: boolean
  default: false

# When true, Renovate will recreate PRs even if they were previously closed.
- name: forceRecreatePR
  type: boolean
  default: false

# Name of the arcade repository resource in the pipeline.
# This allows repos which haven't been onboarded to Arcade to still use this 
# template by checking out the repo as a resource with a custom name and pointing
# this parameter to it.
- name: arcadeRepoResource
  type: string
  default: 'self'

- name: selfRepoName
  type: string
  default: ''
- name: arcadeRepoName
  type: string
  default: ''

# Pool configuration for the pipeline.
- name: pool
  type: object
  default:
    name: NetCore1ESPool-Internal
    image: build.azurelinux.3.amd64
    os: linux

# Renovate version used in the container image tag.
- name: renovateVersion
  default: 43
  type: number

# Pool configuration for SDL analysis.
- name: sdlPool
  type: object
  default:
    name: NetCore1ESPool-Internal
    image: windows.vs2026.amd64
    os: windows

resources:
  repositories:
  - repository: 1ESPipelineTemplates
    type: git
    name: 1ESPipelineTemplates/1ESPipelineTemplates
    ref: refs/tags/release

extends:
  template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
  parameters:
    pool: ${{ parameters.pool }}
    sdl:
      sourceAnalysisPool: ${{ parameters.sdlPool }}
      # When repos that aren't onboarded to Arcade use this template, they set the
      # arcadeRepoResource parameter to point to their Arcade repo resource. In that case,
      # Aracde will be excluded from SDL analysis.
      ${{ if ne(parameters.arcadeRepoResource, 'self') }}:
        sourceRepositoriesToScan:
          exclude:
          - repository: ${{ parameters.arcadeRepoResource }}
    containers:
      RenovateContainer:
        image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-renovate-${{ parameters.renovateVersion }}-amd64
    stages:
    - stage: Renovate
      displayName: Run Renovate
      jobs:
      - template: /eng/common/core-templates/job/renovate.yml@${{ parameters.arcadeRepoResource }}
        parameters:
          renovateConfigPath: ${{ parameters.renovateConfigPath }}
          gitHubRepo: ${{ parameters.gitHubRepo }}
          baseBranches: ${{ parameters.baseBranches }}
          dryRun: ${{ parameters.dryRun }}
          forceRecreatePR: ${{ parameters.forceRecreatePR }}
          pool: ${{ parameters.pool }}
          arcadeRepoResource: ${{ parameters.arcadeRepoResource }}
          selfRepoName: ${{ parameters.selfRepoName }}
          arcadeRepoName: ${{ parameters.arcadeRepoName }}


================================================
FILE: eng/common/core-templates/steps/cleanup-microbuild.yml
================================================
parameters:
  # Enable cleanup tasks for MicroBuild
  enableMicrobuild: false
  # Enable cleanup tasks for MicroBuild on Mac and Linux
  # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
  enableMicrobuildForMacAndLinux: false
  continueOnError: false

steps:
  - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
    - task: MicroBuildCleanup@1
      displayName: Execute Microbuild cleanup tasks
      condition: and(
        always(),
        or(
          and(
            eq(variables['Agent.Os'], 'Windows_NT'),
            in(variables['_SignType'], 'real', 'test')
          ),
          and(
            ${{ eq(parameters.enableMicrobuildForMacAndLinux, true) }},
            ne(variables['Agent.Os'], 'Windows_NT'),
            eq(variables['_SignType'], 'real')
          )
        ))
      continueOnError: ${{ parameters.continueOnError }}
      env:
        TeamName: $(_TeamName)


================================================
FILE: eng/common/core-templates/steps/enable-internal-runtimes.yml
================================================
# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'
# variable with the base64-encoded SAS token, by default

parameters:
- name: federatedServiceConnection
  type: string
  default: 'dotnetbuilds-internal-read'
- name: outputVariableName
  type: string
  default: 'dotnetbuilds-internal-container-read-token-base64'
- name: expiryInHours
  type: number
  default: 1
- name: base64Encode
  type: boolean
  default: true
- name: is1ESPipeline
  type: boolean
  default: false

steps:
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
  - template: /eng/common/core-templates/steps/get-delegation-sas.yml
    parameters:
      federatedServiceConnection: ${{ parameters.federatedServiceConnection }}
      outputVariableName: ${{ parameters.outputVariableName }}
      expiryInHours: ${{ parameters.expiryInHours }}
      base64Encode: ${{ parameters.base64Encode }}
      storageAccount: dotnetbuilds
      container: internal
      permissions: rl
      is1ESPipeline: ${{ parameters.is1ESPipeline }}

================================================
FILE: eng/common/core-templates/steps/enable-internal-sources.yml
================================================
parameters:
# This is the Azure federated service connection that we log into to get an access token.
- name: nugetFederatedServiceConnection
  type: string
  default: 'dnceng-artifacts-feeds-read'
- name: is1ESPipeline
  type: boolean
  default: false
# Legacy parameters to allow for PAT usage
- name: legacyCredential
  type: string
  default: ''

steps:
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
  - ${{ if ne(parameters.legacyCredential, '') }}:
    - task: PowerShell@2
      displayName: Setup Internal Feeds
      inputs:
        filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
        arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
      env:
        Token: ${{ parameters.legacyCredential }}
  # If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate.
  # If running on DevDiv, NuGetAuthenticate is not really an option. It's scoped to a single feed, and we have many feeds that
  # may be added. Instead, we'll use the traditional approach (add cred to nuget.config), but use an account token.
  - ${{ else }}:
    - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
      - task: PowerShell@2
        displayName: Setup Internal Feeds
        inputs:
          filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
          arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config
    - ${{ else }}:
      - template: /eng/common/templates/steps/get-federated-access-token.yml
        parameters:
          federatedServiceConnection: ${{ parameters.nugetFederatedServiceConnection }}
          outputVariableName: 'dnceng-artifacts-feeds-read-access-token'
      - task: PowerShell@2
        displayName: Setup Internal Feeds
        inputs:
          filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
          arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token)
  # This is required in certain scenarios to install the ADO credential provider.
  # It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others
  # (e.g. dotnet msbuild).
  - task: NuGetAuthenticate@1


================================================
FILE: eng/common/core-templates/steps/generate-sbom.yml
================================================
parameters:
  PackageVersion: unused
  BuildDropPath: unused
  PackageName: unused
  ManifestDirPath: unused
  IgnoreDirectories: unused
  sbomContinueOnError: unused
  is1ESPipeline: unused
  publishArtifacts: unused

steps:
- script: |
    echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include."
  displayName: Issue generate-sbom.yml deprecation warning


================================================
FILE: eng/common/core-templates/steps/get-delegation-sas.yml
================================================
parameters:
- name: federatedServiceConnection
  type: string
- name: outputVariableName
  type: string
- name: expiryInHours
  type: number
  default: 1
- name: base64Encode
  type: boolean
  default: false
- name: storageAccount
  type: string
- name: container
  type: string
- name: permissions
  type: string
  default: 'rl'
- name: is1ESPipeline
  type: boolean
  default: false

steps:
- task: AzureCLI@2
  displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}'
  inputs:
    azureSubscription: ${{ parameters.federatedServiceConnection }}
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: |
      # Calculate the expiration of the SAS token and convert to UTC
      $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")

      $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv

      if ($LASTEXITCODE -ne 0) {
        Write-Error "Failed to generate SAS token."
        exit 1
      }

      if ('${{ parameters.base64Encode }}' -eq 'true') {
        $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas))
      }

      Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
      Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas"


================================================
FILE: eng/common/core-templates/steps/get-federated-access-token.yml
================================================
parameters:
- name: federatedServiceConnection
  type: string
- name: outputVariableName
  type: string
- name: is1ESPipeline
  type: boolean
- name: stepName
  type: string
  default: 'getFederatedAccessToken'
- name: condition
  type: string
  default: ''
# Resource to get a token for. Common values include:
# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps
# - 'https://storage.azure.com/' for storage
# Defaults to Azure DevOps
- name: resource
  type: string
  default: '499b84ac-1321-427f-aa17-267ca6975798'
- name: isStepOutputVariable
  type: boolean
  default: false

steps:
- task: AzureCLI@2
  displayName: 'Getting federated access token for feeds'
  name: ${{ parameters.stepName }}
  ${{ if ne(parameters.condition, '') }}:
    condition: ${{ parameters.condition }}
  inputs:
    azureSubscription: ${{ parameters.federatedServiceConnection }}
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: |
      $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv
      if ($LASTEXITCODE -ne 0) {
        Write-Error "Failed to get access token for resource '${{ parameters.resource }}'"
        exit 1
      }
      Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
      Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken"

================================================
FILE: eng/common/core-templates/steps/install-microbuild-impl.yml
================================================
parameters:
  - name: microbuildTaskInputs
    type: object
    default: {}

  - name: microbuildEnv
    type: object
    default: {}

  - name: enablePreviewMicrobuild
    type: boolean
    default: false

  - name: condition
    type: string

  - name: continueOnError
    type: boolean

steps:
- ${{ if eq(parameters.enablePreviewMicrobuild, true) }}:
    - task: MicroBuildSigningPluginPreview@4
      displayName: Install Preview MicroBuild plugin
      inputs: ${{ parameters.microbuildTaskInputs }}
      env: ${{ parameters.microbuildEnv }}
      continueOnError: ${{ parameters.continueOnError }}
      condition: ${{ parameters.condition }}
- ${{ else }}:
  - task: MicroBuildSigningPlugin@4
    displayName: Install MicroBuild plugin
    inputs: ${{ parameters.microbuildTaskInputs }}
    env: ${{ parameters.microbuildEnv }}
    continueOnError: ${{ parameters.continueOnError }}
    condition: ${{ parameters.condition }}


================================================
FILE: eng/common/core-templates/steps/install-microbuild.yml
================================================
parameters:
  # Enable install tasks for MicroBuild
  enableMicrobuild: false
  # Enable install tasks for MicroBuild on Mac and Linux
  # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
  enableMicrobuildForMacAndLinux: false
  # Enable preview version of MB signing plugin
  enablePreviewMicrobuild: false
  # Determines whether the ESRP service connection information should be passed to the signing plugin.
  # This overlaps with _SignType to some degree. We only need the service connection for real signing.
  # It's important that the service connection not be passed to the MicroBuildSigningPlugin task in this place.
  # Doing so will cause the service connection to be authorized for the pipeline, which isn't allowed and won't work for non-prod.
  # Unfortunately, _SignType can't be used to exclude the use of the service connection in non-real sign scenarios. The
  # variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough.
  microbuildUseESRP: true
  # Microbuild installation directory
  microBuildOutputFolder: $(Agent.TempDirectory)/MicroBuild
  # Microbuild version
  microbuildPluginVersion: 'latest'

  continueOnError: false

steps:
  - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
    - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
      # Needed to download the MicroBuild plugin nupkgs on Mac and Linux when nuget.exe is unavailable
      - task: UseDotNet@2
        displayName: Install .NET 8.0 SDK for MicroBuild Plugin
        inputs:
          packageType: sdk
          version: 8.0.x
          installationPath: ${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild
        condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))

      - script: |
          set -euo pipefail

          # UseDotNet@2 prepends the dotnet executable path to the PATH variable, so we can call dotnet directly
          version=$(dotnet --version)
          cat << 'EOF' > ${{ parameters.microBuildOutputFolder }}/global.json
          {
            "sdk": {
              "version": "$version",
              "paths": [
                "${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild"
              ],
              "errorMessage": "The .NET SDK version $version is required to install the MicroBuild signing plugin."
            }
          }
          EOF
        displayName: 'Add global.json to MicroBuild Installation path'
        workingDirectory: ${{ parameters.microBuildOutputFolder }}
        condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))

    - script: |
        REM Check if ESRP is disabled while SignType is real
        if /I "${{ parameters.microbuildUseESRP }}"=="false" if /I "$(_SignType)"=="real" (
          echo Error: ESRP must be enabled when SignType is real.
          exit /b 1
        )
      displayName: 'Validate ESRP usage (Windows)'
      condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
    - script: |
        # Check if ESRP is disabled while SignType is real
        if [ "${{ parameters.microbuildUseESRP }}" = "false" ] && [ "$(_SignType)" = "real" ]; then
          echo "Error: ESRP must be enabled when SignType is real."
          exit 1
        fi
      displayName: 'Validate ESRP usage (Non-Windows)'
      condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))

    # Two different MB install steps. This is due to not being able to use the agent OS during
    # YAML expansion, and Windows vs. Linux/Mac uses different service connections. However,
    # we can avoid including the MB install step if not enabled at all. This avoids a bunch of
    # extra pipeline authorizations, since most pipelines do not sign on non-Windows.
    - template: /eng/common/core-templates/steps/install-microbuild-impl.yml
      parameters:
        enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
        microbuildTaskInputs:
          signType: $(_SignType)
          zipSources: false
          feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
          version: ${{ parameters.microbuildPluginVersion }}
          ${{ if eq(parameters.microbuildUseESRP, true) }}:
            ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
            ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
              ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
            ${{ else }}:
              ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
        microbuildEnv:
          TeamName: $(_TeamName)
          MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
          SYSTEM_ACCESSTOKEN: $(System.AccessToken)
        continueOnError: ${{ parameters.continueOnError }}
        condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))

    - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}:
      - template: /eng/common/core-templates/steps/install-microbuild-impl.yml
        parameters:
          enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
          microbuildTaskInputs:
            signType: $(_SignType)
            zipSources: false
            feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
            version: ${{ parameters.microbuildPluginVersion }}
            workingDirectory: ${{ parameters.microBuildOutputFolder }}
            ${{ if eq(parameters.microbuildUseESRP, true) }}:
              ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
              ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
                ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39
              ${{ else }}:
                ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
          microbuildEnv:
            TeamName: $(_TeamName)
            MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
            SYSTEM_ACCESSTOKEN: $(System.AccessToken)
          continueOnError: ${{ parameters.continueOnError }}
          condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'),  eq(variables['_SignType'], 'real'))


================================================
FILE: eng/common/core-templates/steps/publish-build-artifacts.yml
================================================
parameters:
- name: is1ESPipeline
  type: boolean
  default: false
- name: args
  type: object
  default: {}
steps:
- ${{ if ne(parameters.is1ESPipeline, true) }}:
  - template: /eng/common/templates/steps/publish-build-artifacts.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
      ${{ each parameter in parameters.args }}:
        ${{ parameter.key }}: ${{ parameter.value }}
- ${{ else }}:
  - template: /eng/common/templates-official/steps/publish-build-artifacts.yml
    parameters:
      is1ESPipeline: ${{ parameters.is1ESPipeline }}
      ${{ each parameter in parameters.args }}:
        ${{ parameter.key }}: ${{ parameter.value }}

================================================
FILE: eng/common/core-templates/steps/publish-logs.yml
================================================
parameters:
  StageLabel: ''
  JobLabel: ''
  CustomSensitiveDataList: ''
  # A default - in case value from eng/common/core-templates/post-build/common-variables.yml is not passed
  BinlogToolVersion: '1.0.11'
  is1ESPipeline: false

steps:
- task: Powershell@2
  displayName: Prepare Binlogs to Upload
  inputs:
    targetType: inline
    script: |
      New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
      Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
  continueOnError: true
  condition: always()
    
- task: PowerShell@2
  displayName: Redact Logs
  inputs:
    filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/redact-logs.ps1
    # For now this needs to have explicit list of all sensitive data. Taken from eng/publishing/v3/publish.yml
    # Sensitive data can as well be added to $(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
    #  If the file exists - sensitive data for redaction will be sourced from it
    #  (single entry per line, lines starting with '# ' are considered comments and skipped)
    arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' 
      -BinlogToolVersion '${{parameters.BinlogToolVersion}}'
      -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
      -runtimeSourceFeed https://ci.dot.net/internal 
      -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
      '$(publishing-dnceng-devdiv-code-r-build-re)'
      '$(dn-bot-all-orgs-artifact-feeds-rw)'
      '$(akams-client-id)'
      '$(microsoft-symbol-server-pat)'
      '$(symweb-symbol-server-pat)'
      '$(dnceng-symbol-server-pat)'
      '$(dn-bot-all-orgs-build-rw-code-rw)'
      '$(System.AccessToken)'
      ${{parameters.CustomSensitiveDataList}}
  continueOnError: true
  condition: always()

- task: CopyFiles@2
  displayName: Gather post build logs
  inputs:
    SourceFolder: '$(System.DefaultWorkingDirectory)/PostBuildLogs'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
  condition: always()

- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
  parameters:
    is1ESPipeline: ${{ parameters.is1ESPipeline }}
    args:
      displayName: Publish Logs
      targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
      artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt)
      continueOnError: true
      condition: always()
      retryCountOnTaskFailure: 10 # for any files being locked
      isProduction: false # logs are non-production artifacts



================================================
FILE: eng/common/core-templates/steps/publish-pipeline-artifacts.yml
================================================
parameters:
- name: is1ESPipeline
  type: boolean
  default: false

- name: args
  type: object
  default: {}  

steps:
- ${{ if ne(parameters.is1ESPipeline, true) }}:
  - template: /eng/common/templates/steps/publish-pipeline-artifacts.yml
    parameters:
      ${{ each parameter in parameters }}:
        ${{ parameter.key }}: ${{ parameter.value }}
- ${{ else }}:
  - template: /eng/common/templates-official/steps/publish-pipeline-artifacts.yml
    parameters:
      ${{ each parameter in parameters }}:
        ${{ parameter.key }}: ${{ parameter.value }}


================================================
FILE: eng/common/core-templates/steps/retain-build.yml
================================================
parameters:
  # Optional azure devops PAT with build execute permissions for the build's organization,
  # only needed if the build that should be retained ran on a different organization than 
  # the pipeline where this template is executing from
  Token: ''
  # Optional BuildId to retain, defaults to the current running build
  BuildId: ''
  # Azure devops Organization URI for the build in the https://dev.azure.com/<organization> format.
  # Defaults to the organization the current pipeline is running on
  AzdoOrgUri: '$(System.CollectionUri)'
  # Azure devops project for the build. Defaults to the project the current pipeline is running on
  AzdoProject: '$(System.TeamProject)'

steps:
  - task: powershell@2
    inputs:
      targetType: 'filePath'
      filePath: eng/common/retain-build.ps1
      pwsh: true
      arguments: >
        -AzdoOrgUri: ${{parameters.AzdoOrgUri}}
        -AzdoProject ${{parameters.AzdoProject}}
        -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }}
        -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}}
    displayName: Enable permanent build retention
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
      BUILD_ID: $(Build.BuildId)

================================================
FILE: eng/common/core-templates/steps/send-to-helix.yml
================================================
# Please remember to update the documentation if you make changes to these parameters!
parameters:
  HelixSource: 'pr/default'              # required -- sources must start with pr/, official/, prodcon/, or agent/
  HelixType: 'tests/default/'            # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/'
  HelixBuild: $(Build.BuildNumber)       # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number
  HelixTargetQueues: ''                  # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues
  HelixAccessToken: ''                   # required -- access token to make Helix API requests; should be provided by the appropriate variable group
  HelixProjectPath: 'eng/common/helixpublish.proj'  # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY
  HelixProjectArguments: ''              # optional -- arguments passed to the build command
  HelixConfiguration: ''                 # optional -- additional property attached to a job
  HelixPreCommands: ''                   # optional -- commands to run before Helix work item execution
  HelixPostCommands: ''                  # optional -- commands to run after Helix work item execution
  WorkItemDirectory: ''                  # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects
  WorkItemCommand: ''                    # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects
  WorkItemTimeout: ''                    # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects
  CorrelationPayloadDirectory: ''        # optional -- a directory to zip up and send to Helix as a correlation payload
  XUnitProjects: ''                      # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true
  XUnitWorkItemTimeout: ''               # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects
  XUnitPublishTargetFramework: ''        # optional -- framework to use to publish your xUnit projects
  XUnitRuntimeTargetFramework: ''        # optional -- framework to use for the xUnit console runner
  XUnitRunnerVersion: ''                 # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects
  IncludeDotNetCli: false                # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion
  DotNetCliPackageType: ''               # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
  DotNetCliVersion: ''                   # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
  WaitForWorkItemCompletion: true        # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget."
  IsExternal: false                      # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set
  HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net )
  Creator: ''                            # optional -- if the build is external, use this to specify who is sending the job
  DisplayNamePrefix: 'Run Tests'         # optional -- rename the beginning of the displayName of the steps in AzDO 
  condition: succeeded()                 # optional -- condition for step to execute; defaults to succeeded()
  continueOnError: false                 # optional -- determines whether to continue the build if the step errors; defaults to false

steps:
  - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"'
    displayName: ${{ parameters.DisplayNamePrefix }} (Windows)
    env:
      BuildConfig: $(_BuildConfig)
      HelixSource: ${{ parameters.HelixSource }}
      HelixType: ${{ parameters.HelixType }}
      HelixBuild: ${{ parameters.HelixBuild }}
      HelixConfiguration:  ${{ parameters.HelixConfiguration }}
      HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
      HelixAccessToken: ${{ parameters.HelixAccessToken }}
      HelixPreCommands: ${{ parameters.HelixPreCommands }}
      HelixPostCommands: ${{ parameters.HelixPostCommands }}
      WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
      WorkItemCommand: ${{ parameters.WorkItemCommand }}
      WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
      CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
      XUnitProjects: ${{ parameters.XUnitProjects }}
      XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
      XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
      XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
      XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
      IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
      DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
      DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
      WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
      HelixBaseUri: ${{ parameters.HelixBaseUri }}
      Creator: ${{ parameters.Creator }}
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT'))
    continueOnError: ${{ parameters.continueOnError }}
  - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog
    displayName: ${{ parameters.DisplayNamePrefix }} (Unix)
    env:
      BuildConfig: $(_BuildConfig)
      HelixSource: ${{ parameters.HelixSource }}
      HelixType: ${{ parameters.HelixType }}
      HelixBuild: ${{ parameters.HelixBuild }}
      HelixConfiguration:  ${{ parameters.HelixConfiguration }}
      HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
      HelixAccessToken: ${{ parameters.HelixAccessToken }}
      HelixPreCommands: ${{ parameters.HelixPreCommands }}
      HelixPostCommands: ${{ parameters.HelixPostCommands }}
      WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
      WorkItemCommand: ${{ parameters.WorkItemCommand }}
      WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
      CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
      XUnitProjects: ${{ parameters.XUnitProjects }}
      XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
      XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
      XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
      XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
      IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
      DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
      DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
      WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
      HelixBaseUri: ${{ parameters.HelixBaseUri }}
      Creator: ${{ parameters.Creator }}
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT'))
    continueOnError: ${{ parameters.continueOnError }}


================================================
FILE: eng/common/core-templates/steps/source-build.yml
================================================
parameters:
  # This template adds arcade-powered source-build to CI.

  # This is a 'steps' template, and is intended for advanced scenarios where the existing build
  # infra has a careful build methodology that must be followed. For example, a repo
  # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline
  # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to
  # GitHub. Using this steps template leaves room for that infra to be included.

  # Defines the platform on which to run the steps. See 'eng/common/core-templates/job/source-build.yml'
  # for details. The entire object is described in the 'job' template for simplicity, even though
  # the usage of the properties on this object is split between the 'job' and 'steps' templates.
  platform: {}
  is1ESPipeline: false

steps:
# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.)
- script: |
    set -x
    df -h

    # If building on the internal project, the internal storage variable may be available (usually only if needed)
    # In that case, add variables to allow the download of internal runtimes if the specified versions are not found
    # in the default public locations.
    internalRuntimeDownloadArgs=
    if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
      internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
    fi

    buildConfig=Release
    # Check if AzDO substitutes in a build config from a variable, and use it if so.
    if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then
      buildConfig='$(_BuildConfig)'
    fi

    targetRidArgs=
    if [ '${{ parameters.platform.targetRID }}' != '' ]; then
      targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}'
    fi

    portableBuildArgs=
    if [ '${{ parameters.platform.portableBuild }}' != '' ]; then
      portableBuildArgs='/p:PortableBuild=${{ parameters.platform.portableBuild }}'
    fi

    ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \
      --configuration $buildConfig \
      --restore --build --pack -bl \
      --source-build \
      ${{ parameters.platform.buildArguments }} \
      $internalRuntimeDownloadArgs \
      $targetRidArgs \
      $portableBuildArgs \
  displayName: Build

- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
  parameters:
    is1ESPipeline: ${{ parameters.is1ESPipeline }}
    args:
      displayName: Publish BuildLogs
      targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }}
      artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt)
      continueOnError: true
      condition: succeededOrFailed()
      isProduction: false # logs are non-production artifacts


================================================
FILE: eng/common/core-templates/steps/source-index-stage1-publish.yml
================================================
parameters:
  sourceIndexUploadPackageVersion: 2.0.0-20250906.1
  sourceIndexProcessBinlogPackageVersion: 1.0.1-20250906.1
  sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
  bi
Download .txt
gitextract_fjkujnb6/

├── .azuredevops/
│   └── dependabot.yml
├── .config/
│   └── tsaoptions.json
├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   ├── copilot-instructions.md
│   └── workflows/
│       ├── backport.yml
│       └── copilot-setup-steps.yml
├── .gitignore
├── Build.cmd
├── CODE_OF_CONDUCT.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE.TXT
├── NuGet.config
├── README.md
├── SECURITY.md
├── THIRD-PARTY-NOTICES.TXT
├── XHarness.slnx
├── azure-pipelines-public.yml
├── azure-pipelines.yml
├── build.sh
├── decoded_output.xml
├── docs/
│   ├── high-level-architecture.md
│   └── integrity-check.md
├── eng/
│   ├── Publishing.props
│   ├── Signing.props
│   ├── Version.Details.xml
│   ├── Versions.props
│   ├── common/
│   │   ├── AGENTS.md
│   │   ├── BuildConfiguration/
│   │   │   └── build-configuration.json
│   │   ├── CIBuild.cmd
│   │   ├── PSScriptAnalyzerSettings.psd1
│   │   ├── README.md
│   │   ├── SetupNugetSources.ps1
│   │   ├── SetupNugetSources.sh
│   │   ├── build.cmd
│   │   ├── build.ps1
│   │   ├── build.sh
│   │   ├── cibuild.sh
│   │   ├── core-templates/
│   │   │   ├── job/
│   │   │   │   ├── job.yml
│   │   │   │   ├── onelocbuild.yml
│   │   │   │   ├── publish-build-assets.yml
│   │   │   │   ├── renovate.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1.yml
│   │   │   ├── jobs/
│   │   │   │   ├── jobs.yml
│   │   │   │   └── source-build.yml
│   │   │   ├── post-build/
│   │   │   │   ├── common-variables.yml
│   │   │   │   ├── post-build.yml
│   │   │   │   └── setup-maestro-vars.yml
│   │   │   ├── stages/
│   │   │   │   └── renovate.yml
│   │   │   ├── steps/
│   │   │   │   ├── cleanup-microbuild.yml
│   │   │   │   ├── enable-internal-runtimes.yml
│   │   │   │   ├── enable-internal-sources.yml
│   │   │   │   ├── generate-sbom.yml
│   │   │   │   ├── get-delegation-sas.yml
│   │   │   │   ├── get-federated-access-token.yml
│   │   │   │   ├── install-microbuild-impl.yml
│   │   │   │   ├── install-microbuild.yml
│   │   │   │   ├── publish-build-artifacts.yml
│   │   │   │   ├── publish-logs.yml
│   │   │   │   ├── publish-pipeline-artifacts.yml
│   │   │   │   ├── retain-build.yml
│   │   │   │   ├── send-to-helix.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1-publish.yml
│   │   │   └── variables/
│   │   │       └── pool-providers.yml
│   │   ├── cross/
│   │   │   ├── armel/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── build-android-rootfs.sh
│   │   │   ├── build-rootfs.sh
│   │   │   ├── install-debs.py
│   │   │   ├── riscv64/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── tizen-build-rootfs.sh
│   │   │   ├── tizen-fetch.sh
│   │   │   └── toolchain.cmake
│   │   ├── darc-init.ps1
│   │   ├── darc-init.sh
│   │   ├── dotnet-install.cmd
│   │   ├── dotnet-install.ps1
│   │   ├── dotnet-install.sh
│   │   ├── dotnet.cmd
│   │   ├── dotnet.ps1
│   │   ├── dotnet.sh
│   │   ├── enable-cross-org-publishing.ps1
│   │   ├── generate-locproject.ps1
│   │   ├── helixpublish.proj
│   │   ├── init-tools-native.cmd
│   │   ├── init-tools-native.ps1
│   │   ├── init-tools-native.sh
│   │   ├── internal/
│   │   │   ├── Directory.Build.props
│   │   │   ├── NuGet.config
│   │   │   └── Tools.csproj
│   │   ├── internal-feed-operations.ps1
│   │   ├── internal-feed-operations.sh
│   │   ├── loc/
│   │   │   └── P22DotNetHtmlLocalization.lss
│   │   ├── msbuild.ps1
│   │   ├── msbuild.sh
│   │   ├── native/
│   │   │   ├── CommonLibrary.psm1
│   │   │   ├── common-library.sh
│   │   │   ├── init-compiler.sh
│   │   │   ├── init-distro-rid.sh
│   │   │   ├── init-os-and-arch.sh
│   │   │   ├── install-cmake-test.sh
│   │   │   ├── install-cmake.sh
│   │   │   ├── install-dependencies.sh
│   │   │   └── install-tool.ps1
│   │   ├── pipeline-logging-functions.ps1
│   │   ├── pipeline-logging-functions.sh
│   │   ├── post-build/
│   │   │   ├── check-channel-consistency.ps1
│   │   │   ├── nuget-validation.ps1
│   │   │   ├── nuget-verification.ps1
│   │   │   ├── publish-using-darc.ps1
│   │   │   ├── redact-logs.ps1
│   │   │   └── symbols-validation.ps1
│   │   ├── renovate.env
│   │   ├── retain-build.ps1
│   │   ├── sdk-task.ps1
│   │   ├── sdk-task.sh
│   │   ├── template-guidance.md
│   │   ├── templates/
│   │   │   ├── job/
│   │   │   │   ├── job.yml
│   │   │   │   ├── onelocbuild.yml
│   │   │   │   ├── publish-build-assets.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1.yml
│   │   │   ├── jobs/
│   │   │   │   ├── jobs.yml
│   │   │   │   └── source-build.yml
│   │   │   ├── post-build/
│   │   │   │   ├── common-variables.yml
│   │   │   │   ├── post-build.yml
│   │   │   │   └── setup-maestro-vars.yml
│   │   │   ├── steps/
│   │   │   │   ├── enable-internal-runtimes.yml
│   │   │   │   ├── enable-internal-sources.yml
│   │   │   │   ├── generate-sbom.yml
│   │   │   │   ├── get-delegation-sas.yml
│   │   │   │   ├── get-federated-access-token.yml
│   │   │   │   ├── publish-build-artifacts.yml
│   │   │   │   ├── publish-logs.yml
│   │   │   │   ├── publish-pipeline-artifacts.yml
│   │   │   │   ├── retain-build.yml
│   │   │   │   ├── send-to-helix.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   ├── source-index-stage1-publish.yml
│   │   │   │   └── vmr-sync.yml
│   │   │   ├── variables/
│   │   │   │   └── pool-providers.yml
│   │   │   └── vmr-build-pr.yml
│   │   ├── templates-official/
│   │   │   ├── job/
│   │   │   │   ├── job.yml
│   │   │   │   ├── onelocbuild.yml
│   │   │   │   ├── publish-build-assets.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1.yml
│   │   │   ├── jobs/
│   │   │   │   ├── jobs.yml
│   │   │   │   └── source-build.yml
│   │   │   ├── post-build/
│   │   │   │   ├── common-variables.yml
│   │   │   │   ├── post-build.yml
│   │   │   │   └── setup-maestro-vars.yml
│   │   │   ├── steps/
│   │   │   │   ├── enable-internal-runtimes.yml
│   │   │   │   ├── enable-internal-sources.yml
│   │   │   │   ├── generate-sbom.yml
│   │   │   │   ├── get-delegation-sas.yml
│   │   │   │   ├── get-federated-access-token.yml
│   │   │   │   ├── publish-build-artifacts.yml
│   │   │   │   ├── publish-logs.yml
│   │   │   │   ├── publish-pipeline-artifacts.yml
│   │   │   │   ├── retain-build.yml
│   │   │   │   ├── send-to-helix.yml
│   │   │   │   ├── source-build.yml
│   │   │   │   └── source-index-stage1-publish.yml
│   │   │   └── variables/
│   │   │       └── pool-providers.yml
│   │   ├── tools.ps1
│   │   ├── tools.sh
│   │   ├── vmr-sync.ps1
│   │   └── vmr-sync.sh
│   ├── common-variables.yml
│   ├── e2e-test.yml
│   └── pipelines/
│       └── apiscan-steps.yml
├── es-metadata.yml
├── global.json
├── src/
│   ├── Microsoft.DotNet.XHarness.Android/
│   │   ├── AdbExitCodes.cs
│   │   ├── AdbFailureException.cs
│   │   ├── AdbRunner.cs
│   │   ├── AndroidDevice.cs
│   │   ├── ApkHelper.cs
│   │   ├── Execution/
│   │   │   ├── AdbProcessManager.cs
│   │   │   ├── AdbReportFactory.cs
│   │   │   ├── Api23AndOlderReportManager.cs
│   │   │   ├── IAdbProcessManager.cs
│   │   │   ├── IReportManager.cs
│   │   │   └── NewReportManager.cs
│   │   ├── InstrumentationRunner.cs
│   │   └── Microsoft.DotNet.XHarness.Android.csproj
│   ├── Microsoft.DotNet.XHarness.Apple/
│   │   ├── AppOperations/
│   │   │   ├── AppInstaller.cs
│   │   │   ├── AppRunner.cs
│   │   │   ├── AppRunnerBase.cs
│   │   │   ├── AppRunnerFactory.cs
│   │   │   ├── AppTester.cs
│   │   │   ├── AppTesterFactory.cs
│   │   │   └── AppUninstaller.cs
│   │   ├── CommunicationChannel.cs
│   │   ├── CrashSnapshotReporterFactory.cs
│   │   ├── Darwin.cs
│   │   ├── DeviceFinder.cs
│   │   ├── DeviceLogCapturerFactory.cs
│   │   ├── ErrorKnowledgeBase.cs
│   │   ├── ExitCodeDetector.cs
│   │   ├── ILogger.cs
│   │   ├── Microsoft.DotNet.XHarness.Apple.csproj
│   │   └── Orchestration/
│   │       ├── BaseOrchestrator.cs
│   │       ├── InstallOrchestrator.cs
│   │       ├── JustRunOrchestrator.cs
│   │       ├── JustTestOrchestrator.cs
│   │       ├── RunOrchestrator.cs
│   │       ├── SimulatorResetOrchestrator.cs
│   │       ├── TestOrchestrator.cs
│   │       └── UninstallOrchestrator.cs
│   ├── Microsoft.DotNet.XHarness.CLI/
│   │   ├── CommandArguments/
│   │   │   ├── Android/
│   │   │   │   ├── AndroidAdbCommandArguments.cs
│   │   │   │   ├── AndroidArchitecture.cs
│   │   │   │   ├── AndroidDeviceCommandArguments.cs
│   │   │   │   ├── AndroidInstallCommandArguments.cs
│   │   │   │   ├── AndroidRunCommandArguments.cs
│   │   │   │   ├── AndroidStateCommandArguments.cs
│   │   │   │   ├── AndroidTestCommandArguments.cs
│   │   │   │   ├── AndroidUninstallCommandArguments.cs
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── ApiVersionArgument.cs
│   │   │   │   │   ├── DeviceArchitectureArgument.cs
│   │   │   │   │   ├── DeviceIdArgument.cs
│   │   │   │   │   ├── DeviceOutputFolderArgument.cs
│   │   │   │   │   ├── InstrumentationArguments.cs
│   │   │   │   │   ├── InstrumentationNameArgument.cs
│   │   │   │   │   ├── LaunchTimeoutArgument.cs
│   │   │   │   │   ├── PackageNameArgument.cs
│   │   │   │   │   ├── ShowAdbPathArgument.cs
│   │   │   │   │   └── WifiArgument.cs
│   │   │   │   └── IAndroidAppRunArguments.cs
│   │   │   ├── AndroidHeadless/
│   │   │   │   ├── AndroidHeadlessInstallCommandArguments.cs
│   │   │   │   ├── AndroidHeadlessRunCommandArguments.cs
│   │   │   │   ├── AndroidHeadlessTestCommandArguments.cs
│   │   │   │   ├── AndroidHeadlessUninstallCommandArguments.cs
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── RuntimePathArgument.cs
│   │   │   │   │   ├── TestAssemblyArgument.cs
│   │   │   │   │   ├── TestPathArgument.cs
│   │   │   │   │   └── TestScriptArgument.cs
│   │   │   │   └── IAndroidHeadlessAppRunArguments.cs
│   │   │   ├── Apple/
│   │   │   │   ├── AppleDeviceCommandsArguments.cs
│   │   │   │   ├── AppleInstallCommandArguments.cs
│   │   │   │   ├── AppleJustRunCommandArguments.cs
│   │   │   │   ├── AppleJustTestCommandArguments.cs
│   │   │   │   ├── AppleMlaunchCommandArguments.cs
│   │   │   │   ├── AppleResetSimulatorCommandArguments.cs
│   │   │   │   ├── AppleRunCommandArguments.cs
│   │   │   │   ├── AppleStateCommandArguments.cs
│   │   │   │   ├── AppleTestCommandArguments.cs
│   │   │   │   ├── AppleUninstallCommandArguments.cs
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── BundleIdentifierArgument.cs
│   │   │   │   │   ├── CommunicationChannelArgument.cs
│   │   │   │   │   ├── DeviceNameArgument.cs
│   │   │   │   │   ├── EnableLldbArgument.cs
│   │   │   │   │   ├── EnvironmentalVariablesArgument.cs
│   │   │   │   │   ├── ForceInstallationArgument.cs
│   │   │   │   │   ├── HideProgressArgument.cs
│   │   │   │   │   ├── IncludeWirelessArgument.cs
│   │   │   │   │   ├── LaunchTimeoutArgument.cs
│   │   │   │   │   ├── ListInstalledArgument.cs
│   │   │   │   │   ├── MlaunchArgument.cs
│   │   │   │   │   ├── NoWaitArgument.cs
│   │   │   │   │   ├── ResetSimulatorArgument.cs
│   │   │   │   │   ├── ShowDevicesUUIDArgument.cs
│   │   │   │   │   ├── ShowSimulatorsUUIDArgument.cs
│   │   │   │   │   ├── SignalAppEndArgument.cs
│   │   │   │   │   ├── TargetArgument.cs
│   │   │   │   │   ├── XcodeArgument.cs
│   │   │   │   │   └── XmlResultJargonArgument.cs
│   │   │   │   ├── IAppleAppRunArguments.cs
│   │   │   │   ├── IAppleArguments.cs
│   │   │   │   └── Simulators/
│   │   │   │       ├── FindCommandArguments.cs
│   │   │   │       ├── InstallCommandArguments.cs
│   │   │   │       ├── ListCommandArguments.cs
│   │   │   │       └── SimulatorsCommandArguments.cs
│   │   │   ├── Argument.cs
│   │   │   ├── Arguments/
│   │   │   │   ├── AppPathArgument.cs
│   │   │   │   ├── ClassMethodFilters.cs
│   │   │   │   ├── EnableCoverageArgument.cs
│   │   │   │   ├── ExpectedExitCodeArgument.cs
│   │   │   │   ├── OutputDirectoryArgument.cs
│   │   │   │   ├── SingleMethodFilters.cs
│   │   │   │   ├── TimeoutArgument.cs
│   │   │   │   ├── TypeFromAssemblyArgument.cs
│   │   │   │   ├── WebServerHttpEnvironmentVariables.cs
│   │   │   │   ├── WebServerHttpsEnvironmentVariables.cs
│   │   │   │   ├── WebServerMiddlewareArgument.cs
│   │   │   │   ├── WebServerUploadResults.cs
│   │   │   │   ├── WebServerUseCorsArguments.cs
│   │   │   │   ├── WebServerUseCrossOriginPolicyArguments.cs
│   │   │   │   ├── WebServerUseDefaultFiles.cs
│   │   │   │   └── WebServerUseHttpsArguments.cs
│   │   │   ├── DiagnosticsArgument.cs
│   │   │   ├── HelpArgument.cs
│   │   │   ├── UseJsonArgument.cs
│   │   │   ├── VerbosityArgument.cs
│   │   │   ├── WASI/
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── WasmEngineArgument.cs
│   │   │   │   │   ├── WasmEngineArguments.cs
│   │   │   │   │   └── WasmEngineLocationArgument.cs
│   │   │   │   └── WasiTestCommandArguments.cs
│   │   │   ├── WASM/
│   │   │   │   ├── Arguments/
│   │   │   │   │   ├── BackgroundThrottlingArgument.cs
│   │   │   │   │   ├── BrowserArgument.cs
│   │   │   │   │   ├── BrowserArguments.cs
│   │   │   │   │   ├── BrowserLocationArgument.cs
│   │   │   │   │   ├── DebuggerPortArgument.cs
│   │   │   │   │   ├── ErrorPatternsFileArgument.cs
│   │   │   │   │   ├── HTMLFileArgument.cs
│   │   │   │   │   ├── JavaScriptEngineArgument.cs
│   │   │   │   │   ├── JavaScriptEngineArguments.cs
│   │   │   │   │   ├── JavaScriptEngineLocationArgument.cs
│   │   │   │   │   ├── JavaScriptFileArgument.cs
│   │   │   │   │   ├── LocaleArgument.cs
│   │   │   │   │   ├── NoHeadlessArgument.cs
│   │   │   │   │   ├── NoIncognitoArgument.cs
│   │   │   │   │   ├── NoQuitArgument.cs
│   │   │   │   │   ├── PageLoadStrategyArgument.cs
│   │   │   │   │   ├── SymbolMapFileArgument.cs
│   │   │   │   │   ├── SymbolicatePatternsFileArgument.cs
│   │   │   │   │   └── SymbolicatorArgument.cs
│   │   │   │   ├── IWebServerArguments.cs
│   │   │   │   ├── WasmTestBrowserCommandArguments.cs
│   │   │   │   ├── WasmTestCommandArguments.cs
│   │   │   │   └── WebServerCommandArguments.cs
│   │   │   └── XHarnessCommandArguments.cs
│   │   ├── Commands/
│   │   │   ├── Android/
│   │   │   │   ├── AndroidAdbCommand.cs
│   │   │   │   ├── AndroidCommand.cs
│   │   │   │   ├── AndroidCommandSet.cs
│   │   │   │   ├── AndroidDeviceCommand.cs
│   │   │   │   ├── AndroidInstallCommand.cs
│   │   │   │   ├── AndroidRunCommand.cs
│   │   │   │   ├── AndroidStateCommand.cs
│   │   │   │   ├── AndroidTestCommand.cs
│   │   │   │   ├── AndroidUninstallCommand.cs
│   │   │   │   └── IDiagnosticDataExtensions.cs
│   │   │   ├── AndroidHeadless/
│   │   │   │   ├── AndroidHeadlessCommandSet.cs
│   │   │   │   ├── AndroidHeadlessInstallCommand.cs
│   │   │   │   ├── AndroidHeadlessRunCommand.cs
│   │   │   │   ├── AndroidHeadlessTestCommand.cs
│   │   │   │   └── AndroidHeadlessUninstallCommand.cs
│   │   │   ├── Apple/
│   │   │   │   ├── AppleAppCommand.cs
│   │   │   │   ├── AppleCommand.cs
│   │   │   │   ├── AppleCommandSet.cs
│   │   │   │   ├── AppleDeviceCommand.cs
│   │   │   │   ├── AppleInstallCommand.cs
│   │   │   │   ├── AppleJustRunCommand.cs
│   │   │   │   ├── AppleJustTestCommand.cs
│   │   │   │   ├── AppleMlaunchCommand.cs
│   │   │   │   ├── AppleResetSimulatorCommand.cs
│   │   │   │   ├── AppleRunCommand.cs
│   │   │   │   ├── AppleStateCommand.cs
│   │   │   │   ├── AppleTestCommand.cs
│   │   │   │   ├── AppleUninstallCommand.cs
│   │   │   │   └── Simulators/
│   │   │   │       ├── FindCommand.cs
│   │   │   │       ├── InstallCommand.cs
│   │   │   │       ├── ListCommand.cs
│   │   │   │       ├── Simulator.cs
│   │   │   │       ├── SimulatorsCommand.cs
│   │   │   │       └── SimulatorsCommandSet.cs
│   │   │   ├── GetStateCommand.cs
│   │   │   ├── WASI/
│   │   │   │   ├── Engine/
│   │   │   │   │   └── WasiTestCommand.cs
│   │   │   │   └── WasiCommandSet.cs
│   │   │   ├── WASM/
│   │   │   │   ├── Browser/
│   │   │   │   │   ├── WasmBrowserTestRunner.cs
│   │   │   │   │   └── WasmTestBrowserCommand.cs
│   │   │   │   ├── ErrorPatternScanner.cs
│   │   │   │   ├── JS/
│   │   │   │   │   └── WasmTestCommand.cs
│   │   │   │   ├── WasmCommandSet.cs
│   │   │   │   ├── WasmLogMessage.cs
│   │   │   │   ├── WasmTestMessagesProcessor.cs
│   │   │   │   └── WebServerCommand.cs
│   │   │   ├── WebServer.cs
│   │   │   ├── XHarnessCommand.cs
│   │   │   ├── XHarnessHelpCommand.cs
│   │   │   └── XHarnessVersionCommand.cs
│   │   ├── Microsoft.DotNet.XHarness.CLI.csproj
│   │   ├── Program.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Resources/
│   │   │   ├── Strings.Designer.cs
│   │   │   └── Strings.resx
│   │   └── XHarnessConsoleLoggerFormatter.cs
│   ├── Microsoft.DotNet.XHarness.Common/
│   │   ├── CLI/
│   │   │   ├── EnvironmentVariables.cs
│   │   │   ├── ExitCode.cs
│   │   │   └── NoDeviceFoundException.cs
│   │   ├── CommandDiagnostics.cs
│   │   ├── Execution/
│   │   │   ├── IMacOSProcessManager.cs
│   │   │   ├── IProcessManager.cs
│   │   │   ├── LinuxProcessManager.cs
│   │   │   ├── MacOSProcessManager.cs
│   │   │   ├── ProcessManager.cs
│   │   │   ├── ProcessManagerFactory.cs
│   │   │   ├── UnixProcessManager.cs
│   │   │   └── WindowsProcessManager.cs
│   │   ├── Logging/
│   │   │   ├── AggregatedLog.cs
│   │   │   ├── CallbackLog.cs
│   │   │   ├── ConsoleLog.cs
│   │   │   ├── FileBackedLog.cs
│   │   │   ├── ILog.cs
│   │   │   ├── Log.cs
│   │   │   ├── MemoryLog.cs
│   │   │   ├── NullLog.cs
│   │   │   ├── ReadableLog.cs
│   │   │   └── ScanLog.cs
│   │   ├── Microsoft.DotNet.XHarness.Common.csproj
│   │   ├── RunSummaryEmitter.cs
│   │   ├── TargetPlatform.cs
│   │   ├── Utilities/
│   │   │   ├── DisposableList.cs
│   │   │   ├── Extensions.cs
│   │   │   ├── FileUtils.cs
│   │   │   └── StringUtils.cs
│   │   ├── WasmSymbolicatorBase.cs
│   │   └── XmlResultJargon.cs
│   ├── Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/
│   │   ├── DefaultAndroidEntryPoint.cs
│   │   └── Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit.csproj
│   ├── Microsoft.DotNet.XHarness.TestRunners.Common/
│   │   ├── AndroidApplicationEntryPointBase.cs
│   │   ├── ApplicationEntryPoint.cs
│   │   ├── ApplicationOptions.cs
│   │   ├── CoverageManager.cs
│   │   ├── Extensions.cs
│   │   ├── IDevice.cs
│   │   ├── IgnoreFileParser.cs
│   │   ├── LogWriter.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.Common.csproj
│   │   ├── MinimumLogLevel.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── TcpTextWriter.cs
│   │   ├── TestAssemblyInfo.cs
│   │   ├── TestCompletionStatus.cs
│   │   ├── TestExecutionState.cs
│   │   ├── TestFailureInfo.cs
│   │   ├── TestResult.cs
│   │   ├── TestRunResult.cs
│   │   ├── TestRunSelector.cs
│   │   ├── TestRunSelectorType.cs
│   │   ├── TestRunner.cs
│   │   ├── WasmApplicationEntryPointBase.cs
│   │   └── iOSApplicationEntryPointBase.cs
│   ├── Microsoft.DotNet.XHarness.TestRunners.NUnit/
│   │   ├── FilterBuilder.cs
│   │   ├── INUnitTestRunner.cs
│   │   ├── IResultSummary.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.NUnit.csproj
│   │   ├── NUnit3XmlOutputWriter.cs
│   │   ├── NUnitTestListener.cs
│   │   ├── NUnitTestRunner.cs
│   │   ├── OutputWriter.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── ResultSummary.cs
│   │   ├── TestStatusExtensions.cs
│   │   └── XmlResultJargonExtensions.cs
│   ├── Microsoft.DotNet.XHarness.TestRunners.Xunit/
│   │   ├── AndroidApplicationEntryPoint.cs
│   │   ├── CompletionCallbackExecutionSink.cs
│   │   ├── CustomXunitTestRunner.cs
│   │   ├── EnvironmentVariables.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.Xunit.csproj
│   │   ├── NUnit3Xml.xslt
│   │   ├── NUnitXml.xslt
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── ReflectionBasedXunitTestRunner.cs
│   │   ├── TestCaseExtensions.cs
│   │   ├── ThreadlessXunitTestRunner.cs
│   │   ├── WasmApplicationEntryPoint.cs
│   │   ├── WasmThreadedTestRunner.cs
│   │   ├── WasmXmlResultWriter.cs
│   │   ├── XUnitFilter.cs
│   │   ├── XUnitFilterType.cs
│   │   ├── XUnitFiltersCollection.cs
│   │   ├── XUnitTestRunner.cs
│   │   ├── XunitTestRunnerBase.cs
│   │   ├── YieldingXunitTestFrameworkExecutor.cs
│   │   └── iOSApplicationEntryPoint.cs
│   └── Microsoft.DotNet.XHarness.iOS.Shared/
│       ├── AppBundleInformation.cs
│       ├── AppBundleInformationParser.cs
│       ├── Collections/
│       │   ├── BlockingEnumerableCollection.cs
│       │   └── IAsyncEnumerable.cs
│       ├── CrashSnapshotReporter.cs
│       ├── Execution/
│       │   ├── Arguments.cs
│       │   ├── EnviromentVariables.cs
│       │   ├── IMlaunchProcessManager.cs
│       │   ├── MLaunchArguments.cs
│       │   └── MlaunchProcessManager.cs
│       ├── Extension.cs
│       ├── Hardware/
│       │   ├── Device.cs
│       │   ├── HardwareDeviceLoader.cs
│       │   ├── IDevice.cs
│       │   ├── IDeviceLoader.cs
│       │   ├── IHardwareDevice.cs
│       │   ├── ISimulatorDevice.cs
│       │   ├── ISimulatorLoader.cs
│       │   ├── SimDevicePair.cs
│       │   ├── SimDeviceSpecification.cs
│       │   ├── SimDeviceType.cs
│       │   ├── SimRuntime.cs
│       │   ├── SimulatorDevice.cs
│       │   ├── SimulatorLoader.cs
│       │   ├── SimulatorSelector.cs
│       │   └── TCCDatabase.cs
│       ├── IErrorKnowledgeBase.cs
│       ├── IResultFileHandler.cs
│       ├── IResultParser.cs
│       ├── ITestReporter.cs
│       ├── Listeners/
│       │   ├── SimpleFileListener.cs
│       │   ├── SimpleHttpListener.cs
│       │   ├── SimpleListener.cs
│       │   ├── SimpleListenerFactory.cs
│       │   ├── SimpleTcpListener.cs
│       │   ├── TcpTunnel.cs
│       │   └── TunnelBore.cs
│       ├── Logging/
│       │   ├── AppInstallMonitorLog.cs
│       │   ├── CaptureLog.cs
│       │   ├── DeviceLogCapturer.cs
│       │   ├── IEventLogger.cs
│       │   ├── ILogs.cs
│       │   ├── LogFile.cs
│       │   ├── LogType.cs
│       │   ├── Logs.cs
│       │   └── WrenchLog.cs
│       ├── Microsoft.DotNet.XHarness.iOS.Shared.csproj
│       ├── ResultFileHandler.cs
│       ├── RunMode.cs
│       ├── SdkVersions.cs
│       ├── TestExecutingResult.cs
│       ├── TestReporter.cs
│       ├── TestReporterFactory.cs
│       ├── TestTarget.cs
│       ├── Utilities/
│       │   ├── DirectoryUtilities.cs
│       │   ├── Extensions.cs
│       │   ├── Helpers.cs
│       │   ├── PlistExtensions.cs
│       │   └── ProjectFileExtensions.cs
│       └── XmlResults/
│           ├── IXmlResultParser.cs
│           ├── NUnitV2ResultParser.cs
│           ├── NUnitV2TestReportGenerator.cs
│           ├── NUnitV3ResultParser.cs
│           ├── NUnitV3TestReportGenerator.cs
│           ├── TestReportGenerator.cs
│           ├── TouchUnitResultParser.cs
│           ├── TouchUnitTestReportGenerator.cs
│           ├── TrxResultParser.cs
│           ├── TrxTestReportGenerator.cs
│           ├── XUnitResultParser.cs
│           ├── XUnitTestReportGenerator.cs
│           └── XmlResultParser.cs
├── tests/
│   ├── Directory.Build.targets
│   ├── Microsoft.DotNet.XHarness.Android.Tests/
│   │   ├── AdbRunnerLogFilterTests.cs
│   │   ├── AdbRunnerTests.cs
│   │   ├── InstrumentationRunnerSummaryTests.cs
│   │   └── Microsoft.DotNet.XHarness.Android.Tests.csproj
│   ├── Microsoft.DotNet.XHarness.Apple.Tests/
│   │   ├── AppOperations/
│   │   │   ├── AppInstallerTests.cs
│   │   │   ├── AppRunTestBase.cs
│   │   │   ├── AppRunnerTests.cs
│   │   │   ├── AppTesterTests.cs
│   │   │   └── AppUninstallerTests.cs
│   │   ├── DeviceFinderTests.cs
│   │   ├── ErrorKnowledgeBaseTests.cs
│   │   ├── ExitCodeDetectorTests.cs
│   │   ├── Microsoft.DotNet.XHarness.Apple.Tests.csproj
│   │   ├── MockLogs.cs
│   │   └── Orchestration/
│   │       ├── CopyLogsToMainLogTests.cs
│   │       ├── InstallOrchestratorTests.cs
│   │       ├── JustRunOrchestratorTests.cs
│   │       ├── JustTestOrchestratorTests.cs
│   │       ├── OrchestratorTestBase.cs
│   │       ├── RunOrchestratorTests.cs
│   │       ├── SimulatorResetOrchestratorTests.cs
│   │       ├── TestOrchestratorTests.cs
│   │       └── UninstallOrchestratorTests.cs
│   ├── Microsoft.DotNet.XHarness.CLI.Tests/
│   │   ├── CommandArguments/
│   │   │   └── ArgumentTests.cs
│   │   ├── Commands/
│   │   │   └── XHarnessCommandTests.cs
│   │   ├── Microsoft.DotNet.XHarness.CLI.Tests.csproj
│   │   ├── Resources/
│   │   │   └── StringsTests.cs
│   │   ├── UnitTestArguments.cs
│   │   └── UnitTestCommand.cs
│   ├── Microsoft.DotNet.XHarness.Common.Tests/
│   │   ├── Execution/
│   │   │   └── ProcessManagerTests.cs
│   │   ├── Logging/
│   │   │   ├── CallbackLogTest.cs
│   │   │   ├── ConsoleLogTest.cs
│   │   │   └── ScanLogTest.cs
│   │   ├── Microsoft.DotNet.XHarness.Common.Tests.csproj
│   │   └── Utilities/
│   │       └── StringUtilsTests.cs
│   ├── Microsoft.DotNet.XHarness.TestRunners.Tests/
│   │   ├── CoverageManagerTests.cs
│   │   ├── Microsoft.DotNet.XHarness.TestRunners.Tests.csproj
│   │   ├── NUnit/
│   │   │   ├── NUnit3XmlOutputWriterTests.cs
│   │   │   └── TestStatusExtensionsTests.cs
│   │   └── xUnit/
│   │       ├── XUnitFilterTests.cs
│   │       └── XUnitFiltersCollectionTests.cs
│   ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests/
│   │   ├── AppBundleInformationParserTests.cs
│   │   ├── CrashSnapshotReporterTests.cs
│   │   ├── Execution/
│   │   │   └── MlaunchArgumentsTests.cs
│   │   ├── Hardware/
│   │   │   ├── DefaultSimulatorSelectorTests.cs
│   │   │   ├── DeviceTest.cs
│   │   │   ├── HardwareDeviceLoaderTests.cs
│   │   │   ├── SimulatorDeviceTest.cs
│   │   │   ├── SimulatorLoaderTests.cs
│   │   │   └── TCCDatabaseTests.cs
│   │   ├── Listeners/
│   │   │   ├── SimpleFileListenerTest.cs
│   │   │   ├── SimpleListenerFactoryTest.cs
│   │   │   └── SimpleTcpListenerTest.cs
│   │   ├── Logging/
│   │   │   ├── CaptureLogTest.cs
│   │   │   ├── LogFileTest.cs
│   │   │   └── LogsTest.cs
│   │   ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests.csproj
│   │   ├── ResultFileHandlerTests.cs
│   │   ├── Samples/
│   │   │   ├── Info.plist
│   │   │   ├── Issue8214.xml
│   │   │   ├── Issue95.xml
│   │   │   ├── MtouchArchMissingEverywhere.xml
│   │   │   ├── MtouchArchMissingInConfiguration.xml
│   │   │   ├── NUnitV2Sample.xml
│   │   │   ├── NUnitV2SampleFailure.xml
│   │   │   ├── NUnitV3Sample.xml
│   │   │   ├── NUnitV3SampleFailure.xml
│   │   │   ├── NUnitV3SampleFailures.xml
│   │   │   ├── NUnitV3SampleParameterizedFailure.xml
│   │   │   ├── NUnitV3SampleSuccess.xml
│   │   │   ├── TestCaseFailures.xml
│   │   │   ├── TestProject/
│   │   │   │   ├── Info.plist
│   │   │   │   └── SystemXunit.csproj
│   │   │   ├── TouchUnitSample.xml
│   │   │   ├── TouchUnitSample2.xml
│   │   │   ├── devices.xml
│   │   │   ├── run-log.txt
│   │   │   ├── simulators.xml
│   │   │   └── xUnitSample.xml
│   │   ├── TestExecutingResultTests.cs
│   │   ├── TestReporterTests.cs
│   │   ├── Utilities/
│   │   │   ├── PListExtensionsTests.cs
│   │   │   └── ProjectFileExtensionsTests.cs
│   │   └── XmlResultParserTests.cs
│   └── integration-tests/
│       ├── Android/
│       │   ├── Commands.Tests.proj
│       │   ├── Device.Tests.proj
│       │   ├── Simulator.Tests.proj
│       │   └── TestApks.proj
│       ├── Apple/
│       │   ├── Device.Commands.Tests.proj
│       │   ├── Device.iOS.Tests.proj
│       │   ├── Device.tvOS.Tests.proj
│       │   ├── Simulator.Commands.Tests.proj
│       │   ├── Simulator.Scouting.Commands.Tests.proj
│       │   ├── Simulator.Scouting.Tests.proj
│       │   ├── Simulator.Tests.proj
│       │   ├── SimulatorInstaller.Tests.proj
│       │   ├── TestAppBundle.proj
│       │   └── helix-payloads/
│       │       └── simulatorinstaller-integration-tests.sh
│       ├── Directory.Build.props
│       ├── Directory.Build.targets
│       ├── README.md
│       ├── Storage.props
│       └── WASM/
│           └── WASM.Helix.SDK.Tests.proj
└── tools/
    ├── Install-XHarness.ps1
    ├── install-xharness.sh
    ├── run-e2e-test.ps1
    └── run-e2e-test.sh
Download .txt
Showing preview only (254K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2389 symbols across 407 files)

FILE: eng/common/cross/install-debs.py
  function download_file (line 19) | async def download_file(session, url, dest_path, max_retries=3, retry_de...
  function download_deb_files_parallel (line 42) | async def download_deb_files_parallel(mirror, packages, tmp_dir):
  function download_package_index_parallel (line 58) | async def download_package_index_parallel(mirror, arch, suites):
  function fetch_and_decompress (line 80) | async def fetch_and_decompress(session, url):
  function parse_debian_version (line 95) | def parse_debian_version(version):
  function compare_upstream_version (line 103) | def compare_upstream_version(v1, v2):
  function compare_debian_versions (line 121) | def compare_debian_versions(version1, version2):
  function resolve_dependencies (line 135) | def resolve_dependencies(packages, aliases, desired_packages):
  function parse_package_index (line 160) | def parse_package_index(content):
  function install_packages (line 196) | def install_packages(mirror, packages_info, aliases, tmp_dir, extract_di...
  function extract_deb_file (line 230) | def extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool):
  function finalize_setup (line 273) | def finalize_setup(rootfsdir):

FILE: src/Microsoft.DotNet.XHarness.Android/AdbExitCodes.cs
  type AdbExitCodes (line 10) | public enum AdbExitCodes

FILE: src/Microsoft.DotNet.XHarness.Android/AdbFailureException.cs
  class AdbFailureException (line 9) | public class AdbFailureException : Exception
    method AdbFailureException (line 11) | public AdbFailureException(string message) : base(message)

FILE: src/Microsoft.DotNet.XHarness.Android/AdbRunner.cs
  class AdbRunner (line 18) | public class AdbRunner
    type AdbProperty (line 20) | private enum AdbProperty
    method GetActiveDevice (line 56) | public AndroidDevice? GetActiveDevice() => _activeDevice;
    method AdbRunner (line 58) | public AdbRunner(ILogger log, string adbExePath = "") : this(log, new ...
    method AdbRunner (line 60) | public AdbRunner(ILogger log, IAdbProcessManager processManager, strin...
    method GetCliAdbExePath (line 95) | private static string GetCliAdbExePath()
    method GetAdbVersion (line 119) | public string GetAdbVersion()
    method GetAdbState (line 126) | public string GetAdbState() => RunAdbCommand("get-state").StandardOutput;
    method RebootAndroidDevice (line 128) | public string RebootAndroidDevice()
    method ClearAdbLog (line 135) | public void ClearAdbLog()
    method EnableWifi (line 143) | public void EnableWifi(bool enable) => RunAdbCommand("shell", "svc", "...
    method TryDumpAdbLog (line 146) | public bool TryDumpAdbLog(string outputFilePath, string filterSpec = "")
    method FilterToDotnetLines (line 179) | public static string FilterToDotnetLines(string logcatOutput)
    method CountLines (line 199) | private static int CountLines(string text)
    method DumpBugReport (line 218) | public string DumpBugReport(string outputFilePathWithoutFormat)
    method GetDeviceApiVersion (line 224) | public int GetDeviceApiVersion()
    method GetSettingValue (line 248) | private static int? GetSettingValue (string value)
    method VerifyPackageVerificationSettingValue (line 260) | private void VerifyPackageVerificationSettingValue(string settingName,...
    method CheckPackageVerificationSettings (line 270) | public void CheckPackageVerificationSettings()
    method WaitForDevice (line 278) | public bool WaitForDevice()
    method StartAdbServer (line 314) | public void StartAdbServer()
    method KillAdbServer (line 351) | public void KillAdbServer() => RunAdbCommand(new[] { "kill-server" })....
    method TryRecoverEmulator (line 363) | public bool TryRecoverEmulator()
    method RunSystemCommand (line 510) | private static ProcessExecutionResults RunSystemCommand(string command...
    method CopyHeadlessFolder (line 567) | public int CopyHeadlessFolder(string testPath, bool sharedRuntime = fa...
    method InstallApk (line 640) | public int InstallApk(string apkPath)
    method DeleteHeadlessFolder (line 707) | public int DeleteHeadlessFolder(string testPath)
    method UninstallApk (line 742) | public int UninstallApk(string apkName)
    method KillApk (line 780) | public int KillApk(string apkName)
    method KillProcess (line 795) | public int KillProcess(string testName)
    method PullFiles (line 813) | public List<string> PullFiles(string apkPackageName, string devicePath...
    method HeadlessPullFiles (line 896) | public int HeadlessPullFiles(string devicePath, string localPath)
    method GetDevices (line 918) | public IReadOnlyCollection<AndroidDevice> GetDevices() => GetDevices(
    method GetDevice (line 933) | public AndroidDevice? GetDevice(
    method GetSingleDevice (line 959) | public AndroidDevice? GetSingleDevice(
    method GetAllDevices (line 983) | private IReadOnlyCollection<AndroidDevice> GetAllDevices(
    method GetDevice (line 1091) | private AndroidDevice? GetDevice(
    method GetDevices (line 1142) | private IReadOnlyCollection<AndroidDevice> GetDevices(params AdbProper...
    method GetDeviceProperty (line 1227) | private string? GetDeviceProperty(AdbProperty property, string? device...
    method TestFileExists (line 1263) | private bool TestFileExists(string path, string? deviceName = null)
    method SetActiveDevice (line 1300) | public void SetActiveDevice(AndroidDevice? device)
    method RunHeadlessCommand (line 1315) | public ProcessExecutionResults RunHeadlessCommand(string testPath, str...
    method RunApkInstrumentation (line 1352) | public ProcessExecutionResults RunApkInstrumentation(string apkName, s...
    method DisableChatty (line 1393) | private void DisableChatty()
    method RunAdbCommand (line 1407) | public ProcessExecutionResults RunAdbCommand(params string[] arguments...
    method RunAdbCommand (line 1409) | public ProcessExecutionResults RunAdbCommand(IEnumerable<string> argum...
    method Retry (line 1419) | private bool Retry(Func<bool> action, TimeSpan retryInterval, TimeSpan...
    method Retry (line 1422) | private T Retry<T>(Func<T> action, Func<T, bool> needsRetry, TimeSpan ...

FILE: src/Microsoft.DotNet.XHarness.Android/AndroidDevice.cs
  type AndroidDevice (line 9) | public record AndroidDevice

FILE: src/Microsoft.DotNet.XHarness.Android/ApkHelper.cs
  class ApkHelper (line 9) | public static class ApkHelper
    method GetApkSupportedArchitectures (line 11) | public static List<string> GetApkSupportedArchitectures(string apkPath)

FILE: src/Microsoft.DotNet.XHarness.Android/Execution/AdbProcessManager.cs
  class AdbProcessManager (line 12) | public class AdbProcessManager : IAdbProcessManager
    method AdbProcessManager (line 15) | public AdbProcessManager(ILogger logger) => _log = logger;
    method Run (line 23) | public ProcessExecutionResults Run(string adbExePath, IEnumerable<stri...

FILE: src/Microsoft.DotNet.XHarness.Android/Execution/AdbReportFactory.cs
  class AdbReportFactory (line 9) | internal class AdbReportFactory
    method CreateReportManager (line 13) | internal static IReportManager CreateReportManager(ILogger log, int api)

FILE: src/Microsoft.DotNet.XHarness.Android/Execution/Api23AndOlderReportManager.cs
  class Api23AndOlderReportManager (line 12) | internal class Api23AndOlderReportManager : IReportManager
    method Api23AndOlderReportManager (line 16) | public Api23AndOlderReportManager(ILogger log)
    method DumpBugReport (line 21) | public string DumpBugReport(AdbRunner runner, string outputFilePathWit...

FILE: src/Microsoft.DotNet.XHarness.Android/Execution/IAdbProcessManager.cs
  class ProcessExecutionResults (line 12) | public class ProcessExecutionResults
    method ThrowIfFailed (line 20) | public void ThrowIfFailed(string failureMessage)
    method ToString (line 28) | public override string ToString()
  type IAdbProcessManager (line 45) | public interface IAdbProcessManager
    method Run (line 49) | public ProcessExecutionResults Run(string filename, IEnumerable<string...

FILE: src/Microsoft.DotNet.XHarness.Android/Execution/IReportManager.cs
  type IReportManager (line 7) | internal interface IReportManager
    method DumpBugReport (line 9) | string DumpBugReport(AdbRunner runner, string outputFilePathWithoutFor...

FILE: src/Microsoft.DotNet.XHarness.Android/Execution/NewReportManager.cs
  class NewReportManager (line 7) | class NewReportManager : IReportManager
    method NewReportManager (line 10) | public NewReportManager(ILogger log)
    method DumpBugReport (line 15) | public string DumpBugReport(AdbRunner runner, string outputFilePathWit...

FILE: src/Microsoft.DotNet.XHarness.Android/InstrumentationRunner.cs
  class InstrumentationRunner (line 16) | public class InstrumentationRunner
    method InstrumentationRunner (line 31) | public InstrumentationRunner(ILogger logger, AdbRunner runner)
    method RunApkInstrumentation (line 37) | public ExitCode RunApkInstrumentation(
    method DetermineExitCode (line 113) | private ExitCode DetermineExitCode(ProcessExecutionResults result, boo...
    method ParseInstrumentationResult (line 151) | private (int? ExitCode, bool Crashed, bool FilePullFailed) ParseInstru...
    method PullResultXMLs (line 215) | private bool PullResultXMLs(string apkPackageName, string outputDirect...
    method ParseInstrumentationOutputs (line 248) | private IReadOnlyDictionary<string, string> ParseInstrumentationOutput...
    method EmitRunSummary (line 281) | private void EmitRunSummary(ExitCode exitCode, int? instrumentationExi...

FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppInstaller.cs
  type IAppInstaller (line 18) | public interface IAppInstaller
    method InstallApp (line 20) | Task<ProcessExecutionResult> InstallApp(
  class AppInstaller (line 27) | public class AppInstaller : IAppInstaller
    method AppInstaller (line 32) | public AppInstaller(IMlaunchProcessManager processManager, ILog mainLog)
    method InstallApp (line 38) | public async Task<ProcessExecutionResult> InstallApp(

FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunner.cs
  type IAppRunner (line 21) | public interface IAppRunner
    method RunApp (line 23) | Task<ProcessExecutionResult> RunApp(
    method RunMacCatalystApp (line 35) | Task<ProcessExecutionResult> RunMacCatalystApp(
  class AppRunner (line 48) | public class AppRunner : AppRunnerBase, IAppRunner
    method AppRunner (line 57) | public AppRunner(
    method RunMacCatalystApp (line 76) | public async Task<ProcessExecutionResult> RunMacCatalystApp(
    method RunApp (line 110) | public async Task<ProcessExecutionResult> RunApp(
    method RunDeviceApp (line 199) | private async Task<ProcessExecutionResult> RunDeviceApp(
    method GetCommonArguments (line 229) | private static MlaunchArguments GetCommonArguments(
    method GetSimulatorArguments (line 248) | private MlaunchArguments GetSimulatorArguments(
    method GetDeviceArguments (line 278) | private MlaunchArguments GetDeviceArguments(

FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerBase.cs
  class AppRunnerBase (line 22) | public abstract class AppRunnerBase
    method AppRunnerBase (line 34) | protected AppRunnerBase(
    method RunMacCatalystApp (line 58) | protected async Task<ProcessExecutionResult> RunMacCatalystApp(
    method RunSimulatorApp (line 128) | protected async Task<ProcessExecutionResult> RunSimulatorApp(
    method AddExtraEnvVars (line 230) | protected void AddExtraEnvVars(Dictionary<string, string?> envVariable...
    method GetSetEnvVariableArguments (line 248) | protected static IEnumerable<SetEnvVariableArgument> GetSetEnvVariable...
    method GetSetEnvVariableArguments (line 253) | protected static IEnumerable<SetEnvVariableArgument> GetSetEnvVariable...
    method WatchForAppEndTag (line 256) | protected string WatchForAppEndTag(
    method RunAndWatchForAppSignal (line 277) | protected async Task<ProcessExecutionResult> RunAndWatchForAppSignal(F...
    method CaptureMacCatalystLog (line 295) | protected CancellationTokenSource CaptureMacCatalystLog(AppBundleInfor...
    method CaptureSimulatorLog (line 302) | protected async Task<CancellationTokenSource> CaptureSimulatorLog(
    method CaptureLogStream (line 317) | private CancellationTokenSource CaptureLogStream(string appName, bool ...

FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerFactory.cs
  type IAppRunnerFactory (line 13) | public interface IAppRunnerFactory
    method Create (line 15) | IAppRunner Create(IFileBackedLog log, ILogs logs, Action<string>? logC...
  class AppRunnerFactory (line 18) | public class AppRunnerFactory : IAppRunnerFactory
    method AppRunnerFactory (line 26) | public AppRunnerFactory(
    method Create (line 40) | public IAppRunner Create(IFileBackedLog log, ILogs logs, Action<string...

FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTester.cs
  type IAppTester (line 23) | public interface IAppTester
    method TestApp (line 27) | Task<(TestExecutingResult Result, string ResultMessage)> TestApp(
    method TestMacCatalystApp (line 42) | Task<(TestExecutingResult Result, string ResultMessage)> TestMacCataly...
  class AppTester (line 59) | public class AppTester : AppRunnerBase, IAppTester
    method AppTester (line 77) | public AppTester(
    method TestMacCatalystApp (line 102) | public async Task<(TestExecutingResult Result, string ResultMessage)> ...
    method TestApp (line 155) | public async Task<(TestExecutingResult Result, string ResultMessage)> ...
    method RunSimulatorTests (line 322) | private async Task RunSimulatorTests(
    method RunDeviceTests (line 397) | private async Task RunDeviceTests(
    method RunMacCatalystTests (line 522) | private async Task<(TestExecutingResult Result, string ResultMessage)>...
    method GetCoverageSettings (line 632) | private static (bool EnableCoverage, string CoverageFileName) GetCover...
    method GetEnvVariables (line 643) | private Dictionary<string, string?> GetEnvVariables(
    method GetCommonArguments (line 697) | private MlaunchArguments GetCommonArguments(
    method GetSimulatorArguments (line 730) | private MlaunchArguments GetSimulatorArguments(
    method GetDeviceArguments (line 776) | private MlaunchArguments GetDeviceArguments(

FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTesterFactory.cs
  type IAppTesterFactory (line 15) | public interface IAppTesterFactory
    method Create (line 17) | IAppTester Create(CommunicationChannel communicationChannel, bool isSi...
  class AppTesterFactory (line 20) | public class AppTesterFactory : IAppTesterFactory
    method AppTesterFactory (line 30) | public AppTesterFactory(
    method Create (line 48) | public IAppTester Create(

FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppUninstaller.cs
  type IAppUninstaller (line 15) | public interface IAppUninstaller
    method UninstallSimulatorApp (line 17) | Task<ProcessExecutionResult> UninstallSimulatorApp(ISimulatorDevice si...
    method UninstallDeviceApp (line 18) | Task<ProcessExecutionResult> UninstallDeviceApp(IHardwareDevice device...
  class AppUninstaller (line 21) | public class AppUninstaller : IAppUninstaller
    method AppUninstaller (line 26) | public AppUninstaller(IMlaunchProcessManager processManager, ILog main...
    method UninstallSimulatorApp (line 32) | public Task<ProcessExecutionResult> UninstallSimulatorApp(ISimulatorDe...
    method UninstallDeviceApp (line 40) | public Task<ProcessExecutionResult> UninstallDeviceApp(IHardwareDevice...

FILE: src/Microsoft.DotNet.XHarness.Apple/CommunicationChannel.cs
  type CommunicationChannel (line 10) | public enum CommunicationChannel

FILE: src/Microsoft.DotNet.XHarness.Apple/CrashSnapshotReporterFactory.cs
  type ICrashSnapshotReporterFactory (line 13) | public interface ICrashSnapshotReporterFactory
    method Create (line 15) | ICrashSnapshotReporter Create(ILog log, ILogs logs, bool isDevice, str...
  class CrashSnapshotReporterFactory (line 18) | public class CrashSnapshotReporterFactory : ICrashSnapshotReporterFactory
    method CrashSnapshotReporterFactory (line 22) | public CrashSnapshotReporterFactory(IMlaunchProcessManager processMana...
    method Create (line 27) | public ICrashSnapshotReporter Create(ILog log, ILogs logs, bool isDevi...

FILE: src/Microsoft.DotNet.XHarness.Apple/Darwin.cs
  class Darwin (line 9) | public static class Darwin
    method GetKernelRelease (line 14) | private static string GetKernelRelease()
    method GetVersion (line 46) | public static string GetVersion()
    method sysctl (line 65) | [DllImport("libc")]

FILE: src/Microsoft.DotNet.XHarness.Apple/DeviceFinder.cs
  type IDeviceFinder (line 17) | public interface IDeviceFinder
    method FindDevice (line 19) | Task<DevicePair> FindDevice(
  type DevicePair (line 28) | public record DevicePair(IDevice Device, IDevice? CompanionDevice);
  class DeviceFinder (line 30) | public class DeviceFinder : IDeviceFinder
    method DeviceFinder (line 35) | public DeviceFinder(IHardwareDeviceLoader deviceLoader, ISimulatorLoad...
    method FindDevice (line 41) | public async Task<DevicePair> FindDevice(

FILE: src/Microsoft.DotNet.XHarness.Apple/DeviceLogCapturerFactory.cs
  type IDeviceLogCapturerFactory (line 12) | public interface IDeviceLogCapturerFactory
    method Create (line 14) | IDeviceLogCapturer Create(ILog mainLog, ILog deviceLog, string deviceU...
  class DeviceLogCapturerFactory (line 17) | public class DeviceLogCapturerFactory : IDeviceLogCapturerFactory
    method Create (line 19) | public IDeviceLogCapturer Create(ILog mainLog, ILog deviceLog, string ...

FILE: src/Microsoft.DotNet.XHarness.Apple/ErrorKnowledgeBase.cs
  class ErrorKnowledgeBase (line 15) | public class ErrorKnowledgeBase : IErrorKnowledgeBase
    method IsKnownBuildIssue (line 77) | public bool IsKnownBuildIssue(IFileBackedLog buildLog, [NotNullWhen(tr...
    method IsKnownTestIssue (line 80) | public bool IsKnownTestIssue(IFileBackedLog runLog, [NotNullWhen(true)...
    method IsKnownInstallIssue (line 83) | public bool IsKnownInstallIssue(IFileBackedLog installLog, [NotNullWhe...
    method TryFindErrors (line 86) | private static bool TryFindErrors(IFileBackedLog log, Dictionary<strin...

FILE: src/Microsoft.DotNet.XHarness.Apple/ExitCodeDetector.cs
  type IExitCodeDetector (line 13) | public interface IExitCodeDetector
    method DetectExitCode (line 15) | int? DetectExitCode(AppBundleInformation appBundleInfo, IReadableLog s...
  type IiOSExitCodeDetector (line 17) | public interface IiOSExitCodeDetector : IExitCodeDetector
  type IMacCatalystExitCodeDetector (line 21) | public interface IMacCatalystExitCodeDetector : IExitCodeDetector
  class ExitCodeDetector (line 25) | public abstract class ExitCodeDetector : IExitCodeDetector
    method DetectExitCode (line 34) | public int? DetectExitCode(AppBundleInformation appBundleInfo, IReadab...
    method IsSignalLine (line 61) | protected virtual Match? IsSignalLine(AppBundleInformation appBundleIn...
    method IsStdoutExitLine (line 75) | private static bool IsStdoutExitLine(AppBundleInformation appBundleInf...
    method IsAbnormalExitLine (line 80) | private static bool IsAbnormalExitLine(AppBundleInformation appBundleI...
  class iOSExitCodeDetector (line 84) | public class iOSExitCodeDetector : ExitCodeDetector, IiOSExitCodeDetector
    method IsSignalLine (line 95) | protected override Match? IsSignalLine(AppBundleInformation appBundleI...
  class MacCatalystExitCodeDetector (line 118) | public class MacCatalystExitCodeDetector : ExitCodeDetector, IMacCatalys...

FILE: src/Microsoft.DotNet.XHarness.Apple/ILogger.cs
  type ILogger (line 12) | public interface ILogger
    method LogDebug (line 14) | void LogDebug(string message);
    method LogInformation (line 15) | void LogInformation(string message);
    method LogWarning (line 16) | void LogWarning(string message);
    method LogError (line 17) | void LogError(string message);
    method LogCritical (line 18) | void LogCritical(string message);

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/BaseOrchestrator.cs
  class BaseOrchestrator (line 31) | public abstract class BaseOrchestrator : IDisposable
    method BaseOrchestrator (line 60) | protected BaseOrchestrator(
    method OrchestrateOperation (line 84) | protected async Task<ExitCode> OrchestrateOperation(
    method OrchestrateOperationInternal (line 122) | private async Task<ExitCode> OrchestrateOperationInternal(
    method EmitAppleRunSummary (line 372) | protected void EmitAppleRunSummary(ExitCode exitCode)
    method Dispose (line 429) | public void Dispose()
    method InstallApp (line 441) | protected virtual async Task<ExitCode> InstallApp(
    method UninstallApp (line 502) | protected virtual async Task<ExitCode> UninstallApp(TestTarget target,...
    method CleanUpSimulators (line 546) | protected virtual async Task CleanUpSimulators(IDevice device, IDevice...
    method GetAppBundleFromId (line 568) | protected async Task<AppBundleInformation> GetAppBundleFromId(TestTarg...
    method GetAppBundleFromPath (line 585) | protected Task<AppBundleInformation> GetAppBundleFromPath(TestTargetOs...
    method IsLldbEnabled (line 592) | protected static bool IsLldbEnabled() => File.Exists(s_mlaunchLldbConf...
    method NotifyUserLldbCommand (line 594) | protected static void NotifyUserLldbCommand(ILogger logger, string line)

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/InstallOrchestrator.cs
  type IInstallOrchestrator (line 18) | public interface IInstallOrchestrator
    method OrchestrateInstall (line 20) | Task<ExitCode> OrchestrateInstall(
  class InstallOrchestrator (line 34) | public class InstallOrchestrator : BaseOrchestrator, IInstallOrchestrator
    method InstallOrchestrator (line 36) | public InstallOrchestrator(
    method OrchestrateInstall (line 51) | public async Task<ExitCode> OrchestrateInstall(
    method CleanUpSimulators (line 88) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
    method UninstallApp (line 91) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/JustRunOrchestrator.cs
  type IJustRunOrchestrator (line 19) | public interface IJustRunOrchestrator
    method OrchestrateRun (line 21) | Task<ExitCode> OrchestrateRun(
  class JustRunOrchestrator (line 42) | public class JustRunOrchestrator : RunOrchestrator, IJustRunOrchestrator
    method JustRunOrchestrator (line 44) | public JustRunOrchestrator(
    method OrchestrateRun (line 62) | Task<ExitCode> IJustRunOrchestrator.OrchestrateRun(
    method CleanUpSimulators (line 92) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
    method InstallApp (line 95) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
    method UninstallApp (line 98) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/JustTestOrchestrator.cs
  type IJustTestOrchestrator (line 19) | public interface IJustTestOrchestrator
    method OrchestrateTest (line 21) | Task<ExitCode> OrchestrateTest(
  class JustTestOrchestrator (line 47) | public class JustTestOrchestrator : TestOrchestrator, IJustTestOrchestrator
    method JustTestOrchestrator (line 49) | public JustTestOrchestrator(
    method OrchestrateTest (line 65) | Task<ExitCode> IJustTestOrchestrator.OrchestrateTest(
    method CleanUpSimulators (line 99) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
    method InstallApp (line 102) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
    method UninstallApp (line 105) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/RunOrchestrator.cs
  type IRunOrchestrator (line 21) | public interface IRunOrchestrator
    method OrchestrateRun (line 23) | Task<ExitCode> OrchestrateRun(
  class RunOrchestrator (line 45) | public class RunOrchestrator : BaseOrchestrator, IRunOrchestrator
    method RunOrchestrator (line 56) | public RunOrchestrator(
    method OrchestrateRun (line 83) | public Task<ExitCode> OrchestrateRun(
    method UninstallApp (line 114) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
    method CleanUpSimulators (line 124) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
    method OrchestrateRun (line 134) | protected async Task<ExitCode> OrchestrateRun(
    method ExecuteApp (line 233) | private async Task<ExitCode> ExecuteApp(
    method ExecuteMacCatalystApp (line 274) | private async Task<ExitCode> ExecuteMacCatalystApp(
    method ParseResult (line 304) | private ExitCode ParseResult(

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/SimulatorResetOrchestrator.cs
  type ISimulatorResetOrchestrator (line 18) | public interface ISimulatorResetOrchestrator
    method OrchestrateSimulatorReset (line 20) | Task<ExitCode> OrchestrateSimulatorReset(
  class SimulatorResetOrchestrator (line 30) | public class SimulatorResetOrchestrator : BaseOrchestrator, ISimulatorRe...
    method SimulatorResetOrchestrator (line 34) | public SimulatorResetOrchestrator(
    method OrchestrateSimulatorReset (line 49) | public Task<ExitCode> OrchestrateSimulatorReset(
    method InstallApp (line 79) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
    method UninstallApp (line 82) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
    method CleanUpSimulators (line 85) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
    class FakeAppBundleInformationParser (line 89) | private class FakeAppBundleInformationParser : IAppBundleInformationPa...
      method ParseFromAppBundle (line 91) | public Task<AppBundleInformation> ParseFromAppBundle(string appPacka...
      method ParseFromProject (line 94) | public Task<AppBundleInformation> ParseFromProject(string projectFil...

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/TestOrchestrator.cs
  type ITestOrchestrator (line 21) | public interface ITestOrchestrator
    method OrchestrateTest (line 23) | Task<ExitCode> OrchestrateTest(
  class TestOrchestrator (line 45) | public class TestOrchestrator : BaseOrchestrator, ITestOrchestrator
    method TestOrchestrator (line 53) | public TestOrchestrator(
    method OrchestrateTest (line 74) | public Task<ExitCode> OrchestrateTest(
    method OrchestrateTest (line 109) | public virtual async Task<ExitCode> OrchestrateTest(
    method ExecuteApp (line 201) | private async Task<ExitCode> ExecuteApp(
    method ExecuteMacCatalystApp (line 260) | private async Task<ExitCode> ExecuteMacCatalystApp(
    method GetAppTester (line 295) | private IAppTester GetAppTester(CommunicationChannel communicationChan...
    method ParseResult (line 303) | private ExitCode ParseResult(TestExecutingResult testResult, string re...
    method CopyLogsToMainLog (line 382) | private void CopyLogsToMainLog(bool isMacCatalyst = false)

FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/UninstallOrchestrator.cs
  type IUninstallOrchestrator (line 18) | public interface IUninstallOrchestrator
    method OrchestrateAppUninstall (line 20) | Task<ExitCode> OrchestrateAppUninstall(
  class UninstallOrchestrator (line 34) | public class UninstallOrchestrator : BaseOrchestrator, IUninstallOrchest...
    method UninstallOrchestrator (line 36) | public UninstallOrchestrator(
    method OrchestrateAppUninstall (line 51) | public Task<ExitCode> OrchestrateAppUninstall(
    method InstallApp (line 79) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
    method UninstallApp (line 82) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidAdbCommandArguments.cs
  class AndroidAdbCommandArguments (line 10) | internal class AndroidAdbCommandArguments : XHarnessCommandArguments
    method GetArguments (line 14) | protected override IEnumerable<Argument> GetArguments() => new[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidArchitecture.cs
  type AndroidArchitecture (line 5) | internal enum AndroidArchitecture
  class AndroidArchitectureHelper (line 13) | internal static class AndroidArchitectureHelper
    method ParseAsAndroidArchitecture (line 15) | public static AndroidArchitecture ParseAsAndroidArchitecture(this stri...
    method AsString (line 24) | public static string AsString(this AndroidArchitecture arch) => arch s...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidDeviceCommandArguments.cs
  class AndroidDeviceCommandArguments (line 9) | internal class AndroidDeviceCommandArguments : XHarnessCommandArguments
    method GetArguments (line 15) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidInstallCommandArguments.cs
  class AndroidInstallCommandArguments (line 11) | internal class AndroidInstallCommandArguments : XHarnessCommandArguments...
    method GetArguments (line 22) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 34) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidRunCommandArguments.cs
  class AndroidRunCommandArguments (line 10) | internal class AndroidRunCommandArguments : XHarnessCommandArguments, IA...
    method GetArguments (line 25) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidStateCommandArguments.cs
  class AndroidStateCommandArguments (line 9) | internal class AndroidStateCommandArguments : XHarnessCommandArguments
    method GetArguments (line 13) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidTestCommandArguments.cs
  class AndroidTestCommandArguments (line 11) | internal class AndroidTestCommandArguments : XHarnessCommandArguments, I...
    method GetArguments (line 28) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 46) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidUninstallCommandArguments.cs
  class AndroidUninstallCommandArguments (line 9) | internal class AndroidUninstallCommandArguments : XHarnessCommandArguments
    method GetArguments (line 14) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/ApiVersionArgument.cs
  class ApiVersionArgument (line 7) | internal class ApiVersionArgument : OptionalIntArgument
    method ApiVersionArgument (line 9) | public ApiVersionArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/DeviceArchitectureArgument.cs
  class DeviceArchitectureArgument (line 9) | internal class DeviceArchitectureArgument : RepeatableArgument
    method DeviceArchitectureArgument (line 11) | public DeviceArchitectureArgument()
    method Validate (line 17) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/DeviceIdArgument.cs
  class DeviceIdArgument (line 11) | internal class DeviceIdArgument : StringArgument
    method DeviceIdArgument (line 13) | public DeviceIdArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/DeviceOutputFolderArgument.cs
  class DeviceOutputFolderArgument (line 10) | internal class DeviceOutputFolderArgument : PathArgument
    method DeviceOutputFolderArgument (line 12) | public DeviceOutputFolderArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/InstrumentationArguments.cs
  class InstrumentationArguments (line 13) | internal class InstrumentationArguments : Argument<Dictionary<string, st...
    method InstrumentationArguments (line 15) | public InstrumentationArguments()
    method Action (line 20) | public override void Action(string argumentValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/InstrumentationNameArgument.cs
  class InstrumentationNameArgument (line 11) | internal class InstrumentationNameArgument : StringArgument
    method InstrumentationNameArgument (line 13) | public InstrumentationNameArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/LaunchTimeoutArgument.cs
  class LaunchTimeoutArgument (line 12) | internal class LaunchTimeoutArgument : TimeSpanArgument
    method LaunchTimeoutArgument (line 14) | public LaunchTimeoutArgument(TimeSpan defaultValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/PackageNameArgument.cs
  class PackageNameArgument (line 7) | internal class PackageNameArgument : RequiredStringArgument
    method PackageNameArgument (line 9) | public PackageNameArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/ShowAdbPathArgument.cs
  class ShowAdbPathArgument (line 7) | internal class ShowAdbPathArgument : SwitchArgument
    method ShowAdbPathArgument (line 9) | public ShowAdbPathArgument() : base("adb|show-adb-path", "Prints ONLY ...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/WifiArgument.cs
  class WifiArgument (line 10) | internal class WifiArgument : Argument<WifiStatus>
    method WifiArgument (line 12) | public WifiArgument()
    method Action (line 17) | public override void Action(string argumentValue)
  type WifiStatus (line 25) | internal enum WifiStatus

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/IAndroidAppRunArguments.cs
  type IAndroidAppRunArguments (line 7) | internal interface IAndroidAppRunArguments

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessInstallCommandArguments.cs
  class AndroidHeadlessInstallCommandArguments (line 11) | internal class AndroidHeadlessInstallCommandArguments : XHarnessCommandA...
    method GetArguments (line 24) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessRunCommandArguments.cs
  class AndroidHeadlessRunCommandArguments (line 11) | internal class AndroidHeadlessRunCommandArguments : XHarnessCommandArgum...
    method GetArguments (line 26) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessTestCommandArguments.cs
  class AndroidHeadlessTestCommandArguments (line 11) | internal class AndroidHeadlessTestCommandArguments : XHarnessCommandArgu...
    method GetArguments (line 26) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessUninstallCommandArguments.cs
  class AndroidHeadlessUninstallCommandArguments (line 10) | internal class AndroidHeadlessUninstallCommandArguments : XHarnessComman...
    method GetArguments (line 16) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/RuntimePathArgument.cs
  class RuntimePathArgument (line 7) | internal class RuntimePathArgument : RequiredStringArgument
    method RuntimePathArgument (line 9) | public RuntimePathArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/TestAssemblyArgument.cs
  class TestAssemblyArgument (line 7) | internal class TestAssemblyArgument : RequiredStringArgument
    method TestAssemblyArgument (line 9) | public TestAssemblyArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/TestPathArgument.cs
  class TestPathArgument (line 7) | internal class TestPathArgument : RequiredStringArgument
    method TestPathArgument (line 9) | public TestPathArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/TestScriptArgument.cs
  class TestScriptArgument (line 7) | internal class TestScriptArgument : RequiredStringArgument
    method TestScriptArgument (line 9) | public TestScriptArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/IAndroidHeadlessAppRunArguments.cs
  type IAndroidHeadlessAppRunArguments (line 8) | internal interface IAndroidHeadlessAppRunArguments

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleDeviceCommandsArguments.cs
  class AppleDeviceCommandArguments (line 9) | internal class AppleDeviceCommandArguments : XHarnessCommandArguments, I...
    method GetArguments (line 16) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleInstallCommandArguments.cs
  class AppleInstallCommandArguments (line 11) | internal class AppleInstallCommandArguments : XHarnessCommandArguments, ...
    method GetArguments (line 23) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 36) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleJustRunCommandArguments.cs
  class AppleJustRunCommandArguments (line 12) | internal class AppleJustRunCommandArguments : XHarnessCommandArguments, ...
    method GetArguments (line 28) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 45) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleJustTestCommandArguments.cs
  class AppleJustTestCommandArguments (line 11) | internal class AppleJustTestCommandArguments : XHarnessCommandArguments,...
    method GetArguments (line 31) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 52) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleMlaunchCommandArguments.cs
  class AppleMlaunchCommandArguments (line 10) | internal class AppleMlaunchCommandArguments : XHarnessCommandArguments, ...
    method GetArguments (line 17) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleResetSimulatorCommandArguments.cs
  class AppleResetSimulatorCommandArguments (line 11) | internal class AppleResetSimulatorCommandArguments : XHarnessCommandArgu...
    method GetArguments (line 20) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 30) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleRunCommandArguments.cs
  class AppleRunCommandArguments (line 11) | internal class AppleRunCommandArguments : XHarnessCommandArguments, IApp...
    method GetArguments (line 29) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 48) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleStateCommandArguments.cs
  class AppleStateCommandArguments (line 9) | internal class AppleStateCommandArguments : XHarnessCommandArguments
    method GetArguments (line 18) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleTestCommandArguments.cs
  class AppleTestCommandArguments (line 10) | internal class AppleTestCommandArguments : XHarnessCommandArguments, IAp...
    method GetArguments (line 31) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleUninstallCommandArguments.cs
  class AppleUninstallCommandArguments (line 11) | internal class AppleUninstallCommandArguments : XHarnessCommandArguments...
    method GetArguments (line 22) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 34) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/BundleIdentifierArgument.cs
  class BundleIdentifierArgument (line 7) | internal class BundleIdentifierArgument : RequiredStringArgument
    method BundleIdentifierArgument (line 9) | public BundleIdentifierArgument() : base("app|a=", "Bundle identifier ...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/CommunicationChannelArgument.cs
  class CommunicationChannelArgument (line 12) | internal class CommunicationChannelArgument : Argument<CommunicationChan...
    method CommunicationChannelArgument (line 14) | public CommunicationChannelArgument()
    method Action (line 19) | public override void Action(string argumentValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/DeviceNameArgument.cs
  class DeviceNameArgument (line 10) | internal class DeviceNameArgument : StringArgument
    method DeviceNameArgument (line 12) | public DeviceNameArgument() : base("device=", "Name or UDID of a simul...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/EnableLldbArgument.cs
  class EnableLldbArgument (line 10) | internal class EnableLldbArgument : SwitchArgument
    method EnableLldbArgument (line 12) | public EnableLldbArgument() : base("enable-lldb", "Allow to debug the ...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/EnvironmentalVariablesArgument.cs
  class EnvironmentalVariablesArgument (line 13) | internal class EnvironmentalVariablesArgument : Argument
    method EnvironmentalVariablesArgument (line 18) | public EnvironmentalVariablesArgument() : base("set-env=", "Environmen...
    method Action (line 22) | public override void Action(string argumentValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ForceInstallationArgument.cs
  class ForceInstallationArgument (line 7) | internal class ForceInstallationArgument : SwitchArgument
    method ForceInstallationArgument (line 9) | public ForceInstallationArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/HideProgressArgument.cs
  class HideProgressArgument (line 7) | internal class HideProgressArgument : SwitchArgument
    method HideProgressArgument (line 9) | public HideProgressArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/IncludeWirelessArgument.cs
  class IncludeWirelessArgument (line 10) | internal class IncludeWirelessArgument : SwitchArgument
    method IncludeWirelessArgument (line 12) | public IncludeWirelessArgument() : base("wireless:|include-wireless-de...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/LaunchTimeoutArgument.cs
  class LaunchTimeoutArgument (line 12) | internal class LaunchTimeoutArgument : TimeSpanArgument
    method LaunchTimeoutArgument (line 14) | public LaunchTimeoutArgument(TimeSpan defaultValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ListInstalledArgument.cs
  class ListInstalledArgument (line 7) | internal class ListInstalledArgument : SwitchArgument
    method ListInstalledArgument (line 9) | public ListInstalledArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/MlaunchArgument.cs
  class MlaunchArgument (line 16) | internal class MlaunchArgument : Argument<string>
    method MlaunchArgument (line 18) | public MlaunchArgument() : base("mlaunch=", "Path to the mlaunch binar...
    method Action (line 22) | public override void Action(string argumentValue) => Value = RootPath(...
    method Validate (line 24) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/NoWaitArgument.cs
  class NoWaitArgument (line 7) | internal class NoWaitArgument : SwitchArgument
    method NoWaitArgument (line 9) | public NoWaitArgument() : base("no-wait|nowait", "Don't wait for the a...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ResetSimulatorArgument.cs
  class ResetSimulatorArgument (line 10) | internal class ResetSimulatorArgument : SwitchArgument
    method ResetSimulatorArgument (line 12) | public ResetSimulatorArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ShowDevicesUUIDArgument.cs
  class ShowDevicesUUIDArgument (line 7) | internal class ShowDevicesUUIDArgument : SwitchArgument
    method ShowDevicesUUIDArgument (line 9) | public ShowDevicesUUIDArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ShowSimulatorsUUIDArgument.cs
  class ShowSimulatorsUUIDArgument (line 7) | internal class ShowSimulatorsUUIDArgument : SwitchArgument
    method ShowSimulatorsUUIDArgument (line 9) | public ShowSimulatorsUUIDArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/SignalAppEndArgument.cs
  class SignalAppEndArgument (line 10) | internal class SignalAppEndArgument : SwitchArgument
    method SignalAppEndArgument (line 12) | public SignalAppEndArgument() : base("signal-app-end", "Tells the test...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/TargetArgument.cs
  class TargetArgument (line 14) | internal class TargetArgument : Argument<TestTargetOs>
    method TargetArgument (line 16) | public TargetArgument() : base("target=|targets=|t=", "Test target (de...
    method Action (line 20) | public override void Action(string argumentValue)
    method Validate (line 36) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/XcodeArgument.cs
  class XcodeArgument (line 13) | internal class XcodeArgument : PathArgument
    method XcodeArgument (line 15) | public XcodeArgument() : base("xcode=", "Path where Xcode is installed...
    method Validate (line 19) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/XmlResultJargonArgument.cs
  class XmlResultJargonArgument (line 12) | internal class XmlResultJargonArgument : Argument<XmlResultJargon>
    method XmlResultJargonArgument (line 14) | public XmlResultJargonArgument()
    method Action (line 19) | public override void Action(string argumentValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/IAppleAppRunArguments.cs
  type IAppleAppRunArguments (line 7) | internal interface IAppleAppRunArguments : IAppleArguments

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/IAppleArguments.cs
  type IAppleArguments (line 7) | internal interface IAppleArguments : IXHarnessCommandArguments

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/FindCommandArguments.cs
  class FindCommandArguments (line 10) | internal class FindCommandArguments : SimulatorsCommandArguments
    method GetAdditionalArguments (line 12) | protected override IEnumerable<Argument> GetAdditionalArguments() => E...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/InstallCommandArguments.cs
  class InstallCommandArguments (line 9) | internal class InstallCommandArguments : SimulatorsCommandArguments
    method GetAdditionalArguments (line 15) | protected override IEnumerable<Argument> GetAdditionalArguments() => n...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/ListCommandArguments.cs
  class ListCommandArguments (line 9) | internal class ListCommandArguments : SimulatorsCommandArguments
    method GetAdditionalArguments (line 13) | protected override IEnumerable<Argument> GetAdditionalArguments() => n...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/SimulatorsCommandArguments.cs
  class SimulatorsCommandArguments (line 10) | internal abstract class SimulatorsCommandArguments : XHarnessCommandArgu...
    method GetArguments (line 14) | protected sealed override IEnumerable<Argument> GetArguments() =>
    method GetAdditionalArguments (line 20) | protected abstract IEnumerable<Argument> GetAdditionalArguments();

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Argument.cs
  class Argument (line 13) | public abstract class Argument
    method Argument (line 19) | protected Argument(string prototype, string description)
    method Action (line 28) | public abstract void Action(string argumentValue);
    method Validate (line 34) | public virtual void Validate()
    method RootPath (line 38) | protected string RootPath(string path)
    method GetAllowedValues (line 55) | protected static string GetAllowedValues<TEnum>(Func<TEnum, string>? d...
    method ParseArgument (line 79) | protected static TEnum ParseArgument<TEnum>(string argumentName, strin...
    method Argument (line 128) | protected Argument(string prototype, string description, T defaultValue)
    method ToString (line 136) | public override string ToString() => Value?.ToString() ?? base.ToStrin...
  class Argument (line 124) | public abstract class Argument<T> : Argument
    method Argument (line 19) | protected Argument(string prototype, string description)
    method Action (line 28) | public abstract void Action(string argumentValue);
    method Validate (line 34) | public virtual void Validate()
    method RootPath (line 38) | protected string RootPath(string path)
    method GetAllowedValues (line 55) | protected static string GetAllowedValues<TEnum>(Func<TEnum, string>? d...
    method ParseArgument (line 79) | protected static TEnum ParseArgument<TEnum>(string argumentName, strin...
    method Argument (line 128) | protected Argument(string prototype, string description, T defaultValue)
    method ToString (line 136) | public override string ToString() => Value?.ToString() ?? base.ToStrin...
  class IntArgument (line 139) | public abstract class IntArgument : Argument<int>
    method IntArgument (line 141) | public IntArgument(string prototype, string description, int defaultVa...
    method Action (line 146) | public override void Action(string argumentValue)
  class OptionalIntArgument (line 158) | public abstract class OptionalIntArgument : Argument<int?>
    method OptionalIntArgument (line 160) | public OptionalIntArgument(string prototype, string description)
    method Action (line 165) | public override void Action(string argumentValue)
  class StringArgument (line 177) | public abstract class StringArgument : Argument<string?>
    method StringArgument (line 179) | public StringArgument(string prototype, string description)
    method Action (line 184) | public override void Action(string argumentValue) => Value = argumentV...
  class RequiredStringArgument (line 187) | public abstract class RequiredStringArgument : Argument<string>
    method RequiredStringArgument (line 189) | public RequiredStringArgument(string prototype, string description, st...
    method Action (line 194) | public override void Action(string argumentValue) => Value = argumentV...
    method Validate (line 196) | public override void Validate()
  class TimeSpanArgument (line 205) | public abstract class TimeSpanArgument : Argument<TimeSpan>
    method TimeSpanArgument (line 207) | protected TimeSpanArgument(string prototype, string description, TimeS...
    method Action (line 212) | public override void Action(string argumentValue)
  class PathArgument (line 230) | public abstract class PathArgument : StringArgument
    method PathArgument (line 234) | protected PathArgument(string prototype, string description, bool isRe...
    method Action (line 239) | public override void Action(string argumentValue) => Value = RootPath(...
    method Validate (line 241) | public override void Validate()
  class RequiredPathArgument (line 250) | public abstract class RequiredPathArgument : RequiredStringArgument
    method RequiredPathArgument (line 252) | protected RequiredPathArgument(string prototype, string description) :...
    method Action (line 256) | public override void Action(string argumentValue) => Value = RootPath(...
  class SwitchArgument (line 259) | public abstract class SwitchArgument : Argument<bool>
    method SwitchArgument (line 263) | public SwitchArgument(string prototype, string description, bool defau...
    method Action (line 269) | public override void Action(string argumentValue)
    method ToString (line 284) | public override string ToString() => Value ? "true" : "false";
  class EnumPageLoadStrategyArgument (line 287) | public abstract class EnumPageLoadStrategyArgument : Argument<PageLoadSt...
    method EnumPageLoadStrategyArgument (line 291) | public EnumPageLoadStrategyArgument(string prototype, string descripti...
    method Action (line 297) | public override void Action(string argumentValue)
  class RepeatableArgument (line 313) | public abstract class RepeatableArgument : Argument<IEnumerable<string>>
    method RepeatableArgument (line 317) | protected RepeatableArgument(string prototype, string description) : b...
    method Action (line 323) | public override void Action(string argumentValue) => _values.Add(argum...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/AppPathArgument.cs
  class AppPathArgument (line 10) | internal class AppPathArgument : RequiredPathArgument
    method AppPathArgument (line 12) | public AppPathArgument() : base("app|a=", "Path to an already-packaged...
  class OptionalAppPathArgument (line 20) | internal class OptionalAppPathArgument : PathArgument
    method OptionalAppPathArgument (line 22) | public OptionalAppPathArgument() : base("app|a=", "Path to an already-...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/ClassMethodFilters.cs
  class ClassMethodFilters (line 10) | internal class ClassMethodFilters : RepeatableArgument
    method ClassMethodFilters (line 12) | public ClassMethodFilters()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/EnableCoverageArgument.cs
  class EnableCoverageArgument (line 10) | internal class EnableCoverageArgument : SwitchArgument
    method EnableCoverageArgument (line 12) | public EnableCoverageArgument() : base("enable-coverage", "Enable code...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/ExpectedExitCodeArgument.cs
  class ExpectedExitCodeArgument (line 10) | internal class ExpectedExitCodeArgument : IntArgument
    method ExpectedExitCodeArgument (line 12) | public ExpectedExitCodeArgument(int defaultValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/OutputDirectoryArgument.cs
  class OutputDirectoryArgument (line 13) | internal class OutputDirectoryArgument : RequiredPathArgument
    method OutputDirectoryArgument (line 15) | public OutputDirectoryArgument() : base("output-directory=|o=", "Direc...
    method Validate (line 19) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/SingleMethodFilters.cs
  class SingleMethodFilters (line 10) | internal class SingleMethodFilters : RepeatableArgument
    method SingleMethodFilters (line 12) | public SingleMethodFilters()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/TimeoutArgument.cs
  class TimeoutArgument (line 12) | internal class TimeoutArgument : TimeSpanArgument
    method TimeoutArgument (line 14) | public TimeoutArgument(TimeSpan defaultTimeout)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/TypeFromAssemblyArgument.cs
  class TypeFromAssemblyArgument (line 13) | internal class TypeFromAssemblyArgument<T> : Argument<IList<(string path...
    method TypeFromAssemblyArgument (line 18) | public TypeFromAssemblyArgument(string prototype, string description, ...
    method GetLoadedTypes (line 24) | public IEnumerable<Type> GetLoadedTypes()
    method Action (line 37) | public override void Action(string argumentValue)
    method Validate (line 46) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerHttpEnvironmentVariables.cs
  class WebServerHttpEnvironmentVariables (line 10) | internal class WebServerHttpEnvironmentVariables : Argument<IEnumerable<...
    method WebServerHttpEnvironmentVariables (line 12) | public WebServerHttpEnvironmentVariables()
    method Action (line 20) | public override void Action(string argumentValue) => Value = argumentV...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerHttpsEnvironmentVariables.cs
  class WebServerHttpsEnvironmentVariables (line 10) | internal class WebServerHttpsEnvironmentVariables : Argument<IEnumerable...
    method WebServerHttpsEnvironmentVariables (line 12) | public WebServerHttpsEnvironmentVariables()
    method Action (line 20) | public override void Action(string argumentValue) => Value = argumentV...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerMiddlewareArgument.cs
  class WebServerMiddlewareArgument (line 9) | internal class WebServerMiddlewareArgument : TypeFromAssemblyArgument<Type>
    method WebServerMiddlewareArgument (line 11) | public WebServerMiddlewareArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUploadResults.cs
  class WebServerUploadResults (line 7) | internal class WebServerUploadResults : SwitchArgument
    method WebServerUploadResults (line 9) | public WebServerUploadResults()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseCorsArguments.cs
  class WebServerUseCorsArguments (line 7) | internal class WebServerUseCorsArguments : SwitchArgument
    method WebServerUseCorsArguments (line 9) | public WebServerUseCorsArguments()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseCrossOriginPolicyArguments.cs
  class WebServerUseCrossOriginPolicyArguments (line 7) | internal class WebServerUseCrossOriginPolicyArguments : SwitchArgument
    method WebServerUseCrossOriginPolicyArguments (line 9) | public WebServerUseCrossOriginPolicyArguments()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseDefaultFiles.cs
  class WebServerUseDefaultFilesArguments (line 7) | internal class WebServerUseDefaultFilesArguments : SwitchArgument
    method WebServerUseDefaultFilesArguments (line 9) | public WebServerUseDefaultFilesArguments()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseHttpsArguments.cs
  class WebServerUseHttpsArguments (line 7) | internal class WebServerUseHttpsArguments : SwitchArgument
    method WebServerUseHttpsArguments (line 9) | public WebServerUseHttpsArguments()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/DiagnosticsArgument.cs
  class DiagnosticsArgument (line 7) | public class DiagnosticsArgument : StringArgument
    method DiagnosticsArgument (line 9) | public DiagnosticsArgument() : base("diagnostics=", "Path to a file wh...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/HelpArgument.cs
  class HelpArgument (line 7) | public class HelpArgument : SwitchArgument
    method HelpArgument (line 9) | public HelpArgument() : base("help|h", string.Empty, false)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/UseJsonArgument.cs
  class UseJsonArgument (line 7) | internal class UseJsonArgument : SwitchArgument
    method UseJsonArgument (line 9) | public UseJsonArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/VerbosityArgument.cs
  class VerbosityArgument (line 9) | public class VerbosityArgument : Argument
    method VerbosityArgument (line 13) | public VerbosityArgument(LogLevel level)
    method Action (line 19) | public override void Action(string argumentValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/Arguments/WasmEngineArgument.cs
  class WasmEngineArgument (line 9) | internal class WasmEngineArgument : Argument<WasmEngine?>
    method WasmEngineArgument (line 11) | public WasmEngineArgument()
    method Action (line 16) | public override void Action(string argumentValue) =>
    method Validate (line 20) | public override void Validate() => Value ??= WasmEngine.WasmTime;
  type WasmEngine (line 26) | internal enum WasmEngine

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/Arguments/WasmEngineArguments.cs
  class WasmEngineArguments (line 7) | internal class WasmEngineArguments : RepeatableArgument
    method WasmEngineArguments (line 9) | public WasmEngineArguments()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/Arguments/WasmEngineLocationArgument.cs
  class WasmEngineLocationArgument (line 7) | internal class WasmEngineLocationArgument : StringArgument
    method WasmEngineLocationArgument (line 9) | public WasmEngineLocationArgument() : base("wasm-engine-path=", "Path ...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/WasiTestCommandArguments.cs
  class WasiTestCommandArguments (line 11) | internal class WasiTestCommandArguments : XHarnessCommandArguments, IWeb...
    method GetArguments (line 30) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BackgroundThrottlingArgument.cs
  class BackgroundThrottlingArgument (line 7) | internal class BackgroundThrottlingArgument : SwitchArgument
    method BackgroundThrottlingArgument (line 9) | public BackgroundThrottlingArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BrowserArgument.cs
  class BrowserArgument (line 10) | internal class BrowserArgument : Argument<Browser>
    method BrowserArgument (line 12) | public BrowserArgument()
    method Action (line 17) | public override void Action(string argumentValue) =>
    method Validate (line 20) | public override void Validate()
  type Browser (line 34) | internal enum Browser

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BrowserArguments.cs
  class BrowserArguments (line 7) | internal class BrowserArguments : RepeatableArgument
    method BrowserArguments (line 9) | public BrowserArguments()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BrowserLocationArgument.cs
  class BrowserLocationArgument (line 7) | internal class BrowserLocationArgument : StringArgument
    method BrowserLocationArgument (line 9) | public BrowserLocationArgument() : base("browser-path=", "Path to the ...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/DebuggerPortArgument.cs
  class DebuggerPortArgument (line 9) | internal class DebuggerPortArgument : Argument<int?>
    method DebuggerPortArgument (line 11) | public DebuggerPortArgument()
    method Action (line 15) | public override void Action(string argumentValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/ErrorPatternsFileArgument.cs
  class ErrorPatternsFileArgument (line 10) | internal class ErrorPatternsFileArgument : StringArgument
    method ErrorPatternsFileArgument (line 12) | public ErrorPatternsFileArgument()
    method Validate (line 17) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/HTMLFileArgument.cs
  class HTMLFileArgument (line 10) | internal class HTMLFileArgument : RequiredStringArgument
    method HTMLFileArgument (line 12) | public HTMLFileArgument(string defaultValue)
    method Validate (line 17) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptEngineArgument.cs
  class JavaScriptEngineArgument (line 9) | internal class JavaScriptEngineArgument : Argument<JavaScriptEngine?>
    method JavaScriptEngineArgument (line 11) | public JavaScriptEngineArgument()
    method Action (line 16) | public override void Action(string argumentValue) =>
    method Validate (line 19) | public override void Validate()
  type JavaScriptEngine (line 31) | internal enum JavaScriptEngine

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptEngineArguments.cs
  class JavaScriptEngineArguments (line 7) | internal class JavaScriptEngineArguments : RepeatableArgument
    method JavaScriptEngineArguments (line 9) | public JavaScriptEngineArguments()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptEngineLocationArgument.cs
  class JavaScriptEngineLocationArgument (line 7) | internal class JavaScriptEngineLocationArgument : StringArgument
    method JavaScriptEngineLocationArgument (line 9) | public JavaScriptEngineLocationArgument() : base("js-engine-path=", "P...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptFileArgument.cs
  class JavaScriptFileArgument (line 7) | internal class JavaScriptFileArgument : RequiredStringArgument
    method JavaScriptFileArgument (line 9) | public JavaScriptFileArgument(string defaultValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/LocaleArgument.cs
  class LocaleArgument (line 8) | internal class LocaleArgument : RequiredStringArgument
    method LocaleArgument (line 10) | public LocaleArgument(string defaultValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/NoHeadlessArgument.cs
  class NoHeadlessArgument (line 7) | internal class NoHeadlessArgument : SwitchArgument
    method NoHeadlessArgument (line 9) | public NoHeadlessArgument()
    method Set (line 14) | public void Set(bool value) => Value = value;

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/NoIncognitoArgument.cs
  class NoIncognitoArgument (line 7) | internal class NoIncognitoArgument : SwitchArgument
    method NoIncognitoArgument (line 9) | public NoIncognitoArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/NoQuitArgument.cs
  class NoQuitArgument (line 7) | internal class NoQuitArgument : SwitchArgument
    method NoQuitArgument (line 9) | public NoQuitArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/PageLoadStrategyArgument.cs
  class PageLoadStrategyArgument (line 10) | internal class PageLoadStrategyArgument : EnumPageLoadStrategyArgument
    method PageLoadStrategyArgument (line 18) | public PageLoadStrategyArgument(PageLoadStrategy defaultValue)

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/SymbolMapFileArgument.cs
  class SymbolMapFileArgument (line 7) | internal class SymbolMapFileArgument : StringArgument
    method SymbolMapFileArgument (line 9) | public SymbolMapFileArgument() : base("symbol-map=|s=", "Path to wasm ...

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/SymbolicatePatternsFileArgument.cs
  class SymbolicatePatternsFileArgument (line 10) | internal class SymbolicatePatternsFileArgument : StringArgument
    method SymbolicatePatternsFileArgument (line 16) | public SymbolicatePatternsFileArgument()
    method Validate (line 21) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/SymbolicatorArgument.cs
  class SymbolicatorArgument (line 9) | internal class SymbolicatorArgument : TypeFromAssemblyArgument<WasmSymbo...
    method SymbolicatorArgument (line 11) | public SymbolicatorArgument()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/IWebServerArguments.cs
  type IWebServerArguments (line 7) | internal interface IWebServerArguments

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/WasmTestBrowserCommandArguments.cs
  class WasmTestBrowserCommandArguments (line 12) | internal class WasmTestBrowserCommandArguments : XHarnessCommandArgument...
    method GetArguments (line 45) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
    method Validate (line 76) | public override void Validate()

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/WasmTestCommandArguments.cs
  class WasmTestCommandArguments (line 10) | internal class WasmTestCommandArguments : XHarnessCommandArguments, IWeb...
    method GetArguments (line 37) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/WebServerCommandArguments.cs
  class WebServerCommandArguments (line 10) | internal class WebServerCommandArguments : XHarnessCommandArguments, IWe...
    method GetArguments (line 28) | protected override IEnumerable<Argument> GetArguments() => new Argument[]

FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/XHarnessCommandArguments.cs
  type IXHarnessCommandArguments (line 11) | public interface IXHarnessCommandArguments
    method GetCommandArguments (line 16) | IEnumerable<Argument> GetCommandArguments();
    method Validate (line 17) | void Validate();
  class XHarnessCommandArguments (line 20) | public abstract class XHarnessCommandArguments : IXHarnessCommandArguments
    method GetCommandArguments (line 26) | public IEnumerable<Argument> GetCommandArguments() => GetArguments().C...
    method Validate (line 33) | public virtual void Validate()
    method GetArguments (line 44) | protected abstract IEnumerable<Argument> GetArguments();

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidAdbCommand.cs
  class AndroidAdbCommand (line 17) | internal class AndroidAdbCommand : XHarnessCommand<AndroidAdbCommandArgu...
    method AndroidAdbCommand (line 25) | public AndroidAdbCommand() : base(TargetPlatform.Android, "adb", false...
    method InvokeInternal (line 29) | protected override Task<ExitCode> InvokeInternal(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidCommand.cs
  class AndroidCommand (line 17) | internal abstract class AndroidCommand<TArguments> : XHarnessCommand<TAr...
    method AndroidCommand (line 22) | protected AndroidCommand(string name, bool allowsExtraArgs, string? he...
    method InvokeInternal (line 28) | protected sealed override Task<ExitCode> InvokeInternal(ILogger logger)
    method InvokeCommand (line 52) | protected abstract ExitCode InvokeCommand(ILogger logger);

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidCommandSet.cs
  class AndroidCommandSet (line 14) | public class AndroidCommandSet : CommandSet
    method AndroidCommandSet (line 16) | public AndroidCommandSet() : base("android")

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidDeviceCommand.cs
  class AndroidDeviceCommand (line 18) | internal class AndroidDeviceCommand : AndroidCommand<AndroidDeviceComman...
    method AndroidDeviceCommand (line 34) | public AndroidDeviceCommand() : base("device", false, CommandHelp)
    method InvokeCommand (line 38) | protected override ExitCode InvokeCommand(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidInstallCommand.cs
  class AndroidInstallCommand (line 14) | internal class AndroidInstallCommand : AndroidCommand<AndroidInstallComm...
    method AndroidInstallCommand (line 27) | public AndroidInstallCommand() : base("install", false, CommandHelp)
    method InvokeCommand (line 31) | protected override ExitCode InvokeCommand(ILogger logger)
    method InvokeHelper (line 53) | public static ExitCode InvokeHelper(

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidRunCommand.cs
  class AndroidRunCommand (line 13) | internal class AndroidRunCommand : AndroidCommand<AndroidRunCommandArgum...
    method AndroidRunCommand (line 31) | public AndroidRunCommand() : base("run", false, CommandHelp)
    method InvokeCommand (line 35) | protected override ExitCode InvokeCommand(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidStateCommand.cs
  class AndroidStateCommand (line 21) | internal class AndroidStateCommand : GetStateCommand<AndroidStateCommand...
    method AndroidStateCommand (line 27) | public AndroidStateCommand() : base(TargetPlatform.Android, new Servic...
    method InvokeInternal (line 31) | protected override Task<ExitCode> InvokeInternal(ILogger logger)
    method GetStateData (line 94) | private static StateData GetStateData(ILogger logger)
    type StateData (line 113) | private record StateData(

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidTestCommand.cs
  class AndroidTestCommand (line 14) | internal class AndroidTestCommand : AndroidCommand<AndroidTestCommandArg...
    method AndroidTestCommand (line 34) | public AndroidTestCommand() : base("test", false, CommandHelp)
    method InvokeCommand (line 38) | protected override ExitCode InvokeCommand(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidUninstallCommand.cs
  class AndroidUninstallCommand (line 13) | internal class AndroidUninstallCommand : AndroidCommand<AndroidUninstall...
    method AndroidUninstallCommand (line 26) | public AndroidUninstallCommand() : base("uninstall", false, CommandHelp)
    method InvokeCommand (line 30) | protected override ExitCode InvokeCommand(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/IDiagnosticDataExtensions.cs
  class IDiagnosticDataExtensions (line 10) | internal static class IDiagnosticDataExtensions
    method CaptureDeviceInfo (line 12) | public static void CaptureDeviceInfo(this IDiagnosticsData data, Andro...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessCommandSet.cs
  class AndroidHeadlessCommandSet (line 15) | public class AndroidHeadlessCommandSet : CommandSet
    method AndroidHeadlessCommandSet (line 17) | public AndroidHeadlessCommandSet() : base("android-headless")

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessInstallCommand.cs
  class AndroidHeadlessInstallCommand (line 16) | internal class AndroidHeadlessInstallCommand : AndroidCommand<AndroidHea...
    method AndroidHeadlessInstallCommand (line 29) | public AndroidHeadlessInstallCommand() : base("install", false, Comman...
    method InvokeCommand (line 33) | protected override ExitCode InvokeCommand(ILogger logger)
    method InvokeHelper (line 73) | public static ExitCode InvokeHelper(

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessRunCommand.cs
  class AndroidHeadlessRunCommand (line 17) | internal class AndroidHeadlessRunCommand : AndroidCommand<AndroidHeadles...
    method AndroidHeadlessRunCommand (line 30) | public AndroidHeadlessRunCommand() : base("run", false, CommandHelp)
    method InvokeCommand (line 34) | protected override ExitCode InvokeCommand(ILogger logger)
    method InvokeHelper (line 73) | public static ExitCode InvokeHelper(

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessTestCommand.cs
  class AndroidHeadlessTestCommand (line 16) | internal class AndroidHeadlessTestCommand : AndroidCommand<AndroidHeadle...
    method AndroidHeadlessTestCommand (line 29) | public AndroidHeadlessTestCommand() : base("test", false, CommandHelp)
    method InvokeCommand (line 33) | protected override ExitCode InvokeCommand(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessUninstallCommand.cs
  class AndroidHeadlessUninstallCommand (line 15) | internal class AndroidHeadlessUninstallCommand : AndroidCommand<AndroidH...
    method AndroidHeadlessUninstallCommand (line 28) | public AndroidHeadlessUninstallCommand() : base("uninstall", false, Co...
    method InvokeCommand (line 32) | protected override ExitCode InvokeCommand(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleAppCommand.cs
  class AppleAppCommand (line 24) | internal abstract class AppleAppCommand<TArguments> : AppleCommand<TArgu...
    method AppleAppCommand (line 28) | protected AppleAppCommand(string name, bool allowsExtraArgs, IServiceC...
    method Invoke (line 33) | protected sealed override async Task<ExitCode> Invoke(Extensions.Loggi...
    method InvokeInternal (line 71) | protected abstract Task<ExitCode> InvokeInternal(ServiceProvider servi...
    class ConsoleLogger (line 73) | [SuppressMessage("Usage", "CA2254:The logging message template should ...
      method ConsoleLogger (line 78) | public ConsoleLogger(Extensions.Logging.ILogger logger)
      method LogDebug (line 83) | public void LogDebug(string message) => _logger.LogDebug(message);
      method LogInformation (line 84) | public void LogInformation(string message) => _logger.LogInformation...
      method LogWarning (line 85) | public void LogWarning(string message) => _logger.LogWarning(message);
      method LogError (line 86) | public void LogError(string message) => _logger.LogError(message);
      method LogCritical (line 87) | public void LogCritical(string message) => _logger.LogCritical(messa...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleCommand.cs
  class AppleCommand (line 17) | internal abstract class AppleCommand<TArguments> : XHarnessCommand<TArgu...
    method AppleCommand (line 19) | protected AppleCommand(string name, bool allowsExtraArgs, IServiceColl...
    method InvokeInternal (line 24) | protected sealed override Task<ExitCode> InvokeInternal(ILogger logger)
    method Invoke (line 34) | protected abstract Task<ExitCode> Invoke(ILogger logger);

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleCommandSet.cs
  class AppleCommandSet (line 18) | internal class AppleCommandSet : CommandSet
    method AppleCommandSet (line 20) | public AppleCommandSet() : base("apple")
    method GetAppleDependencies (line 43) | public static IServiceCollection GetAppleDependencies()

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleDeviceCommand.cs
  class AppleDeviceCommand (line 20) | internal class AppleDeviceCommand : AppleCommand<AppleDeviceCommandArgum...
    method AppleDeviceCommand (line 33) | public AppleDeviceCommand(IServiceCollection services) : base("device"...
    method Invoke (line 37) | protected override async Task<ExitCode> Invoke(Extensions.Logging.ILog...
    method ParseTarget (line 76) | private TestTargetOs ParseTarget()

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleInstallCommand.cs
  class AppleInstallCommand (line 14) | internal class AppleInstallCommand : AppleAppCommand<AppleInstallCommand...
    method AppleInstallCommand (line 23) | public AppleInstallCommand(IServiceCollection services) : base("instal...
    method InvokeInternal (line 27) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleJustRunCommand.cs
  class AppleJustRunCommand (line 14) | internal class AppleJustRunCommand : AppleAppCommand<AppleJustRunCommand...
    method AppleJustRunCommand (line 23) | public AppleJustRunCommand(IServiceCollection services) : base("just-r...
    method InvokeInternal (line 27) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleJustTestCommand.cs
  class AppleJustTestCommand (line 15) | internal class AppleJustTestCommand : AppleAppCommand<AppleJustTestComma...
    method AppleJustTestCommand (line 23) | public AppleJustTestCommand(IServiceCollection services) : base("just-...
    method InvokeInternal (line 27) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleMlaunchCommand.cs
  class AppleMlaunchCommand (line 18) | internal class AppleMlaunchCommand : AppleCommand<AppleMlaunchCommandArg...
    method AppleMlaunchCommand (line 26) | public AppleMlaunchCommand(IServiceCollection services) : base("mlaunc...
    method Invoke (line 30) | protected override async Task<ExitCode> Invoke(ILogger logger)
    class SimpleMlaunchArgument (line 81) | private class SimpleMlaunchArgument : iOS.Shared.Execution.MlaunchArgu...
      method SimpleMlaunchArgument (line 85) | public SimpleMlaunchArgument(string argument)
      method AsCommandLineArgument (line 90) | public override string AsCommandLineArgument() => Escape(_argument);

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleResetSimulatorCommand.cs
  class AppleResetSimulatorCommand (line 14) | internal class AppleResetSimulatorCommand : AppleAppCommand<AppleResetSi...
    method AppleResetSimulatorCommand (line 22) | public AppleResetSimulatorCommand(IServiceCollection services) : base(...
    method InvokeInternal (line 26) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleRunCommand.cs
  class AppleRunCommand (line 17) | internal class AppleRunCommand : AppleAppCommand<AppleRunCommandArguments>
    method AppleRunCommand (line 26) | public AppleRunCommand(IServiceCollection services) : base("run", fals...
    method InvokeInternal (line 30) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleStateCommand.cs
  class AppleStateCommand (line 23) | internal class AppleStateCommand : GetStateCommand<AppleStateCommandArgu...
    class DeviceInfo (line 27) | private class DeviceInfo
      method DeviceInfo (line 35) | public DeviceInfo(string name, string uDID, string type, string oSVe...
    class SystemInfo (line 45) | private class SystemInfo
      method SystemInfo (line 58) | public SystemInfo(string machineName, string oSName, string oSVersio...
    method AppleStateCommand (line 73) | public AppleStateCommand() : base(TargetPlatform.Apple, new ServiceCol...
    method AsJson (line 79) | private static async Task AsJson(SystemInfo info)
    method AsText (line 89) | private void AsText(SystemInfo info)
    method InvokeInternal (line 144) | protected override async Task<ExitCode> InvokeInternal(Extensions.Logg...
    class MlaunchVersionArgument (line 235) | private class MlaunchVersionArgument : OptionArgument
      method MlaunchVersionArgument (line 237) | public MlaunchVersionArgument() : base("version")

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleTestCommand.cs
  class AppleTestCommand (line 19) | internal class AppleTestCommand : AppleAppCommand<AppleTestCommandArgume...
    method AppleTestCommand (line 25) | public AppleTestCommand(IServiceCollection services) : base("test", fa...
    method InvokeInternal (line 29) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleUninstallCommand.cs
  class AppleUninstallCommand (line 14) | internal class AppleUninstallCommand : AppleAppCommand<AppleUninstallCom...
    method AppleUninstallCommand (line 22) | public AppleUninstallCommand(IServiceCollection services) : base("unin...
    method InvokeInternal (line 26) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/FindCommand.cs
  class FindCommand (line 14) | internal class FindCommand : SimulatorsCommand
    method FindCommand (line 25) | public FindCommand() : base(CommandName, true, CommandHelp)
    method InvokeInternal (line 29) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/InstallCommand.cs
  class InstallCommand (line 19) | internal class InstallCommand : SimulatorsCommand
    method InstallCommand (line 31) | public InstallCommand() : base(CommandName, true, CommandHelp)
    method InvokeInternal (line 35) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
    method Install (line 122) | private async Task<bool> Install(Simulator simulator)
    method CanSimulatorBeInstalledUsingXcodeCLI (line 195) | private static bool CanSimulatorBeInstalledUsingXcodeCLI(Simulator sim...
    method CanXcodeDownloadSimulatorsUsingCLI (line 209) | private static bool CanXcodeDownloadSimulatorsUsingCLI(Version xcodeVe...
    method DownloadSimulator (line 215) | private async Task DownloadSimulator(Simulator simulator, string downl...
    method InstallSimulator (line 304) | private async Task<bool> InstallSimulator(Simulator simulator, string ...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/ListCommand.cs
  class ListCommand (line 14) | internal class ListCommand : SimulatorsCommand
    method ListCommand (line 25) | public ListCommand() : base(CommandName, false, CommandHelp)
    method InvokeInternal (line 29) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/Simulator.cs
  class Simulator (line 9) | internal class Simulator
    method Simulator (line 21) | public Simulator(string name, string platform, string identifier, stri...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/SimulatorsCommand.cs
  class SimulatorsCommand (line 27) | internal abstract class SimulatorsCommand : XHarnessCommand<SimulatorsCo...
    method SimulatorsCommand (line 46) | protected SimulatorsCommand(string name, bool allowsExtraArgs, string ...
    method ExecuteCommand (line 66) | protected async Task<(bool Succeeded, string Stdout)> ExecuteCommand(
    method GetAvailableSimulators (line 91) | protected async Task<IEnumerable<Simulator>> GetAvailableSimulators()
    method ReplaceStringUsingKey (line 172) | [return: NotNullIfNotNull("value")]
    method IsInstalled (line 186) | protected async Task<Version?> IsInstalled(Simulator simulator)
    method ParseSimulatorIds (line 291) | protected IEnumerable<string> ParseSimulatorIds()
    method GetSimulatorIndexXml (line 343) | private async Task<string?> GetSimulatorIndexXml()
    method DownloadFile (line 392) | private async Task<bool> DownloadFile(string url, string destinationPath)
    method GetXcodeVersion (line 421) | protected async Task<Version> GetXcodeVersion()
    method GetXcodeUuid (line 448) | private async Task<string> GetXcodeUuid()
    class FailedToGetIndexException (line 469) | [Serializable]
      method FailedToGetIndexException (line 472) | public FailedToGetIndexException() : this("Failed to download the li...
      method FailedToGetIndexException (line 476) | public FailedToGetIndexException(string? message) : base(message)
      method FailedToGetIndexException (line 480) | public FailedToGetIndexException(string? message, Exception? innerEx...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/SimulatorsCommandSet.cs
  class SimulatorsCommandSet (line 13) | public class SimulatorsCommandSet : CommandSet
    method SimulatorsCommandSet (line 15) | public SimulatorsCommandSet() : base("simulators")

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/GetStateCommand.cs
  class GetStateCommand (line 11) | internal abstract class GetStateCommand<TArguments> : XHarnessCommand<TA...
    method GetStateCommand (line 16) | public GetStateCommand(TargetPlatform targetPlatform, ServiceCollectio...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASI/Engine/WasiTestCommand.cs
  class WasiTestCommand (line 24) | internal class WasiTestCommand : XHarnessCommand<WasiTestCommandArguments>
    method WasiTestCommand (line 32) | public WasiTestCommand() : base(TargetPlatform.WASI, "test", true, new...
    method InvokeInternal (line 36) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASI/WasiCommandSet.cs
  class WasiCommandSet (line 12) | public class WasiCommandSet : CommandSet
    method WasiCommandSet (line 14) | public WasiCommandSet() : base("wasi")

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmBrowserTestRunner.cs
  class WasmBrowserTestRunner (line 26) | internal class WasmBrowserTestRunner
    method WasmBrowserTestRunner (line 37) | public WasmBrowserTestRunner(WasmTestBrowserCommandArguments arguments...
    method RunTestsWithWebDriver (line 46) | public async Task<ExitCode> RunTestsWithWebDriver(DriverService driver...
    method RunConsoleMessagesPump (line 172) | private async Task RunConsoleMessagesPump(WebSocket socket, Cancellati...
    method BuildUrl (line 219) | private string BuildUrl(ServerURLs serverURLs)
    method VerbosityToString (line 267) | private string VerbosityToString() => _arguments.Verbosity.Value switch

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmTestBrowserCommand.cs
  class WasmTestBrowserCommand (line 26) | internal class WasmTestBrowserCommand : XHarnessCommand<WasmTestBrowserC...
    method WasmTestBrowserCommand (line 35) | public WasmTestBrowserCommand()
    method InvokeInternal (line 40) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
    method GetSafariDriver (line 155) | private (DriverService, IWebDriver) GetSafariDriver(ILogger logger)
    method GetFirefoxDriver (line 167) | private (DriverService, IWebDriver) GetFirefoxDriver(ILogger logger)
    method GetChromeDriver (line 227) | private (DriverService, IWebDriver) GetChromeDriver(string sessionLang...
    method GetEdgeDriver (line 234) | private (DriverService, IWebDriver) GetEdgeDriver(string sessionLangua...
    method GetChromiumDriver (line 244) | private (DriverService, IWebDriver) GetChromiumDriver<TDriverOptions, ...
    method CreateWebDriver (line 392) | private static (DriverService, IWebDriver) CreateWebDriver<TDriverServ...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/ErrorPatternScanner.cs
  class ErrorPatternScanner (line 10) | public class ErrorPatternScanner
    method ErrorPatternScanner (line 17) | public ErrorPatternScanner(string patternsFile, ILogger logger)
    method IsError (line 66) | public bool IsError(string line, out string? matchedPattern)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/JS/WasmTestCommand.cs
  class WasmTestCommand (line 25) | internal class WasmTestCommand : XHarnessCommand<WasmTestCommandArguments>
    method WasmTestCommand (line 33) | public WasmTestCommand() : base(TargetPlatform.WASM, "test", true, new...
    method InvokeInternal (line 37) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WasmCommandSet.cs
  class WasmCommandSet (line 12) | public class WasmCommandSet : CommandSet
    method WasmCommandSet (line 14) | public WasmCommandSet() : base("wasm")

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WasmLogMessage.cs
  class WasmLogMessage (line 3) | class WasmLogMessage

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WasmTestMessagesProcessor.cs
  class WasmTestMessagesProcessor (line 19) | public class WasmTestMessagesProcessor
    method WasmTestMessagesProcessor (line 43) | public WasmTestMessagesProcessor(string xmlResultsFilePath, string std...
    method RunAsync (line 66) | public async Task RunAsync(CancellationToken token)
    method Invoke (line 87) | public void Invoke(string message, bool isError = false)
    method InvokeAsync (line 97) | public Task InvokeAsync(string message, CancellationToken token, bool ...
    method WarnOnceIfStopped (line 117) | private void WarnOnceIfStopped()
    method LogMessage (line 126) | private void LogMessage(string message, bool isError)
    method CompleteAndFlushAsync (line 134) | public async Task<ExitCode> CompleteAndFlushAsync(TimeSpan? timeout = ...
    method ProcessMessage (line 157) | private void ProcessMessage(string message, bool isError = false)
    method Symbolicate (line 272) | private string Symbolicate(string msg)
    method ScanMessageForErrorPatterns (line 280) | private void ScanMessageForErrorPatterns(string message)
    method ProcessErrorMessage (line 289) | public void ProcessErrorMessage(string message) => Invoke(message, isE...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WebServerCommand.cs
  class WebServerCommand (line 16) | internal class WebServerCommand : XHarnessCommand<WebServerCommandArgume...
    method WebServerCommand (line 25) | public WebServerCommand()
    method InvokeInternal (line 30) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WebServer.cs
  class WebServer (line 29) | public class WebServer
    method Start (line 31) | internal static Task<ServerURLs> Start(IWebServerArguments arguments, ...
    method Start (line 38) | internal static async Task<ServerURLs> Start(TestWebServerOptions webS...
    class TestWebServerStartup (line 112) | private class TestWebServerStartup
      method TestWebServerStartup (line 116) | public TestWebServerStartup(IWebHostEnvironment hostingEnvironment)
      method Configure (line 121) | public void Configure(IApplicationBuilder app, IOptionsMonitor<TestW...
    class TestWebServerOptions (line 207) | internal class TestWebServerOptions
      method CopyTo (line 219) | public void CopyTo(TestWebServerOptions otherOptions)
      method FromArguments (line 232) | public static TestWebServerOptions FromArguments(IWebServerArguments...
  type ServerURLs (line 250) | public record ServerURLs(string Http, string? Https);

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/XHarnessCommand.cs
  class XHarnessCommand (line 20) | public abstract class XHarnessCommand<T> : Command where T : IXHarnessCo...
    method XHarnessCommand (line 44) | protected XHarnessCommand(
    method Invoke (line 71) | public sealed override int Invoke(IEnumerable<string> arguments)
    method InvokeInternal (line 164) | protected abstract Task<ExitCode> InvokeInternal(ILogger logger);
    method CreateLoggerFactory (line 166) | private static ILoggerFactory CreateLoggerFactory(LogLevel verbosity) ...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/XHarnessHelpCommand.cs
  class XHarnessHelpCommand (line 19) | internal class XHarnessHelpCommand : HelpCommand
    method Invoke (line 21) | public override int Invoke(IEnumerable<string> arguments)
    method PrintCommandHelp (line 82) | private static void PrintCommandHelp(CommandSet commandSet, string? su...

FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/XHarnessVersionCommand.cs
  class XHarnessVersionCommand (line 10) | internal class XHarnessVersionCommand : Command
    method XHarnessVersionCommand (line 12) | public XHarnessVersionCommand() : base("version") { }
    method Invoke (line 14) | public override int Invoke(IEnumerable<string> arguments)
    method GetAssemblyVersion (line 34) | public static FileVersionInfo GetAssemblyVersion() => FileVersionInfo....

FILE: src/Microsoft.DotNet.XHarness.CLI/Program.cs
  class Program (line 19) | public static class Program
    method Main (line 27) | public static int Main(string[] args)
    method GetXHarnessCommandSet (line 70) | public static CommandSet GetXHarnessCommandSet()
    method IsOutputSensitive (line 98) | private static bool IsOutputSensitive(string[] args)

FILE: src/Microsoft.DotNet.XHarness.CLI/Resources/Strings.Designer.cs
  class Strings (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Strings (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: src/Microsoft.DotNet.XHarness.CLI/XHarnessConsoleLoggerFormatter.cs
  class XHarnessConsoleLoggerFormatter (line 29) | internal class XHarnessConsoleLoggerFormatter : ConsoleFormatter
    method XHarnessConsoleLoggerFormatter (line 41) | public XHarnessConsoleLoggerFormatter(IOptionsMonitor<SimpleConsoleFor...
    method Write (line 49) | public override void Write<TState>(in LogEntry<TState> logEntry, IExte...
    method WriteMessage (line 88) | private void WriteMessage(TextWriter textWriter, string message, bool ...
    method GetLogLevelString (line 103) | private static string GetLogLevelString(LogLevel logLevel) => logLevel...
    method GetLogLevelConsoleColors (line 114) | private (ConsoleColor? Foreground, ConsoleColor? Background) GetLogLev...
    method WriteColoredMessage (line 135) | private static void WriteColoredMessage(TextWriter textWriter, string ...
    method GetForegroundColorEscapeCode (line 161) | private static string GetForegroundColorEscapeCode(ConsoleColor color)...
    method GetBackgroundColorEscapeCode (line 181) | private static string GetBackgroundColorEscapeCode(ConsoleColor color)...

FILE: src/Microsoft.DotNet.XHarness.Common/CLI/EnvironmentVariables.cs
  class EnvironmentVariables (line 9) | public static class EnvironmentVariables
    class Names (line 11) | public static class Names
    method IsTrue (line 19) | public static bool IsTrue(string varName) =>

FILE: src/Microsoft.DotNet.XHarness.Common/CLI/ExitCode.cs
  type ExitCode (line 11) | public enum ExitCode

FILE: src/Microsoft.DotNet.XHarness.Common/CLI/NoDeviceFoundException.cs
  class NoDeviceFoundException (line 10) | public class NoDeviceFoundException : Exception
    method NoDeviceFoundException (line 12) | public NoDeviceFoundException()
    method NoDeviceFoundException (line 16) | public NoDeviceFoundException(string message) : base(message)
    method NoDeviceFoundException (line 20) | public NoDeviceFoundException(string message, Exception innerException...

FILE: src/Microsoft.DotNet.XHarness.Common/CommandDiagnostics.cs
  type IDiagnosticsData (line 15) | public interface IDiagnosticsData
  class CommandDiagnostics (line 48) | public class CommandDiagnostics : IDiagnosticsData
    method CommandDiagnostics (line 77) | public CommandDiagnostics(ILogger logger, TargetPlatform platform, str...
    method SaveToJsonFile (line 96) | public void SaveToJsonFile(string targetFile)
  class DiagnosticsFile (line 163) | public class DiagnosticsFile

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/IMacOSProcessManager.cs
  type IMacOSProcessManager (line 13) | public interface IMacOSProcessManager : IProcessManager
    method ExecuteXcodeCommandAsync (line 19) | Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(
    method ExecuteXcodeCommandAsync (line 26) | Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/IProcessManager.cs
  class ProcessExecutionResult (line 14) | public class ProcessExecutionResult
  type IProcessManager (line 24) | public interface IProcessManager
    method ExecuteCommandAsync (line 26) | Task<ProcessExecutionResult> ExecuteCommandAsync(
    method ExecuteCommandAsync (line 34) | Task<ProcessExecutionResult> ExecuteCommandAsync(
    method RunAsync (line 44) | Task<ProcessExecutionResult> RunAsync(
    method RunAsync (line 52) | Task<ProcessExecutionResult> RunAsync(
    method KillTreeAsync (line 62) | Task KillTreeAsync(Process process, ILog log, bool? diagnostics = true);
    method KillTreeAsync (line 63) | Task KillTreeAsync(int pid, ILog log, bool? diagnostics = true);

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/LinuxProcessManager.cs
  class LinuxProcessManager (line 9) | public class LinuxProcessManager : UnixProcessManager
    method kill (line 11) | [DllImport("libc")]
    method Kill (line 14) | protected override int Kill(int pid, int sig) => kill(pid, sig);

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/MacOSProcessManager.cs
  class MacOSProcessManager (line 18) | public class MacOSProcessManager : UnixProcessManager, IMacOSProcessManager
    method MacOSProcessManager (line 28) | public MacOSProcessManager(string? xcodeRoot = null)
    method ExecuteXcodeCommandAsync (line 61) | public Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(
    method ExecuteXcodeCommandAsync (line 74) | public Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(string ex...
    method kill (line 79) | [DllImport("/usr/lib/libc.dylib")]
    method Kill (line 84) | protected override int Kill(int pid, int sig) => kill(pid, sig);
    method DetectXcodePath (line 90) | public static string DetectXcodePath()
    method DetectMlaunchPath (line 129) | public static string DetectMlaunchPath()

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/ProcessManager.cs
  class ProcessManager (line 20) | public abstract class ProcessManager : IProcessManager
    method Kill (line 24) | protected abstract int Kill(int pid, int sig);
    method GetChildProcessIds (line 25) | protected abstract List<int> GetChildProcessIds(ILog log, int pid);
    method ExecuteCommandAsync (line 31) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(string f...
    method ExecuteCommandAsync (line 39) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(string f...
    method RunAsync (line 54) | public Task<ProcessExecutionResult> RunAsync(
    method RunAsync (line 63) | public Task<ProcessExecutionResult> RunAsync(
    method KillTreeAsync (line 74) | public Task KillTreeAsync(Process process, ILog log, bool? diagnostics...
    method KillTreeAsync (line 76) | public Task KillTreeAsync(int pid, ILog log, bool? diagnostics = true)...
    method KillTreeAsync (line 78) | protected static async Task KillTreeAsync(
    method RunAsyncInternal (line 161) | protected Task<ProcessExecutionResult> RunAsyncInternal(
    method RunAsyncInternal (line 181) | protected static async Task<ProcessExecutionResult> RunAsyncInternal(
    method WaitForExitAsync (line 371) | private static async Task<bool> WaitForExitAsync(Process process, Time...
    method ToDictionary (line 409) | private static Dictionary<string, string?> ToDictionary(IEnumerable en...

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/ProcessManagerFactory.cs
  class ProcessManagerFactory (line 10) | public static class ProcessManagerFactory
    method CreateProcessManager (line 12) | public static IProcessManager CreateProcessManager()

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/UnixProcessManager.cs
  class UnixProcessManager (line 12) | public abstract class UnixProcessManager : ProcessManager
    method GetChildProcessIds (line 14) | protected override List<int> GetChildProcessIds(ILog log, int pid) => ...
    method GetChildProcessIdsInternal (line 16) | protected static List<int> GetChildProcessIdsInternal(ILog log, int pid)

FILE: src/Microsoft.DotNet.XHarness.Common/Execution/WindowsProcessManager.cs
  class WindowsProcessManager (line 11) | public class WindowsProcessManager : ProcessManager
    method GetChildProcessIds (line 15) | protected override List<int> GetChildProcessIds(ILog log, int pid) => ...
    method Kill (line 17) | protected override int Kill(int pid, int sig)

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/AggregatedLog.cs
  class Log (line 11) | public abstract partial class Log
    method CreateReadableAggregatedLog (line 13) | public static IFileBackedLog CreateReadableAggregatedLog(IFileBackedLo...
    method CreateAggregatedLog (line 15) | public static ILog CreateAggregatedLog(params ILog[] logs) => new Aggr...
    class AggregatedLog (line 18) | private class AggregatedLog : Log
      method AggregatedLog (line 22) | public AggregatedLog(params ILog[] logs)
      method WriteImpl (line 28) | protected override void WriteImpl(string? value)
      method Write (line 36) | public override void Write(byte[] buffer, int offset, int count)
      method Flush (line 44) | public override void Flush()
      method Dispose (line 52) | public override void Dispose()
    class ReadableAggregatedLog (line 61) | private class ReadableAggregatedLog : AggregatedLog, IFileBackedLog
      method ReadableAggregatedLog (line 65) | public ReadableAggregatedLog(IFileBackedLog defaultLog, params ILog[...
      method GetReader (line 73) | public StreamReader GetReader() => _defaultLog.GetReader();

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/CallbackLog.cs
  class CallbackLog (line 13) | public class CallbackLog : Log
    method CallbackLog (line 18) | public CallbackLog(Action<string> onWrite)
    method Dispose (line 25) | public override void Dispose()
    method Flush (line 30) | public override void Flush()
    method WriteImpl (line 34) | protected override void WriteImpl(string? value)

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ConsoleLog.cs
  class ConsoleLog (line 14) | public class ConsoleLog : ReadableLog
    method WriteImpl (line 18) | protected override void WriteImpl(string? value)
    method GetReader (line 28) | public override StreamReader GetReader()
    method Flush (line 37) | public override void Flush()
    method Dispose (line 41) | public override void Dispose()

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/FileBackedLog.cs
  type IFileBackedLog (line 7) | public interface IFileBackedLog : IReadableLog
  class FileBackedLog (line 12) | public abstract class FileBackedLog : ReadableLog, IFileBackedLog
    method FileBackedLog (line 14) | protected FileBackedLog(string? description = null) : base(description...

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ILog.cs
  type ILog (line 10) | public interface ILog : IDisposable
    method Write (line 15) | void Write(byte[] buffer, int offset, int count);
    method Write (line 16) | void Write(string? value);
    method WriteLine (line 17) | void WriteLine(string? value);
    method WriteLine (line 18) | void WriteLine(string format, params object?[] args);
    method Flush (line 19) | void Flush();

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/Log.cs
  class Log (line 10) | public abstract partial class Log : ILog
    method Log (line 16) | protected Log(string? description = null)
    method Write (line 21) | public virtual void Write(byte[] buffer, int offset, int count) => Wri...
    method Write (line 23) | public void Write(string? value)
    method WriteLine (line 35) | public void WriteLine(string? value) => Write((value ?? string.Empty) ...
    method WriteLine (line 37) | public void WriteLine(string format, params object?[] args) => Write(s...
    method ToString (line 39) | public override string ToString() => Description ?? string.Empty;
    method Flush (line 41) | public abstract void Flush();
    method Dispose (line 43) | public abstract void Dispose();
    method WriteImpl (line 45) | protected abstract void WriteImpl(string? value);

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/MemoryLog.cs
  class MemoryLog (line 14) | public class MemoryLog : ReadableLog
    method WriteImpl (line 18) | protected override void WriteImpl(string? value) => _captured.Append(v...
    method GetReader (line 20) | public override StreamReader GetReader()
    method Flush (line 26) | public override void Flush()
    method Dispose (line 30) | public override void Dispose()
    method ToString (line 35) | public override string ToString() => _captured.ToString();

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/NullLog.cs
  class NullLog (line 13) | public class NullLog : ILog
    method Dispose (line 20) | public void Dispose()
    method Flush (line 25) | public void Flush()
    method Write (line 29) | public void Write(byte[] buffer, int offset, int count)
    method Write (line 33) | public void Write(string? value)
    method WriteLine (line 37) | public void WriteLine(string? value)
    method WriteLine (line 41) | public static void WriteLine(StringBuilder value)
    method WriteLine (line 45) | public void WriteLine(string format, params object?[] args)

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ReadableLog.cs
  type IReadableLog (line 9) | public interface IReadableLog : ILog
    method GetReader (line 11) | StreamReader GetReader();
  class ReadableLog (line 14) | public abstract class ReadableLog : Log, IReadableLog
    method ReadableLog (line 16) | protected ReadableLog(string? description = null) : base(description) { }
    method GetReader (line 18) | public abstract StreamReader GetReader();

FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ScanLog.cs
  class ScanLog (line 12) | public class ScanLog : Log
    method ScanLog (line 22) | public ScanLog(string tag, Action tagFoundNotify)
    method WriteImpl (line 35) | protected override void WriteImpl(string? value)
    method Flush (line 53) | public override void Flush()
    method Dispose (line 57) | public override void Dispose()
    method Add (line 62) | private void Add(char c)
    method IsMatch (line 75) | private bool IsMatch()

FILE: src/Microsoft.DotNet.XHarness.Common/RunSummaryEmitter.cs
  class RunSummaryEmitter (line 18) | public static class RunSummaryEmitter
    method EmitRunSummary (line 26) | public static void EmitRunSummary(
    method EmitRunSummary (line 45) | public static void EmitRunSummary(
    method EmitJsonResultBlock (line 62) | public static void EmitJsonResultBlock(
    method WriteResultJsonFile (line 89) | public static void WriteResultJsonFile(
    method BuildResultData (line 120) | private static Dictionary<string, object?> BuildResultData(

FILE: src/Microsoft.DotNet.XHarness.Common/TargetPlatform.cs
  type TargetPlatform (line 7) | public enum TargetPlatform

FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/DisposableList.cs
  class DisposableList (line 10) | public class DisposableList<T> : List<T>, IDisposable where T : IDisposable
    method Dispose (line 12) | public void Dispose()

FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/Extensions.cs
  class Extensions (line 10) | public static class Extensions
    method TimeoutAfter (line 13) | public static async Task<bool> TimeoutAfter(this Task task, TimeSpan t...
    method TimeoutAfter (line 31) | public static async Task<bool> TimeoutAfter<T>(this Task<T> task, Time...

FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/FileUtils.cs
  class FileUtils (line 13) | public static class FileUtils
    method TryFindExecutableInPATH (line 19) | public static bool TryFindExecutableInPATH(string filename, [NotNullWh...

FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/StringUtils.cs
  class StringUtils (line 12) | public class StringUtils
    method StringUtils (line 18) | static StringUtils()
    method FormatArguments (line 31) | public static string FormatArguments(params string[] arguments) => For...
    method FormatArguments (line 33) | public static string FormatArguments(IList<string> arguments) => strin...
    method QuoteForProcess (line 35) | private static string[]? QuoteForProcess(params string[] array)
    method Quote (line 51) | public static string Quote(string? f)
    method QuoteForProcess (line 81) | private static string QuoteForProcess(string f)
    method QuoteForProcess (line 114) | private static string[]? QuoteForProcess(IList<string> arguments)

FILE: src/Microsoft.DotNet.XHarness.Common/WasmSymbolicatorBase.cs
  class WasmSymbolicatorBase (line 10) | public abstract class WasmSymbolicatorBase
    method Init (line 15) | public virtual bool Init(string? symbolMapFile, string? symbolsPattern...
    method Create (line 23) | public static WasmSymbolicatorBase? Create(Type? symbolicatorType, str...
    method Symbolicate (line 49) | public abstract string Symbolicate(string msg);

FILE: src/Microsoft.DotNet.XHarness.Common/XmlResultJargon.cs
  type XmlResultJargon (line 6) | public enum XmlResultJargon

FILE: src/Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/DefaultAndroidEntryPoint.cs
  class DefaultAndroidEntryPoint (line 28) | public class DefaultAndroidEntryPoint : AndroidApplicationEntryPoint
    method DefaultAndroidEntryPoint (line 47) | public DefaultAndroidEntryPoint(string resultsPath, Dictionary<string,...
    method GetTestAssemblies (line 75) | protected override IEnumerable<TestAssemblyInfo> GetTestAssemblies()
    method TerminateWithSuccess (line 82) | protected override void TerminateWithSuccess()
    method ConfigureFilters (line 86) | private static void ConfigureFilters(string? filter, Action<string, bo...
    method GetTestRunner (line 97) | protected override TestRunner GetTestRunner(LogWriter logWriter)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/AndroidApplicationEntryPointBase.cs
  class AndroidApplicationEntryPointBase (line 16) | public abstract class AndroidApplicationEntryPointBase : ApplicationEntr...
    method RunAsync (line 27) | public override async Task RunAsync()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/ApplicationEntryPoint.cs
  type TestRunnerType (line 15) | public enum TestRunnerType
  class ApplicationEntryPoint (line 36) | public abstract class ApplicationEntryPoint
    method GetTestAssemblies (line 74) | protected abstract IEnumerable<TestAssemblyInfo> GetTestAssemblies();
    method GetTestRunner (line 79) | protected abstract TestRunner GetTestRunner(LogWriter logWriter);
    method TerminateWithSuccess (line 120) | protected abstract void TerminateWithSuccess();
    method RunAsync (line 125) | public abstract Task RunAsync();
    method OnTestStarted (line 132) | private void OnTestStarted(object? sender, string testName) => TestSta...
    method OnTestCompleted (line 134) | private void OnTestCompleted(object? sender, (string TestName, TestRes...
    method GetIgnoredCategories (line 136) | private async Task<List<string>> GetIgnoredCategories()
    method ConfigureRunnerFilters (line 155) | internal static void ConfigureRunnerFilters(TestRunner runner, Applica...
    method WriteResults (line 176) | private static async Task WriteResults(TestRunner runner, ApplicationO...
    method InternalRunAsync (line 200) | private async Task<TestRunner> InternalRunAsync(LogWriter logger)
    method InternalRunAsync (line 251) | protected async Task<TestRunner> InternalRunAsync(ApplicationOptions o...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/ApplicationOptions.cs
  type XmlMode (line 13) | internal enum XmlMode
  class ApplicationOptions (line 19) | public class ApplicationOptions
    method ApplicationOptions (line 25) | public ApplicationOptions()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/CoverageManager.cs
  class CoverageManager (line 18) | public class CoverageManager
    method CoverageManager (line 22) | public CoverageManager(string? outputPath)
    method PrepareForCoverage (line 51) | public void PrepareForCoverage()
    method GetCoverageResults (line 66) | public string? GetCoverageResults()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/Extensions.cs
  class Extensions (line 7) | internal static partial class Extensions
    method YesNo (line 9) | public static string YesNo(this bool b) => b ? "yes" : "no";

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/IDevice.cs
  type IDevice (line 12) | public interface IDevice

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/IgnoreFileParser.cs
  class IgnoreFileParser (line 17) | internal static class IgnoreFileParser
    method ParseLine (line 19) | private static string ParseLine(string line)
    method ParseStreamAsync (line 32) | public static async Task<IEnumerable<string>> ParseStreamAsync(TextRea...
    method ParseAssemblyResourcesAsync (line 49) | public static async Task<IEnumerable<string>> ParseAssemblyResourcesAs...
    method ParseContentFilesAsync (line 70) | public static async Task<IEnumerable<string>> ParseContentFilesAsync(s...
    method ParseTraitsFileAsync (line 89) | public static async Task<IEnumerable<string>> ParseTraitsFileAsync(str...
    method ParseTraitsContentFileAsync (line 106) | public static Task<IEnumerable<string>> ParseTraitsContentFileAsync(st...
    method ParseTraitsContentFile (line 112) | public static IEnumerable<string> ParseTraitsContentFile(string conten...
    method ParseContentFiles (line 132) | public static IEnumerable<string> ParseContentFiles(string contentDir)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/LogWriter.cs
  class LogWriter (line 12) | public class LogWriter
    method LogWriter (line 19) | public LogWriter() : this(null, Console.Out) { }
    method LogWriter (line 21) | public LogWriter(IDevice? device) : this(device, Console.Out) { }
    method LogWriter (line 23) | public LogWriter(TextWriter w) : this(null, w) { }
    method LogWriter (line 25) | public LogWriter(IDevice? device, TextWriter writer)
    method objc_msgSend (line 35) | [System.Runtime.InteropServices.DllImport("/usr/lib/libobjc.dylib")]
    method InitLogging (line 38) | public void InitLogging()
    method OnError (line 50) | public void OnError(string message)
    method OnWarning (line 61) | public void OnWarning(string message)
    method OnDebug (line 72) | public void OnDebug(string message)
    method OnDiagnostic (line 83) | public void OnDiagnostic(string message)
    method OnInfo (line 94) | public void OnInfo(string message)
    method Info (line 105) | public void Info(string message)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/MinimumLogLevel.cs
  type MinimumLogLevel (line 7) | public enum MinimumLogLevel

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TcpTextWriter.cs
  class TcpTextWriter (line 21) | internal class TcpTextWriter : TextWriter
    method TcpTextWriter (line 27) | private TcpTextWriter(StreamWriter writer)
    method InitializeWithTunnelConnection (line 32) | public static TcpTextWriter InitializeWithTunnelConnection(int port)
    method InitializeWithDirectConnection (line 70) | public static TcpTextWriter InitializeWithDirectConnection(string host...
    method Close (line 91) | public override void Close()
    method Dispose (line 96) | protected override void Dispose(bool disposing) => _writer?.Dispose();
    method Flush (line 98) | public override void Flush()
    method Write (line 104) | public override void Write(char value)
    method Write (line 109) | public override void Write(char[]? buffer)
    method Write (line 114) | public override void Write(char[] buffer, int index, int count)
    method Write (line 119) | public override void Write(string? value)
    method WriteLine (line 126) | public override void WriteLine()
    method SelectHostName (line 132) | private static string SelectHostName(string[] names, int port)
    method ValidatePort (line 192) | private static void ValidatePort(int port)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestAssemblyInfo.cs
  class TestAssemblyInfo (line 10) | public class TestAssemblyInfo
    method TestAssemblyInfo (line 15) | public TestAssemblyInfo(Assembly assembly, string fullPath)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestCompletionStatus.cs
  type TestCompletionStatus (line 7) | internal enum TestCompletionStatus

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestExecutionState.cs
  class TestExecutionState (line 9) | internal class TestExecutionState
    method TestExecutionState (line 16) | internal TestExecutionState() { }
    method Start (line 18) | internal void Start() => Started = new TimeSpan(DateTime.Now.Ticks);
    method Finish (line 20) | internal void Finish() => Finished = new TimeSpan(DateTime.Now.Ticks);

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestFailureInfo.cs
  class TestFailureInfo (line 13) | public class TestFailureInfo

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestResult.cs
  type TestResult (line 6) | public enum TestResult

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunResult.cs
  type TestRunResult (line 3) | public struct TestRunResult
    method TestRunResult (line 43) | internal TestRunResult(TestRunner runner)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunSelector.cs
  class TestRunSelector (line 7) | internal class TestRunSelector

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunSelectorType.cs
  type TestRunSelectorType (line 7) | internal enum TestRunSelectorType

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunner.cs
  class TestRunner (line 14) | public abstract class TestRunner
    method TestRunner (line 109) | protected TestRunner(LogWriter logger)
    method Run (line 114) | public abstract Task Run(IEnumerable<TestAssemblyInfo> testAssemblies);
    method WriteResultsToFile (line 115) | public abstract Task<string> WriteResultsToFile(XmlResultJargon xmlRes...
    method WriteResultsToFile (line 116) | public abstract Task WriteResultsToFile(TextWriter writer, XmlResultJa...
    method SkipTests (line 117) | public abstract void SkipTests(IEnumerable<string> tests);
    method SkipCategories (line 118) | public abstract void SkipCategories(IEnumerable<string> categories);
    method SkipMethod (line 119) | public abstract void SkipMethod(string method, bool isExcluded);
    method SkipClass (line 120) | public abstract void SkipClass(string className, bool isExcluded);
    method OnError (line 122) | protected void OnError(string message) => Logger.OnError(message);
    method OnWarning (line 124) | protected void OnWarning(string message) => Logger.OnWarning(message);
    method OnDebug (line 126) | protected void OnDebug(string message) => Logger.OnDebug(message);
    method OnDiagnostic (line 128) | protected void OnDiagnostic(string message) => Logger.OnDiagnostic(mes...
    method OnInfo (line 130) | protected void OnInfo(string message) => Logger.OnInfo(message);
    method OnAssemblyStart (line 132) | protected void OnAssemblyStart(Assembly asm)
    method OnAssemblyFinish (line 136) | protected void OnAssemblyFinish(Assembly asm)
    method LogFailureSummary (line 140) | protected void LogFailureSummary()
    method GetResultsFilePath (line 160) | protected virtual string GetResultsFilePath()
    method OnTestStarted (line 176) | protected virtual void OnTestStarted(string testName) => TestStarted?....
    method OnTestCompleted (line 178) | protected virtual void OnTestCompleted((string TestName, TestResult Te...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/WasmApplicationEntryPointBase.cs
  class WasmApplicationEntryPointBase (line 11) | public abstract class WasmApplicationEntryPointBase : ApplicationEntryPoint
    method RunAsync (line 17) | public override async Task RunAsync()
    method TerminateWithSuccess (line 42) | protected override void TerminateWithSuccess() => Environment.Exit(0);

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/iOSApplicationEntryPointBase.cs
  class iOSApplicationEntryPointBase (line 11) | public abstract class iOSApplicationEntryPointBase : ApplicationEntryPoint
    method RunAsync (line 23) | public override async Task RunAsync()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/FilterBuilder.cs
  class FilterBuilder (line 15) | internal class FilterBuilder
    method FilterBuilder (line 24) | public FilterBuilder(ITestFilterBuilder testFilterBuilder, bool runAss...
    method BuildWhereClause (line 30) | internal string? BuildWhereClause() // does not need to be internal, d...
    method GetFilter (line 64) | public TestFilter GetFilter()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/INUnitTestRunner.cs
  type INUnitTestRunner (line 13) | internal interface INUnitTestRunner
    method IncreasePassedTests (line 15) | void IncreasePassedTests();
    method IncreaseSkippedTests (line 17) | void IncreaseSkippedTests();
    method IncreaseFailedTests (line 19) | void IncreaseFailedTests();
    method IncreaseInconclusiveTests (line 21) | void IncreaseInconclusiveTests();
    method Add (line 23) | void Add(TestFailureInfo info);

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/IResultSummary.cs
  type IResultSummary (line 7) | public interface IResultSummary : IList<ITestRun>

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/NUnit3XmlOutputWriter.cs
  class NUnit3XmlOutputWriter (line 20) | internal class NUnit3XmlOutputWriter : OutputWriter
    method NUnit3XmlOutputWriter (line 25) | public NUnit3XmlOutputWriter(DateTime runStartTime) => _runStartTime =...
    method WriteResultFile (line 32) | public override void WriteResultFile(IResultSummary result, TextWriter...
    method WriteXmlOutput (line 49) | private void WriteXmlOutput(IResultSummary result, XmlWriter xmlWriter)
    method InitializeXmlFile (line 58) | private void InitializeXmlFile(IResultSummary result)
    method WriteEnvironmentElement (line 96) | private void WriteEnvironmentElement()
    method WriteResultElement (line 122) | private void WriteResultElement(IResultSummary result)
    method TerminateXmlFile (line 146) | private void TerminateXmlFile()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/NUnitTestListener.cs
  class NUnitTestListener (line 15) | internal class NUnitTestListener : ITestEventListener
    method NUnitTestListener (line 20) | public NUnitTestListener(INUnitTestRunner runner, LogWriter logger)
    method TestStarted (line 26) | private void TestStarted(XmlNode testEvent)
    method TestFinished (line 42) | private void TestFinished(XmlNode testEvent)
    method OnTestEvent (line 129) | public void OnTestEvent(string report)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/NUnitTestRunner.cs
  class NUnitTestRunner (line 18) | internal class NUnitTestRunner : TestRunner, INUnitTestRunner
    method NUnitTestRunner (line 25) | public NUnitTestRunner(LogWriter logger) : base(logger)
    method IncreasePassedTests (line 37) | public void IncreasePassedTests()
    method IncreaseSkippedTests (line 43) | public void IncreaseSkippedTests() => SkippedTests++;
    method IncreaseFailedTests (line 45) | public void IncreaseFailedTests()
    method IncreaseInconclusiveTests (line 51) | public void IncreaseInconclusiveTests()
    method Add (line 57) | public void Add(TestFailureInfo info)
    method Run (line 60) | public override async Task Run(IEnumerable<TestAssemblyInfo> testAssem...
    method ShouldRunAssembly (line 115) | private bool ShouldRunAssembly(TestAssemblyInfo assemblyInfo)
    method ReportFilteredAssembly (line 147) | private bool ReportFilteredAssembly(TestAssemblyInfo assemblyInfo, boo...
    method WriteResultsToFile (line 161) | public override Task<string> WriteResultsToFile(XmlResultJargon jargon)
    method WriteResultsToFile (line 179) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...
    method SkipTests (line 191) | public override void SkipTests(IEnumerable<string> tests)
    method SkipCategories (line 194) | public override void SkipCategories(IEnumerable<string> categories)
    method SkipMethod (line 197) | public override void SkipMethod(string method, bool _)
    method SkipClass (line 200) | public override void SkipClass(string className, bool _)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/OutputWriter.cs
  class OutputWriter (line 15) | internal abstract class OutputWriter
    method WriteResultFile (line 22) | public void WriteResultFile(IResultSummary result, string outputPath)
    method WriteResultFile (line 33) | public abstract void WriteResultFile(IResultSummary result, TextWriter...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/ResultSummary.cs
  class ResultSummary (line 16) | internal class ResultSummary : List<ITestRun>, IResultSummary
    method GetSummaryData (line 61) | private void GetSummaryData()
    method ResultSummary (line 95) | public ResultSummary(string testSuite, TestRunner testRunner) : base()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/TestStatusExtensions.cs
  class TestStatusExtensions (line 11) | internal static class TestStatusExtensions
    method ToXmlResultValue (line 13) | public static string ToXmlResultValue(this TestStatus status, XmlResul...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/XmlResultJargonExtensions.cs
  class XmlResultJargonExtensions (line 10) | internal static class XmlResultJargonExtensions
    method GetWriter (line 12) | public static OutputWriter GetWriter(this XmlResultJargon jargon) => j...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/AndroidApplicationEntryPoint.cs
  class AndroidApplicationEntryPoint (line 11) | public abstract class AndroidApplicationEntryPoint : AndroidApplicationE...
    method GetTestRunner (line 15) | protected override TestRunner GetTestRunner(LogWriter logWriter)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/CompletionCallbackExecutionSink.cs
  class CompletionCallbackExecutionSink (line 14) | internal class CompletionCallbackExecutionSink : global::Xunit.Sdk.LongL...
    method CompletionCallbackExecutionSink (line 23) | public CompletionCallbackExecutionSink(IExecutionSink innerSink, Actio...
    method Dispose (line 29) | public void Dispose() => _innerSink.Dispose();
    method OnMessageWithTypes (line 31) | public bool OnMessageWithTypes(IMessageSinkMessage message, HashSet<st...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/CustomXunitTestRunner.cs
  class CustomXunitTestRunner (line 22) | internal abstract class CustomXunitTestRunner : XunitTestRunnerBase
    method CustomXunitTestRunner (line 24) | protected CustomXunitTestRunner(LogWriter logger) : base(logger)
    method ConsumeAssembliesElement (line 33) | internal XElement ConsumeAssembliesElement()
    method CreateConfiguration (line 42) | protected abstract TestAssemblyConfiguration CreateConfiguration();
    method Run (line 44) | public override async Task Run(IEnumerable<TestAssemblyInfo> testAssem...
    method Combine (line 114) | private ExecutionSummary Combine(ExecutionSummary aggregateSummary, Ex...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/EnvironmentVariables.cs
  class EnvironmentVariables (line 10) | internal static class EnvironmentVariables
    method IsTrue (line 12) | public static bool IsTrue(string varName) => Environment.GetEnvironmen...
    method IsLogTestStart (line 14) | public static bool IsLogTestStart() => IsTrue("XHARNESS_LOG_TEST_START");
    method IsLogThreadId (line 16) | public static bool IsLogThreadId() => IsTrue("XHARNESS_LOG_THREAD_ID");

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/ReflectionBasedXunitTestRunner.cs
  class ReflectionBasedXunitTestRunner (line 20) | internal class ReflectionBasedXunitTestRunner : CustomXunitTestRunner
    method ReflectionBasedXunitTestRunner (line 24) | public ReflectionBasedXunitTestRunner(LogWriter logger) : base(logger)
    method CreateConfiguration (line 33) | protected override TestAssemblyConfiguration CreateConfiguration()
    method WriteResultsToFile (line 46) | public override Task<string> WriteResultsToFile(XmlResultJargon xmlRes...
    method WriteResultsToFile (line 61) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/TestCaseExtensions.cs
  class TestCaseExtensions (line 16) | public static class TestCaseExtensions
    method HasTraits (line 23) | public static bool HasTraits(this ITestCase testCase) =>
    method TryGetTrait (line 26) | public static bool TryGetTrait(this ITestCase testCase,
    method GetTestClass (line 57) | public static string? GetTestClass(this ITestCase testCase) =>
    method GetNamespace (line 60) | public static string? GetNamespace(this ITestCase testCase)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/ThreadlessXunitTestRunner.cs
  class ThreadlessXunitTestRunner (line 18) | internal class ThreadlessXunitTestRunner : CustomXunitTestRunner
    method ThreadlessXunitTestRunner (line 20) | public ThreadlessXunitTestRunner(LogWriter logger) : base(logger)
    method CreateConfiguration (line 28) | protected override TestAssemblyConfiguration CreateConfiguration()
    method WriteResultsToFile (line 40) | public override async Task<string> WriteResultsToFile(XmlResultJargon ...
    method WriteResultsToFile (line 47) | public override async Task WriteResultsToFile(TextWriter writer, XmlRe...
  class ThreadlessXunitDiscoverer (line 53) | internal class ThreadlessXunitDiscoverer : global::Xunit.Sdk.XunitTestFr...
    method ThreadlessXunitDiscoverer (line 55) | public ThreadlessXunitDiscoverer(IAssemblyInfo assemblyInfo, ISourceIn...
    method FindWithoutThreads (line 60) | public void FindWithoutThreads(bool includeSourceInformation, IMessage...
  class ConsoleDiagnosticMessageSink (line 80) | internal class ConsoleDiagnosticMessageSink(LogWriter logger) : global::...
    method OnMessage (line 82) | public bool OnMessage(IMessageSinkMessage message)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/WasmApplicationEntryPoint.cs
  class WasmApplicationEntryPoint (line 14) | public abstract class WasmApplicationEntryPoint : WasmApplicationEntryPo...
    method GetTestRunner (line 28) | protected override TestRunner GetTestRunner(LogWriter logWriter)
    method GetTestAssemblies (line 55) | protected override IEnumerable<TestAssemblyInfo> GetTestAssemblies()
    method Run (line 58) | public async Task<int> Run()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/WasmThreadedTestRunner.cs
  class WasmThreadedTestRunner (line 18) | internal class WasmThreadedTestRunner : XUnitTestRunner
    method WasmThreadedTestRunner (line 20) | public WasmThreadedTestRunner(LogWriter logger) : base(logger)
    method Run (line 28) | public override Task Run(IEnumerable<TestAssemblyInfo> testAssemblies)
    method WriteResultsToFile (line 34) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/WasmXmlResultWriter.cs
  class WasmXmlResultWriter (line 17) | internal class WasmXmlResultWriter
    method WriteResultsToFile (line 19) | public async static Task WriteResultsToFile(XElement assembliesElement)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitFilter.cs
  class XUnitFilter (line 15) | internal class XUnitFilter
    method CreateSingleFilter (line 24) | public static XUnitFilter CreateSingleFilter(string singleTestName, bo...
    method CreateAssemblyFilter (line 40) | public static XUnitFilter CreateAssemblyFilter(string assemblyName, bo...
    method CreateNamespaceFilter (line 62) | public static XUnitFilter CreateNamespaceFilter(string namespaceName, ...
    method CreateClassFilter (line 78) | public static XUnitFilter CreateClassFilter(string className, bool exc...
    method CreateTraitFilter (line 94) | public static XUnitFilter CreateTraitFilter(string traitName, string? ...
    method ApplyTraitFilter (line 111) | private bool ApplyTraitFilter(ITestCase testCase, Func<bool, bool>? re...
    method ApplyTypeNameFilter (line 142) | private bool ApplyTypeNameFilter(ITestCase testCase, Func<bool, bool>?...
    method ApplySingleFilter (line 157) | private bool ApplySingleFilter(ITestCase testCase, Func<bool, bool>? r...
    method ApplyNamespaceFilter (line 169) | private bool ApplyNamespaceFilter(ITestCase testCase, Func<bool, bool>...
    method IsExcluded (line 188) | public bool IsExcluded(TestAssemblyInfo assembly, Action<string>? repo...
    method IsExcluded (line 212) | public bool IsExcluded(ITestCase testCase, Action<string>? log = null)
    method ReportFilteredTest (line 230) | private bool ReportFilteredTest(ITestCase testCase, bool excluded, Act...
    method ReportFilteredAssembly (line 247) | private static bool ReportFilteredAssembly(TestAssemblyInfo assemblyIn...
    method AppendDesc (line 261) | private static void AppendDesc(StringBuilder sb, string name, string? ...
    method ToString (line 271) | public override string ToString()

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitFilterType.cs
  type XUnitFilterType (line 7) | internal enum XUnitFilterType

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitFiltersCollection.cs
  class XUnitFiltersCollection (line 17) | internal class XUnitFiltersCollection : List<XUnitFilter>
    method IsExcludedInternal (line 34) | private bool IsExcludedInternal(IEnumerable<XUnitFilter> filters, Func...
    method IsExcluded (line 61) | public bool IsExcluded(TestAssemblyInfo assembly, Action<string>? log ...
    method IsExcluded (line 64) | public bool IsExcluded(ITestCase testCase, Action<string>? log = null)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitTestRunner.cs
  class XsltIdGenerator (line 24) | internal class XsltIdGenerator
    method GenerateHash (line 28) | public int GenerateHash() => _seed++;
  class XUnitTestRunner (line 31) | internal class XUnitTestRunner : XunitTestRunnerBase
    method ConsumeAssembliesElement (line 39) | internal XElement ConsumeAssembliesElement()
    method XUnitTestRunner (line 53) | public XUnitTestRunner(LogWriter logger) : base(logger)
    method AddFilter (line 101) | public void AddFilter(XUnitFilter filter)
    method SetFilters (line 108) | public void SetFilters(List<XUnitFilter> newFilters)
    method HandleEvent (line 124) | private void HandleEvent<T>(string name, MessageHandlerArgs<T> args, A...
    method GetThreadIdForLog (line 137) | protected string GetThreadIdForLog()
    method HandleTestStarting (line 145) | private void HandleTestStarting(MessageHandlerArgs<ITestStarting> args)
    method HandleTestSkipped (line 162) | private void HandleTestSkipped(MessageHandlerArgs<ITestSkipped> args)
    method HandleTestPassed (line 172) | private void HandleTestPassed(MessageHandlerArgs<ITestPassed> args)
    method HandleTestOutput (line 191) | private void HandleTestOutput(MessageHandlerArgs<ITestOutput> args)
    method HandleTestMethodStarting (line 201) | private void HandleTestMethodStarting(MessageHandlerArgs<ITestMethodSt...
    method HandleTestMethodFinished (line 214) | private void HandleTestMethodFinished(MessageHandlerArgs<ITestMethodFi...
    method HandleTestMethodCleanupFailure (line 228) | private void HandleTestMethodCleanupFailure(MessageHandlerArgs<ITestMe...
    method HandleTestFinished (line 242) | private void HandleTestFinished(MessageHandlerArgs<ITestFinished> args)
    method HandleTestFailed (line 256) | private void HandleTestFailed(MessageHandlerArgs<ITestFailed> args)
    method HandleTestCollectionStarting (line 310) | private void HandleTestCollectionStarting(MessageHandlerArgs<ITestColl...
    method HandleTestCollectionFinished (line 323) | private void HandleTestCollectionFinished(MessageHandlerArgs<ITestColl...
    method HandleTestCollectionCleanupFailure (line 336) | private void HandleTestCollectionCleanupFailure(MessageHandlerArgs<ITe...
    method HandleTestCleanupFailure (line 349) | private void HandleTestCleanupFailure(MessageHandlerArgs<ITestCleanupF...
    method HandleTestClassStarting (line 362) | private void HandleTestClassStarting(MessageHandlerArgs<ITestClassStar...
    method HandleTestClassFinished (line 373) | private void HandleTestClassFinished(MessageHandlerArgs<ITestClassFini...
    method HandleTestClassDisposeStarting (line 386) | private void HandleTestClassDisposeStarting(MessageHandlerArgs<ITestCl...
    method HandleTestClassDisposeFinished (line 398) | private void HandleTestClassDisposeFinished(MessageHandlerArgs<ITestCl...
    method HandleTestClassConstructionStarting (line 410) | private void HandleTestClassConstructionStarting(MessageHandlerArgs<IT...
    method HandleTestClassConstructionFinished (line 422) | private void HandleTestClassConstructionFinished(MessageHandlerArgs<IT...
    method HandleTestClassCleanupFailure (line 434) | private void HandleTestClassCleanupFailure(MessageHandlerArgs<ITestCla...
    method HandleTestCaseStarting (line 448) | private void HandleTestCaseStarting(MessageHandlerArgs<ITestCaseStarti...
    method HandleTestCaseFinished (line 460) | private void HandleTestCaseFinished(MessageHandlerArgs<ITestCaseFinish...
    method HandleTestCaseCleanupFailure (line 473) | private void HandleTestCaseCleanupFailure(MessageHandlerArgs<ITestCase...
    method HandleTestAssemblyStarting (line 486) | private void HandleTestAssemblyStarting(MessageHandlerArgs<ITestAssemb...
    method HandleTestAssemblyFinished (line 499) | private void HandleTestAssemblyFinished(MessageHandlerArgs<ITestAssemb...
    method HandleTestAssemblyCleanupFailure (line 513) | private void HandleTestAssemblyCleanupFailure(MessageHandlerArgs<ITest...
    method HandleBeforeTestStarting (line 526) | private void HandleBeforeTestStarting(MessageHandlerArgs<IBeforeTestSt...
    method HandleBeforeTestFinished (line 538) | private void HandleBeforeTestFinished(MessageHandlerArgs<IBeforeTestFi...
    method HandleAfterTestStarting (line 548) | private void HandleAfterTestStarting(MessageHandlerArgs<IAfterTestStar...
    method HandleAfterTestFinished (line 558) | private void HandleAfterTestFinished(MessageHandlerArgs<IAfterTestFini...
    method HandleTestExecutionSummary (line 568) | private void HandleTestExecutionSummary(MessageHandlerArgs<ITestExecut...
    method HandleTestAssemblyExecutionStarting (line 591) | private void HandleTestAssemblyExecutionStarting(MessageHandlerArgs<IT...
    method HandleTestAssemblyExecutionFinished (line 601) | private void HandleTestAssemblyExecutionFinished(MessageHandlerArgs<IT...
    method HandleTestAssemblyDiscoveryStarting (line 612) | private void HandleTestAssemblyDiscoveryStarting(MessageHandlerArgs<IT...
    method HandleTestAssemblyDiscoveryFinished (line 623) | private void HandleTestAssemblyDiscoveryFinished(MessageHandlerArgs<IT...
    method HandleDiagnosticMessage (line 635) | private void HandleDiagnosticMessage(MessageHandlerArgs<IDiagnosticMes...
    method HandleDiagnosticErrorMessage (line 645) | private void HandleDiagnosticErrorMessage(MessageHandlerArgs<IErrorMes...
    method HandleDiscoveryCompleteMessage (line 655) | private void HandleDiscoveryCompleteMessage(MessageHandlerArgs<IDiscov...
    method HandleDiscoveryTestCaseMessage (line 665) | private void HandleDiscoveryTestCaseMessage(MessageHandlerArgs<ITestCa...
    method RaiseTestSkippedCase (line 677) | private void RaiseTestSkippedCase(ITestResultMessage message, IEnumera...
    method ReportTestCases (line 691) | private void ReportTestCases(string verb, IEnumerable<ITestCase> testC...
    method ReportTestCases (line 693) | private void ReportTestCases(string verb, IEnumerable<ITestCase> testC...
    method ReportTestCase (line 711) | private void ReportTestCase(string verb, ITestCase testCase, Action<st...
    method LogAssemblyInformation (line 721) | private void LogAssemblyInformation(ITestAssemblyMessage message, Acti...
    method LogFailureInformation (line 732) | private void LogFailureInformation(IFailureInformation info, Action<st...
    method EnsureLogger (line 746) | private Action<string> EnsureLogger(Action<string> log) => log ?? OnInfo;
    method LogTestMethodDetails (line 749) | private static void LogTestMethodDetails(IMethodInfo method, Action<st...
    method LogTestOutput (line 756) | private void LogTestOutput(ITestFinished test, Action<string> log = nu...
    method LogTestOutput (line 758) | private void LogTestOutput(ITestResultMessage test, Action<string> log...
    method LogTestOutput (line 760) | private void LogTestOutput(decimal executionTime, string output, Actio...
    method LogTestCollectionDetails (line 775) | private void LogTestCollectionDetails(ITestCollection collection, Acti...
    method LogTestClassDetails (line 777) | private void LogTestClassDetails(ITestClass klass, Action<string> log ...
    method LogTestDetails (line 784) | private void LogTestDetails(ITest test, Action<string> log = null, Str...
    method LogSummary (line 793) | private void LogSummary(IFinishedMessage summary, Action<string> log =...
    method LogSummary (line 801) | private void LogSummary(ExecutionSummary summary, Action<string> log =...
    method LogSourceInformation (line 810) | private void LogSourceInformation(ISourceInformation source, Action<st...
    method GetAssemblyInfo (line 827) | private static string GetAssemblyInfo(ITestAssembly assembly)
    method do_log (line 838) | private void do_log(string message, Action<string> log = null, StringB...
    method Run (line 850) | public override async Task Run(IEnumerable<TestAssemblyInfo> testAssem...
    method WriteResultsToFile (line 912) | public override Task<string> WriteResultsToFile(XmlResultJargon jargon)
    method WriteResultsToFile (line 941) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...
    method Transform_Results (line 983) | private void Transform_Results(string xsltResourceName, XElement eleme...
    method GetConfigurationFileStream (line 1014) | protected virtual Stream GetConfigurationFileStream(Assembly assembly)
    method GetConfiguration (line 1036) | protected virtual TestAssemblyConfiguration GetConfiguration(Assembly ...
    method GetFrameworkOptionsForDiscovery (line 1055) | protected virtual ITestFrameworkDiscoveryOptions GetFrameworkOptionsFo...
    method GetFrameworkOptionsForExecution (line 1065) | protected virtual ITestFrameworkExecutionOptions GetFrameworkOptionsFo...
    method Run (line 1075) | private async Task<XElement> Run(Assembly assembly, string assemblyPath)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XunitTestRunnerBase.cs
  class XunitTestRunnerBase (line 12) | public abstract class XunitTestRunnerBase : TestRunner
    method XunitTestRunnerBase (line 16) | protected XunitTestRunnerBase(LogWriter logger) : base(logger)
    method SkipTests (line 20) | public override void SkipTests(IEnumerable<string> tests)
    method SkipCategories (line 55) | public override void SkipCategories(IEnumerable<string> categories) =>...
    method SkipCategories (line 57) | public virtual void SkipCategories(IEnumerable<string> categories, boo...
    method SkipMethod (line 78) | public override void SkipMethod(string method, bool isExcluded)
    method SkipClass (line 81) | public override void SkipClass(string className, bool isExcluded)
    method SkipNamespace (line 84) | public virtual void SkipNamespace(string namespaceName, bool isExcluded)

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/YieldingXunitTestFrameworkExecutor.cs
  class YieldingXunit2 (line 16) | public class YieldingXunit2 : Xunit2
    method YieldingXunit2 (line 20) | public YieldingXunit2(AppDomainSupport appDomainSupport,
    method RunTestsAsync (line 36) | public async Task RunTestsAsync(IEnumerable<ITestCase> testCases, IMes...
  class NullSourceInformationProvider (line 42) | internal class NullSourceInformationProvider : ISourceInformationProvider
    method GetSourceInformation (line 46) | public ISourceInformation GetSourceInformation(ITestCase testCase)
    method Dispose (line 51) | public void Dispose() { }
  class YieldingXunitTestFrameworkExecutor (line 54) | internal class YieldingXunitTestFrameworkExecutor : XunitTestFrameworkEx...
    method YieldingXunitTestFrameworkExecutor (line 56) | public YieldingXunitTestFrameworkExecutor(AssemblyName assemblyName, I...
    method RunTestCasesAsync (line 61) | public async Task RunTestCasesAsync(IEnumerable<IXunitTestCase> testCa...
    method RunTestCases (line 67) | protected override async void RunTestCases(IEnumerable<IXunitTestCase>...
  class YieldingXunitTestAssemblyRunner (line 73) | internal class YieldingXunitTestAssemblyRunner : XunitTestAssemblyRunner
    method YieldingXunitTestAssemblyRunner (line 75) | public YieldingXunitTestAssemblyRunner(ITestAssembly testAssembly, IEn...
    method RunTestCollectionAsync (line 81) | protected override async Task<RunSummary> RunTestCollectionAsync(IMess...
    method RunTestCollectionsAsync (line 88) | protected override async Task<RunSummary> RunTestCollectionsAsync(IMes...
  class YieldingXunitTestCollectionRunner (line 95) | internal class YieldingXunitTestCollectionRunner : XunitTestCollectionRu...
    method YieldingXunitTestCollectionRunner (line 97) | public YieldingXunitTestCollectionRunner(ITestCollection testCollectio...
    method RunTestClassAsync (line 101) | protected override async Task<RunSummary> RunTestClassAsync(ITestClass...
  class YieldingXunitTestClassRunner (line 109) | internal class YieldingXunitTestClassRunner : XunitTestClassRunner
    method YieldingXunitTestClassRunner (line 111) | public YieldingXunitTestClassRunner(ITestClass testClass, IReflectionT...
    method RunTestMethodAsync (line 116) | protected override async Task<RunSummary> RunTestMethodAsync(ITestMeth...

FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/iOSApplicationEntryPoint.cs
  class iOSApplicationEntryPoint (line 11) | public abstract class iOSApplicationEntryPoint : iOSApplicationEntryPoin...
    method GetTestRunner (line 13) | protected override TestRunner GetTestRunner(LogWriter logWriter)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/AppBundleInformation.cs
  class AppBundleInformation (line 8) | public class AppBundleInformation
    method AppBundleInformation (line 19) | public AppBundleInformation(
    method FromBundleId (line 43) | public static AppBundleInformation FromBundleId(string bundleIdentifie...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/AppBundleInformationParser.cs
  type IAppBundleInformationParser (line 17) | public interface IAppBundleInformationParser
    method ParseFromProject (line 19) | Task<AppBundleInformation> ParseFromProject(string projectFilePath, Te...
    method ParseFromAppBundle (line 21) | Task<AppBundleInformation> ParseFromAppBundle(string appPackagePath, T...
  type IAppBundleLocator (line 24) | public interface IAppBundleLocator
    method LocateAppBundle (line 26) | Task<string?> LocateAppBundle(XmlDocument projectFile, string projectF...
  class AppBundleInformationParser (line 29) | public class AppBundleInformationParser : IAppBundleInformationParser
    method AppBundleInformationParser (line 37) | public AppBundleInformationParser(IProcessManager processManager, IApp...
    method ParseFromProject (line 43) | public async Task<AppBundleInformation> ParseFromProject(string projec...
    method ParseFromAppBundle (line 105) | public async Task<AppBundleInformation> ParseFromAppBundle(string appP...
    method GetPlistProperty (line 162) | private async Task<string> GetPlistProperty(
    method Contains (line 203) | private static bool Contains(string haystack, string needle)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Collections/BlockingEnumerableCollection.cs
  class BlockingEnumerableCollection (line 17) | public class BlockingEnumerableCollection<T> : IEnumerable<T> where T : ...
    method Add (line 31) | public void Add(T device)
    method SetCompleted (line 36) | public void SetCompleted() => _completed.TrySetResult(true);
    method WaitForCompletion (line 38) | private void WaitForCompletion() => _completed.Task.Wait();
    method Reset (line 40) | public void Reset()
    method GetEnumerator (line 46) | public IEnumerator<T> GetEnumerator() => new Enumerator(this);
    method GetEnumerator (line 48) | IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
    class Enumerator (line 50) | private class Enumerator : IEnumerator<T>
      method Enumerator (line 55) | public Enumerator(BlockingEnumerableCollection<T> collection)
      method Dispose (line 64) | public void Dispose() => _enumerator?.Dispose();
      method MoveNext (line 66) | public bool MoveNext()
      method Reset (line 77) | public void Reset() => _enumerator?.Reset();

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Collections/IAsyncEnumerable.cs
  type IAsyncEnumerable (line 9) | public interface IAsyncEnumerable

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/CrashSnapshotReporter.cs
  type ICrashSnapshotReporter (line 18) | public interface ICrashSnapshotReporter
    method EndCaptureAsync (line 20) | Task EndCaptureAsync(TimeSpan timeout);
    method StartCaptureAsync (line 21) | Task StartCaptureAsync();
  class CrashSnapshotReporter (line 24) | public class CrashSnapshotReporter : ICrashSnapshotReporter
    method CrashSnapshotReporter (line 35) | public CrashSnapshotReporter(IMlaunchProcessManager processManager,
    method StartCaptureAsync (line 61) | public async Task StartCaptureAsync() => _initialCrashes = await Creat...
    method EndCaptureAsync (line 63) | public async Task EndCaptureAsync(TimeSpan timeout)
    method ProcessCrash (line 151) | private async Task<IFileBackedLog> ProcessCrash(string crashFile)
    method GetSymbolicateCrashReportAsync (line 178) | private async Task<IFileBackedLog> GetSymbolicateCrashReportAsync(IFil...
    method CreateCrashReportsSnapshotAsync (line 202) | private async Task<HashSet<string>> CreateCrashReportsSnapshotAsync()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/Arguments.cs
  class SdkRootArgument (line 13) | public sealed class SdkRootArgument : SingleValueArgument
    method SdkRootArgument (line 15) | public SdkRootArgument(string sdkPath) : base("sdkroot", sdkPath, false)
  class ListDevicesArgument (line 23) | public sealed class ListDevicesArgument : SingleValueArgument
    method ListDevicesArgument (line 25) | public ListDevicesArgument(string outputFile) : base("listdev", output...
  class ListWirelessDevicesArgument (line 33) | public sealed class ListWirelessDevicesArgument : SingleValueArgument
    method ListWirelessDevicesArgument (line 35) | public ListWirelessDevicesArgument(bool wirelessEnabled) : base("list-...
  class LogDevArgument (line 43) | public sealed class LogDevArgument : OptionArgument
    method LogDevArgument (line 45) | public LogDevArgument() : base("logdev")
  class ListSimulatorsArgument (line 53) | public sealed class ListSimulatorsArgument : SingleValueArgument
    method ListSimulatorsArgument (line 55) | public ListSimulatorsArgument(string outputFile) : base("listsim", out...
  class ListCrashReportsArgument (line 63) | public sealed class ListCrashReportsArgument : SingleValueArgument
    method ListCrashReportsArgument (line 65) | public ListCrashReportsArgument(string outputFile) : base("list-crash-...
  class DeviceArgument (line 73) | public sealed class DeviceArgument : SingleValueArgument
    method DeviceArgument (line 75) | public DeviceArgument(string deviceType) : base("device", deviceType)
  class DeviceNameArgument (line 83) | public sealed class DeviceNameArgument : SingleValueArgument
    method DeviceNameArgument (line 87) | public DeviceNameArgument(string deviceName) : base(ArgName, deviceNam...
    method DeviceNameArgument (line 91) | public DeviceNameArgument(IDevice device) : base(ArgName, device.UDID,...
  class InstallAppOnDeviceArgument (line 99) | public sealed class InstallAppOnDeviceArgument : SingleValueArgument
    method InstallAppOnDeviceArgument (line 101) | public InstallAppOnDeviceArgument(string appPath) : base("installdev",...
  class InstallAppOnSimulatorArgument (line 109) | public sealed class InstallAppOnSimulatorArgument : SingleValueArgument
    method InstallAppOnSimulatorArgument (line 111) | public InstallAppOnSimulatorArgument(string appPath) : base("installsi...
  class UninstallAppFromDeviceArgument (line 119) | public sealed class UninstallAppFromDeviceArgument : SingleValueArgument
    method UninstallAppFromDeviceArgument (line 121) | public UninstallAppFromDeviceArgument(string appBundleId) : base("unin...
  class DefaultOutputFormatArgument (line 129) | public sealed class DefaultOutputFormatArgument : SingleValueArgument
    method DefaultOutputFormatArgument (line 131) | public DefaultOutputFormatArgument() : base("output-format", "Default")
  class XmlOutputFormatArgument (line 139) | public sealed class XmlOutputFormatArgument : SingleValueArgument
    method XmlOutputFormatArgument (line 141) | public XmlOutputFormatArgument() : base("output-format", "XML")
  class DownloadCrashReportArgument (line 149) | public sealed class DownloadCrashReportArgument : SingleValueArgument
    method DownloadCrashReportArgument (line 151) | public DownloadCrashReportArgument(string deviceName) : base("download...
  class DownloadCrashReportToArgument (line 159) | public sealed class DownloadCrashReportToArgument : SingleValueArgument
    method DownloadCrashReportToArgument (line 161) | public DownloadCrashReportToArgument(string outputFile) : base("downlo...
  class ListExtraDataArgument (line 170) | public sealed class ListExtraDataArgument : OptionArgument
    method ListExtraDataArgument (line 172) | public ListExtraDataArgument() : base("list-extra-data")
  class AttachNativeDebuggerArgument (line 180) | public sealed class AttachNativeDebuggerArgument : OptionArgument
    method AttachNativeDebuggerArgument (line 182) | public AttachNativeDebuggerArgument() : base("attach-native-debugger")
  class DisableMemoryLimitsArgument (line 191) | public sealed class DisableMemoryLimitsArgument : OptionArgument
    method DisableMemoryLimitsArgument (line 193) | public DisableMemoryLimitsArgument() : base("disable-memory-limits")
  class WaitForExitArgument (line 198) | public sealed class WaitForExitArgument : OptionArgument
    method WaitForExitArgument (line 200) | public WaitForExitArgument() : base("wait-for-exit")
  class SetAppArgumentArgument (line 208) | public sealed class SetAppArgumentArgument : MlaunchArgument
    method SetAppArgumentArgument (line 212) | public SetAppArgumentArgument(string value, bool isAppArg = false)
    method AsCommandLineArgument (line 222) | public override string AsCommandLineArgument() => "-argument=" + _value;
  class SetEnvVariableArgument (line 228) | public sealed class SetEnvVariableArgument : MlaunchArgument
    method SetEnvVariableArgument (line 233) | public SetEnvVariableArgument(string variableName, object variableValue)
    method AsCommandLineArgument (line 247) | public override string AsCommandLineArgument() => Escape($"-setenv={_v...
  class SetStdoutArgument (line 253) | public sealed class SetStdoutArgument : SingleValueArgument
    method SetStdoutArgument (line 255) | public SetStdoutArgument(string targetFile) : base("stdout", targetFile)
  class SetStderrArgument (line 263) | public sealed class SetStderrArgument : SingleValueArgument
    method SetStderrArgument (line 265) | public SetStderrArgument(string targetFile) : base("stderr", targetFile)
  class LaunchDeviceArgument (line 273) | public sealed class LaunchDeviceArgument : SingleValueArgument
    method LaunchDeviceArgument (line 277) | public LaunchDeviceArgument(string launchAppPath) : base(ArgName, laun...
    method LaunchDeviceArgument (line 281) | public LaunchDeviceArgument(AppBundleInformation appInfo) : base(ArgNa...
  class LaunchDeviceBundleIdArgument (line 289) | public sealed class LaunchDeviceBundleIdArgument : SingleValueArgument
    method LaunchDeviceBundleIdArgument (line 293) | public LaunchDeviceBundleIdArgument(string bundleId) : base(ArgName, b...
    method LaunchDeviceBundleIdArgument (line 297) | public LaunchDeviceBundleIdArgument(AppBundleInformation appInfo) : ba...
  class LaunchSimulatorAppArgument (line 305) | public sealed class LaunchSimulatorAppArgument : SingleValueArgument
    method LaunchSimulatorAppArgument (line 309) | public LaunchSimulatorAppArgument(string launchAppPath) : base(ArgName...
    method LaunchSimulatorAppArgument (line 313) | public LaunchSimulatorAppArgument(AppBundleInformation appInfo) : base...
  class LaunchSimulatorArgument (line 321) | public sealed class LaunchSimulatorArgument : OptionArgument
    method LaunchSimulatorArgument (line 325) | public LaunchSimulatorArgument() : base(ArgName)
  class LaunchSimulatorBundleArgument (line 333) | public sealed class LaunchSimulatorBundleArgument : SingleValueArgument
    method LaunchSimulatorBundleArgument (line 335) | public LaunchSimulatorBundleArgument(AppBundleInformation appInfo) : b...
  class SimulatorUDIDArgument (line 343) | public sealed class SimulatorUDIDArgument : MlaunchArgument
    method SimulatorUDIDArgument (line 347) | public SimulatorUDIDArgument(string udid)
    method SimulatorUDIDArgument (line 352) | public SimulatorUDIDArgument(IDevice device)
    method AsCommandLineArgument (line 357) | public override string AsCommandLineArgument() => $"--device=:v2:udid=...
  class LaunchSimulatorExtensionArgument (line 363) | public sealed class LaunchSimulatorExtensionArgument : MlaunchArgument
    method LaunchSimulatorExtensionArgument (line 368) | public LaunchSimulatorExtensionArgument(string launchAppPath, string b...
    method AsCommandLineArgument (line 374) | public override string AsCommandLineArgument() => "--launchsimbundleid...
  class LaunchDeviceExtensionArgument (line 382) | public sealed class LaunchDeviceExtensionArgument : MlaunchArgument
    method LaunchDeviceExtensionArgument (line 387) | public LaunchDeviceExtensionArgument(string launchAppPath, string bund...
    method AsCommandLineArgument (line 393) | public override string AsCommandLineArgument() => "--launchdevbundleid...
  class VerbosityArgument (line 401) | public sealed class VerbosityArgument : MlaunchArgument
    method VerbosityArgument (line 403) | public VerbosityArgument()
    method AsCommandLineArgument (line 407) | public override string AsCommandLineArgument() => "-v";
  class TcpTunnelArgument (line 413) | public sealed class TcpTunnelArgument : MlaunchArgument
    method TcpTunnelArgument (line 417) | public TcpTunnelArgument(int port)
    method AsCommandLineArgument (line 427) | public override string AsCommandLineArgument() => $"--tcp-tunnel={_por...
  class TimeoutArgument (line 433) | public sealed class TimeoutArgument : SingleValueArgument
    method TimeoutArgument (line 435) | public TimeoutArgument(double timeoutInSeconds) : base("timeout", time...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/EnviromentVariables.cs
  class EnviromentVariables (line 3) | public static class EnviromentVariables

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/IMlaunchProcessManager.cs
  type IMlaunchProcessManager (line 16) | public interface IMlaunchProcessManager : IMacOSProcessManager, IProcess...
    method ExecuteCommandAsync (line 20) | Task<ProcessExecutionResult> ExecuteCommandAsync(
    method ExecuteCommandAsync (line 28) | Task<ProcessExecutionResult> ExecuteCommandAsync(
    method RunAsync (line 38) | Task<ProcessExecutionResult> RunAsync(
    method RunAsync (line 48) | Task<ProcessExecutionResult> RunAsync(

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/MLaunchArguments.cs
  class MlaunchArgument (line 17) | public abstract class MlaunchArgument
    method AsCommandLineArgument (line 19) | public abstract string AsCommandLineArgument();
    method Escape (line 21) | protected static string Escape(string value) => StringUtils.FormatArgu...
    method Equals (line 23) | public override bool Equals(object obj) => obj is MlaunchArgument arg ...
    method GetHashCode (line 25) | public override int GetHashCode() => AsCommandLineArgument().GetHashCo...
  class SingleValueArgument (line 28) | public abstract class SingleValueArgument : MlaunchArgument
    method SingleValueArgument (line 34) | protected SingleValueArgument(string argumentName, string argumentValu...
    method AsCommandLineArgument (line 41) | public override string AsCommandLineArgument()
  class OptionArgument (line 54) | public abstract class OptionArgument : MlaunchArgument
    method OptionArgument (line 58) | protected OptionArgument(string argumentName)
    method AsCommandLineArgument (line 63) | public override string AsCommandLineArgument() => $"--{_argumentName}";
  class MlaunchArguments (line 66) | public class MlaunchArguments : IEnumerable<MlaunchArgument>
    method MlaunchArguments (line 70) | public MlaunchArguments(params MlaunchArgument[] args)
    method Add (line 75) | public void Add(MlaunchArgument arg) => _arguments.Add(arg);
    method AddRange (line 77) | public void AddRange(IEnumerable<MlaunchArgument> args) => _arguments....
    method AsCommandLine (line 79) | public string AsCommandLine() => string.Join(" ", _arguments.Select(a ...
    method GetEnumerator (line 81) | public IEnumerator<MlaunchArgument> GetEnumerator() => _arguments.GetE...
    method GetEnumerator (line 83) | IEnumerator IEnumerable.GetEnumerator() => _arguments.GetEnumerator();
    method ToString (line 85) | public override string ToString() => AsCommandLine();
    method Equals (line 87) | public override bool Equals(object obj) => obj is MlaunchArguments arg...
    method GetHashCode (line 89) | public override int GetHashCode() => AsCommandLine().GetHashCode();

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/MlaunchProcessManager.cs
  class MlaunchProcessManager (line 17) | public class MlaunchProcessManager : MacOSProcessManager, IMlaunchProces...
    method MlaunchProcessManager (line 22) | public MlaunchProcessManager(
    method ExecuteCommandAsync (line 30) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(
    method ExecuteCommandAsync (line 42) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(
    method RunAsync (line 56) | public Task<ProcessExecutionResult> RunAsync(
    method RunAsync (line 68) | public Task<ProcessExecutionResult> RunAsync(

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Extension.cs
  type Extension (line 7) | public enum Extension

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/Device.cs
  type DeviceClass (line 9) | public enum DeviceClass
  class Device (line 20) | public class Device : IHardwareDevice
    method Device (line 22) | public Device(

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/HardwareDeviceLoader.cs
  type IHardwareDeviceLoader (line 21) | public interface IHardwareDeviceLoader : IDeviceLoader
    method FindCompanionDevice (line 30) | Task<IHardwareDevice> FindCompanionDevice(ILog log, IHardwareDevice de...
    method FindDevice (line 32) | Task<IHardwareDevice> FindDevice(
  class HardwareDeviceLoader (line 40) | public class HardwareDeviceLoader : IHardwareDeviceLoader
    method HardwareDeviceLoader (line 55) | public HardwareDeviceLoader(IMlaunchProcessManager processManager)
    method LoadDevices (line 60) | public async Task LoadDevices(
    method FindDevice (line 160) | public async Task<IHardwareDevice> FindDevice(
    method FindCompanionDevice (line 209) | public async Task<IHardwareDevice> FindCompanionDevice(ILog log, IHard...
    method GetDevice (line 228) | private Device GetDevice(XmlNode deviceNode)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/IDevice.cs
  type Architecture (line 9) | public enum Architecture
  type DevicePlatform (line 22) | public enum DevicePlatform
  type IDevice (line 32) | public interface IDevice
  class DevicePlatformExtensions (line 39) | public static class DevicePlatformExtensions
    method AsString (line 41) | public static string AsString(this DevicePlatform value) => value switch

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/IDeviceLoader.cs
  type IDeviceLoader (line 11) | public interface IDeviceLoader
    method LoadDevices (line 13) | Task LoadDevices(

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/IHardwareDevice.cs
  type IHardwareDevice (line 7) | public interface IHardwareDevice : IDevice

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/ISimulatorDevice.cs
  type ISimulatorDevice (line 12) | public interface ISimulatorDevice : IDevice
    method Erase (line 21) | Task Erase(ILog log);
    method Shutdown (line 22) | Task Shutdown(ILog log);
    method PrepareSimulator (line 23) | Task<bool> PrepareSimulator(ILog log, params string[] bundleIdentifiers);
    method KillEverything (line 24) | Task KillEverything(ILog log);
    method Boot (line 25) | Task<bool> Boot(ILog log, CancellationToken cancellationToken);
    method GetAppBundlePath (line 26) | Task<string> GetAppBundlePath(ILog log, string bundleIdentifier, Cance...
  type DeviceState (line 29) | public enum DeviceState

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/ISimulatorLoader.cs
  type ISimulatorLoader (line 13) | public interface ISimulatorLoader : IDeviceLoader
    method FindCompanionDevice (line 20) | Task<ISimulatorDevice> FindCompanionDevice(ILog log, ISimulatorDevice ...
    method SelectDevices (line 21) | IEnumerable<ISimulatorDevice?> SelectDevices(TestTarget target, ILog l...
    method SelectDevices (line 22) | IEnumerable<ISimulatorDevice?> SelectDevices(TestTargetOs target, ILog...
    method FindSimulators (line 24) | Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSimulator...
    method FindSimulators (line 31) | Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSimulator...
    method FindSimulators (line 38) | Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSimulator...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDevicePair.cs
  class SimDevicePair (line 9) | public class SimDevicePair
    method SimDevicePair (line 15) | public SimDevicePair(string UDID, string companion, string gizmo)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDeviceSpecification.cs
  class SimDeviceSpecification (line 9) | public class SimDeviceSpecification
    method SimDeviceSpecification (line 14) | public SimDeviceSpecification(SimulatorDevice main, SimulatorDevice co...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDeviceType.cs
  class SimDeviceType (line 9) | public class SimDeviceType
    method SimDeviceType (line 18) | public SimDeviceType(string name, string identifier, string productFam...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimRuntime.cs
  class SimRuntime (line 9) | public class SimRuntime
    method SimRuntime (line 15) | public SimRuntime(string name, string identifier, long version)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimulatorDevice.cs
  class SimulatorDevice (line 17) | public class SimulatorDevice : ISimulatorDevice
    method SimulatorDevice (line 32) | public SimulatorDevice(IMlaunchProcessManager processManager, ITCCData...
    method Erase (line 50) | public async Task Erase(ILog log)
    method Shutdown (line 62) | public async Task Shutdown(ILog log)
    method KillEverything (line 68) | public async Task KillEverything(ILog log)
    method OpenSimulator (line 104) | private async Task OpenSimulator(ILog log)
    method PrepareSimulator (line 124) | public async Task<bool> PrepareSimulator(ILog log, params string[] bun...
    method Boot (line 181) | public async Task<bool> Boot(ILog log, CancellationToken cancellationT...
    method GetAppBundlePath (line 218) | public async Task<string> GetAppBundlePath(ILog log, string bundleIden...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimulatorLoader.cs
  class SimulatorLoader (line 23) | public class SimulatorLoader : ISimulatorLoader
    method SimulatorLoader (line 40) | public SimulatorLoader(IMlaunchProcessManager processManager, ISimulat...
    method LoadDevices (line 46) | public async Task LoadDevices(
    method CreateName (line 183) | private string CreateName(string deviceType, string runtime)
    method FindOrCreateDevicesAsync (line 191) | private async Task<IEnumerable<ISimulatorDevice>> FindOrCreateDevicesA...
    method CreateDevicePair (line 250) | private async Task<bool> CreateDevicePair(
    method FindOrCreateDevicePairAsync (line 311) | private async Task<SimDevicePair?> FindOrCreateDevicePairAsync(
    method FindSimulators (line 378) | public async Task<(ISimulatorDevice Simulator, ISimulatorDevice? Compa...
    method FindSimulators (line 472) | public Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSi...
    method FindCompanionDevice (line 491) | public async Task<ISimulatorDevice> FindCompanionDevice(ILog log, ISim...
    method FindSimulators (line 499) | public async Task<(ISimulatorDevice Simulator, ISimulatorDevice? Compa...
    method SelectDevices (line 535) | public IEnumerable<ISimulatorDevice> SelectDevices(TestTarget target, ...
    method SelectDevices (line 537) | public IEnumerable<ISimulatorDevice> SelectDevices(TestTargetOs target...
    class SimulatorXmlNodeComparer (line 540) | private class SimulatorXmlNodeComparer : IEqualityComparer<XmlNode>
      method Equals (line 542) | public bool Equals(XmlNode? a, XmlNode? b)
      method GetHashCode (line 557) | public int GetHashCode(XmlNode? node)
    class SimulatorEnumerable (line 572) | private class SimulatorEnumerable : IEnumerable<ISimulatorDevice>, IAs...
      method SimulatorEnumerable (line 577) | public SimulatorEnumerable(ISimulatorLoader simulators, TestTarget t...
      method SimulatorEnumerable (line 585) | public SimulatorEnumerable(ISimulatorLoader simulators, TestTargetOs...
      method ToString (line 593) | public override string ToString() => _toString;
      method GetEnumerator (line 595) | public IEnumerator<ISimulatorDevice> GetEnumerator() => new Enumerat...
      method GetEnumerator (line 597) | IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
      method Find (line 601) | public Task<(ISimulatorDevice, ISimulatorDevice?)> Find() => _findTa...
      class Enumerator (line 603) | private class Enumerator : IEnumerator<ISimulatorDevice>
        method Enumerator (line 607) | public Enumerator(SimulatorEnumerable enumerable)
        method MoveNext (line 629) | public bool MoveNext()
        method Reset (line 646) | public void Reset() => _moved = false;
        method Dispose (line 648) | public void Dispose()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimulatorSelector.cs
  type ISimulatorSelector (line 13) | public interface ISimulatorSelector
    method GetRuntimePrefix (line 15) | string GetRuntimePrefix(TestTargetOs target);
    method GetDeviceType (line 16) | string GetDeviceType(TestTargetOs target, bool minVersion);
    method GetCompanionRuntimeAndDeviceType (line 17) | void GetCompanionRuntimeAndDeviceType(TestTargetOs target, bool minVer...
    method SelectSimulator (line 18) | ISimulatorDevice SelectSimulator(IEnumerable<ISimulatorDevice> simulat...
  class DefaultSimulatorSelector (line 21) | public class DefaultSimulatorSelector : ISimulatorSelector
    method GetRuntimePrefix (line 23) | public virtual string GetRuntimePrefix(TestTargetOs target)
    method GetDeviceType (line 35) | public virtual string GetDeviceType(TestTargetOs target, bool minVersion)
    method GetCompanionRuntimeAndDeviceType (line 47) | public virtual void GetCompanionRuntimeAndDeviceType(TestTargetOs targ...
    method SelectSimulator (line 61) | public ISimulatorDevice SelectSimulator(IEnumerable<ISimulatorDevice> ...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/TCCDatabase.cs
  type ITCCDatabase (line 14) | public interface ITCCDatabase
    method AgreeToPromptsAsync (line 16) | Task<bool> AgreeToPromptsAsync(string simRuntime, string dataPath, str...
    method GetTCCFormat (line 17) | int GetTCCFormat(string simRuntime);
  class TCCDatabase (line 20) | public class TCCDatabase : ITCCDatabase
    method TCCDatabase (line 28) | public TCCDatabase(IMlaunchProcessManager processManager)
    method GetTCCFormat (line 33) | public int GetTCCFormat(string simRuntime)
    method AgreeToPromptsAsync (line 84) | public async Task<bool> AgreeToPromptsAsync(string simRuntime, string ...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/IErrorKnowledgeBase.cs
  type IErrorKnowledgeBase (line 15) | public interface IErrorKnowledgeBase
    method IsKnownInstallIssue (line 23) | bool IsKnownInstallIssue(IFileBackedLog installLog, [NotNullWhen(true)...
    method IsKnownBuildIssue (line 31) | bool IsKnownBuildIssue(IFileBackedLog buildLog, [NotNullWhen(true)] ou...
    method IsKnownTestIssue (line 39) | bool IsKnownTestIssue(IFileBackedLog runLog, [NotNullWhen(true)] out K...
  class KnownIssue (line 42) | public class KnownIssue
    method KnownIssue (line 59) | public KnownIssue(string humanMessage, string? issueLink = null, int? ...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/IResultFileHandler.cs
  type IResultFileHandler (line 11) | public interface IResultFileHandler
    method IsVersionSupported (line 16) | bool IsVersionSupported(string osVersion, bool isSimulator);
    method CopyResultsAsync (line 21) | Task<bool> CopyResultsAsync(
    method CopyCoverageResultsAsync (line 34) | Task<bool> CopyCoverageResultsAsync(
    method CopyCrashReportAsync (line 46) | Task CopyCrashReportAsync(

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/IResultParser.cs
  type IResultParser (line 17) | public interface IResultParser
    method GenerateFailure (line 23) | void GenerateFailure(ILogs logs, string source, string appName, string...
    method GenerateFailure (line 29) | void GenerateFailure(ILogs logs, string source, string appName, string...
    method UpdateMissingData (line 34) | void UpdateMissingData(string source, string destination, string appli...
    method IsValidXml (line 39) | bool IsValidXml(string path, out XmlResultJargon type);
    method IsValidXml (line 44) | bool IsValidXml(TextReader stream, out XmlResultJargon type);
    method CleanXml (line 51) | void CleanXml(string source, string destination);
    method GetXmlFilePath (line 59) | string GetXmlFilePath(string path, XmlResultJargon xmlType);
    method ParseResults (line 69) | (string resultLine, bool failed) ParseResults(string source, XmlResult...
    method ParseResults (line 79) | (string resultLine, bool failed) ParseResults(string source, XmlResult...
    method GenerateTestReport (line 84) | void GenerateTestReport(TextWriter writer, string resultsPath, XmlResu...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/ITestReporter.cs
  type ITestReporter (line 16) | public interface ITestReporter : IDisposable
    method LaunchCallback (line 22) | void LaunchCallback(Task<bool> launchResult);
    method CollectSimulatorResult (line 23) | Task CollectSimulatorResult(ProcessExecutionResult runResult);
    method CollectDeviceResult (line 24) | Task CollectDeviceResult(ProcessExecutionResult runResult);
    method ParseResult (line 25) | Task<(TestExecutingResult ExecutingResult, string ResultMessage)> Pars...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleFileListener.cs
  class SimpleFileListener (line 12) | public class SimpleFileListener : SimpleListener
    method SimpleFileListener (line 20) | public SimpleFileListener(string path, ILog log, IFileBackedLog testLo...
    method Stop (line 26) | protected override void Stop()
    method InitializeAndGetPort (line 34) | public override int InitializeAndGetPort()
    method Start (line 40) | protected override void Start() => _processorThread.Start();
    method Processing (line 42) | private void Processing()
    class BlockingFileStream (line 74) | private class BlockingFileStream : FileStream
      method BlockingFileStream (line 79) | public BlockingFileStream(string path, SimpleFileListener listener)
      method Read (line 85) | public override int Read(byte[] array, int offset, int count)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleHttpListener.cs
  class SimpleHttpListener (line 13) | public class SimpleHttpListener : SimpleListener
    method SimpleHttpListener (line 21) | public SimpleHttpListener(ILog log, IFileBackedLog testLog, bool autoE...
    method InitializeAndGetPort (line 26) | public override int InitializeAndGetPort()
    method Stop (line 58) | protected override void Stop() => _server.Stop();
    method Start (line 60) | protected override void Start()
    method Processing (line 93) | private bool Processing(HttpListenerContext context)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleListener.cs
  type ISimpleListener (line 14) | public interface ISimpleListener : IDisposable
    method Cancel (line 20) | void Cancel();
    method InitializeAndGetPort (line 21) | int InitializeAndGetPort();
    method StartAsync (line 22) | void StartAsync();
    method StopAsync (line 23) | Task StopAsync();
  class SimpleListener (line 26) | public abstract class SimpleListener : ISimpleListener
    method Start (line 36) | protected abstract void Start();
    method Stop (line 37) | protected abstract void Stop();
    method InitializeAndGetPort (line 40) | public abstract int InitializeAndGetPort();
    method SimpleListener (line 42) | protected SimpleListener(ILog log, IFileBackedLog testLog)
    method Connected (line 48) | protected void Connected(string remote)
    method Finished (line 61) | protected void Finished(bool early_termination = false)
    method StartAsync (line 76) | public void StartAsync()
    method StopAsync (line 95) | public Task StopAsync()
    method WaitForCompletion (line 115) | public bool WaitForCompletion(TimeSpan ts) => _stopped.Task.Wait(ts);
    method Cancel (line 119) | public void Cancel()
    method Dispose (line 144) | public virtual void Dispose()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleListenerFactory.cs
  type ListenerTransport (line 10) | public enum ListenerTransport
  type ISimpleListenerFactory (line 17) | public interface ISimpleListenerFactory
    method Create (line 19) | (ListenerTransport transport, ISimpleListener listener, string listene...
  class SimpleListenerFactory (line 31) | public class SimpleListenerFactory : ISimpleListenerFactory
    method SimpleListenerFactory (line 38) | public SimpleListenerFactory(ITunnelBore tunnelBore = null) =>
    method Create (line 41) | public (ListenerTransport transport, ISimpleListener listener, string ...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleTcpListener.cs
  class SimpleTcpListener (line 17) | public class SimpleTcpListener : SimpleListener, ITunnelListener
    method SimpleTcpListener (line 35) | public SimpleTcpListener(ILog log, IFileBackedLog testLog, bool autoEx...
    method Stop (line 41) | protected override void Stop()
    method InitializeAndGetPort (line 54) | public override int InitializeAndGetPort()
    method StartNetworkTcp (line 81) | private void StartNetworkTcp()
    method StartTcpTunnel (line 122) | private void StartTcpTunnel()
    method Start (line 205) | protected override void Start()
    method Processing (line 217) | private bool Processing(TcpClient client)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/TcpTunnel.cs
  type ITunnelListener (line 15) | public interface ITunnelListener : ISimpleListener
  type ITcpTunnel (line 23) | public interface ITcpTunnel : IAsyncDisposable
    method Open (line 25) | public void Open(string device, ITunnelListener simpleListener, TimeSp...
    method Close (line 26) | public Task Close();
  class TcpTunnel (line 32) | public class TcpTunnel : ITcpTunnel
    method TcpTunnel (line 43) | public TcpTunnel(IMlaunchProcessManager processManager)
    method Open (line 48) | public void Open(string device, ITunnelListener simpleListener, TimeSp...
    method Close (line 100) | public async Task Close()
    method DisposeAsync (line 112) | public async ValueTask DisposeAsync()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/TunnelBore.cs
  type ITunnelBore (line 18) | public interface ITunnelBore : IAsyncDisposable
    method Create (line 22) | ITcpTunnel Create(string device, ILog mainLog);
    method Close (line 25) | Task Close(string device);
  class TunnelBore (line 28) | public class TunnelBore : ITunnelBore
    method TunnelBore (line 34) | public TunnelBore(IMlaunchProcessManager processManager)
    method Create (line 40) | public ITcpTunnel Create(string device, ILog mainLog)
    method Close (line 55) | public async Task Close(string device)
    method DisposeAsync (line 64) | public async ValueTask DisposeAsync()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/AppInstallMonitorLog.cs
  class AppInstallMonitorLog (line 15) | public class AppInstallMonitorLog : FileBackedLog
    method AppInstallMonitorLog (line 37) | public AppInstallMonitorLog(IFileBackedLog copy_to)
    method Flush (line 50) | public override void Flush() => _copyTo.Flush();
    method GetReader (line 52) | public override StreamReader GetReader() => _copyTo.GetReader();
    method Dispose (line 54) | public override void Dispose()
    method ResetTimer (line 61) | private void ResetTimer() => _cancellationSource.CancelAfter(TimeSpan....
    method WriteImpl (line 63) | protected override void WriteImpl(string? value)
    method Write (line 122) | public override void Write(byte[] buffer, int offset, int count) => _c...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/CaptureLog.cs
  type ICaptureLogFactory (line 12) | public interface ICaptureLogFactory
    method Create (line 14) | ICaptureLog Create(string path, string systemLogPath, bool entireFile,...
    method Create (line 15) | ICaptureLog Create(string path, string systemLogPath, bool entireFile,...
  class CaptureLogFactory (line 18) | public class CaptureLogFactory : ICaptureLogFactory
    method Create (line 20) | public ICaptureLog Create(string path, string systemLogPath, bool enti...
    method Create (line 26) | public ICaptureLog Create(string path, string systemLogPath, bool enti...
  type ICaptureLog (line 30) | public interface ICaptureLog : IFileBackedLog
    method StartCapture (line 32) | void StartCapture();
    method StopCapture (line 33) | void StopCapture(TimeSpan? waitIfEmpty = null);
  class CaptureLog (line 40) | public class CaptureLog : FileBackedLog, ICaptureLog
    method CaptureLog (line 58) | public CaptureLog(string destinationPath, string capturedPath, bool en...
    method StartCapture (line 65) | public void StartCapture()
    method StopCapture (line 80) | public void StopCapture(TimeSpan? waitIfEmpty = null)
    method Capture (line 130) | private void Capture()
    method GetReader (line 191) | public override StreamReader GetReader()
    method Flush (line 217) | public override void Flush() => Capture();
    method WriteImpl (line 219) | protected override void WriteImpl(string? value) => throw new InvalidO...
    method Dispose (line 221) | public override void Dispose()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/DeviceLogCapturer.cs
  type IDeviceLogCapturer (line 14) | public interface IDeviceLogCapturer : IDisposable
    method StartCapture (line 16) | void StartCapture();
    method StopCapture (line 17) | void StopCapture();
  class DeviceLogCapturer (line 20) | public class DeviceLogCapturer : IDeviceLogCapturer
    method DeviceLogCapturer (line 28) | public DeviceLogCapturer(ILog mainLog, ILog deviceLog, string deviceUdid)
    method StartCapture (line 37) | public void StartCapture()
    method StopCapture (line 43) | public void StopCapture()
    method CleanupOutputPath (line 162) | private void CleanupOutputPath()
    method Dispose (line 170) | public void Dispose() => StopCapture();

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/IEventLogger.cs
  type IEventLogger (line 9) | public interface IEventLogger
    method LogEvent (line 11) | public void LogEvent(ILog log, string text, params object[] args);

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/ILogs.cs
  type ILogs (line 11) | public interface ILogs : IList<IFileBackedLog>, IDisposable
    method Create (line 16) | IFileBackedLog Create(string filename, string description, bool? times...
    method AddFile (line 21) | IFileBackedLog AddFile(string path);
    method AddFile (line 26) | IFileBackedLog AddFile(string path, string name);
    method CreateFile (line 29) | string CreateFile(string path, string description);
    method CreateFile (line 30) | string CreateFile(string path, LogType type);

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/LogFile.cs
  class LogFile (line 11) | public class LogFile : FileBackedLog
    method LogFile (line 20) | public LogFile(string description, string path, bool append = true)
    method Write (line 30) | public override void Write(byte[] buffer, int offset, int count)
    method Flush (line 60) | public override void Flush()
    method WriteImpl (line 68) | protected override void WriteImpl(string? value)
    method GetReader (line 74) | public override StreamReader GetReader() => new(new FileStream(FullPat...
    method Dispose (line 76) | public override void Dispose()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/LogType.cs
  type LogType (line 8) | public enum LogType

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/Logs.cs
  class Logs (line 13) | public class Logs : List<IFileBackedLog>, ILogs
    method Logs (line 19) | public Logs(string directory)
    method Create (line 24) | public IFileBackedLog Create(string filename, string description, bool...
    method AddFile (line 40) | public IFileBackedLog AddFile(string path) => AddFile(path, Path.GetFi...
    method AddFile (line 45) | public IFileBackedLog AddFile(string path, string name)
    method CreateFile (line 65) | public string CreateFile(string path, string description)
    method CreateFile (line 79) | public string CreateFile(string path, LogType type) => CreateFile(path...
    method Dispose (line 81) | public void Dispose()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/WrenchLog.cs
  class WrenchLog (line 7) | public static class WrenchLog
    method WriteLine (line 10) | public static void WriteLine(string message, params object[] args) => ...
    method WriteLine (line 12) | public static void WriteLine(string message)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/ResultFileHandler.cs
  class ResultFileHandler (line 18) | public class ResultFileHandler : IResultFileHandler
    method ResultFileHandler (line 26) | public ResultFileHandler(IMlaunchProcessManager pm, IFileBackedLog fs,...
    method IsVersionSupported (line 34) | public bool IsVersionSupported(string osVersion, bool isSimulator)
    method CopyResultsAsync (line 71) | public async Task<bool> CopyResultsAsync(
    method CopyCoverageResultsAsync (line 94) | public async Task<bool> CopyCoverageResultsAsync(
    method ShouldCopyFromAppContainer (line 118) | private bool ShouldCopyFromAppContainer(RunMode runMode, string osVers...
    method GetAppContainerSourcePath (line 121) | private static string GetAppContainerSourcePath(RunMode runMode, strin...
    method CopyFileFromAppContainerAsync (line 126) | private async Task<bool> CopyFileFromAppContainerAsync(
    method CopyCrashReportAsync (line 196) | public async Task CopyCrashReportAsync(

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/RunMode.cs
  type RunMode (line 7) | public enum RunMode

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/SdkVersions.cs
  class SdkVersions (line 6) | public static class SdkVersions
    method OverrideVersions (line 36) | public static void OverrideVersions(string xcode,

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestExecutingResult.cs
  type TestExecutingResult (line 9) | [Flags]

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestReporter.cs
  class TestReporter (line 31) | public class TestReporter : ITestReporter
    method TestReporter (line 81) | public TestReporter(
    method GetPidFromRunLog (line 131) | private async Task<int> GetPidFromRunLog()
    method GetPidFromMainLog (line 178) | private async Task<int> GetPidFromMainLog()
    method GetCrashReason (line 207) | private void GetCrashReason(int pid, IReadableLog crashLog, out string...
    method TcpConnectionFailed (line 227) | private async Task<bool> TcpConnectionFailed()
    method KillAppProcess (line 241) | private Task KillAppProcess(int pid, CancellationTokenSource cancellat...
    method CollectResult (line 249) | private async Task CollectResult(ProcessExecutionResult runResult)
    method LaunchCallback (line 279) | public void LaunchCallback(Task<bool> launchResult)
    method CollectSimulatorResult (line 311) | public async Task CollectSimulatorResult(ProcessExecutionResult runRes...
    method CollectDeviceResult (line 330) | public async Task CollectDeviceResult(ProcessExecutionResult runResult)
    method GetResultLine (line 336) | private async Task<(string? ResultLine, bool Failed)> GetResultLine(st...
    method ParseResultFile (line 359) | private async Task<(string? resultLine, bool failed, bool crashed)> Pa...
    method TestsSucceeded (line 475) | private async Task<(bool Succeeded, bool Crashed, string ResultLine)> ...
    method GenerateXmlFailures (line 512) | private async Task GenerateXmlFailures(string failure, bool crashed, s...
    method ParseResult (line 581) | public async Task<(TestExecutingResult ExecutingResult, string? Result...
    method Dispose (line 724) | public void Dispose()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestReporterFactory.cs
  type ITestReporterFactory (line 17) | public interface ITestReporterFactory
    method Create (line 19) | ITestReporter Create(IFileBackedLog mainLog,
  class TestReporterFactory (line 35) | public class TestReporterFactory : ITestReporterFactory
    method TestReporterFactory (line 39) | public TestReporterFactory(IMlaunchProcessManager processManager)
    method Create (line 44) | public ITestReporter Create(IFileBackedLog mainLog,

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestTarget.cs
  type TestTarget (line 10) | public enum TestTarget
  class TestTargetOs (line 27) | public class TestTargetOs
    method TestTargetOs (line 41) | public TestTargetOs(TestTarget platform, string? osVersion)
  class TestTargetExtensions (line 48) | public static class TestTargetExtensions
    method ToRunMode (line 50) | public static RunMode ToRunMode(this TestTarget target) => target switch
    method IsSimulator (line 67) | public static bool IsSimulator(this TestTarget target) => target switch
    method IsWatchOSTarget (line 84) | public static bool IsWatchOSTarget(this TestTarget target) => target s...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/DirectoryUtilities.cs
  class DirectoryUtilities (line 16) | public static class DirectoryUtilities
    method DirectoryUtilities (line 21) | static DirectoryUtilities()
    method mkdir (line 32) | [DllImport("libc", SetLastError = true)]
    method CreateTemporaryDirectory (line 35) | public static string CreateTemporaryDirectory(string name = null)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/Extensions.cs
  class Extensions (line 15) | public static class Extensions
    method AsString (line 17) | public static string AsString(this TestTarget target) => target switch
    method AsString (line 31) | public static string AsString(this TestTargetOs targetOs) =>
    method ParseAsAppRunnerTarget (line 34) | public static TestTarget ParseAsAppRunnerTarget(this string target) =>...
    method ParseAsAppRunnerTargetOs (line 51) | public static TestTargetOs ParseAsAppRunnerTargetOs(this string target...
    method ParseFromNSExtensionPointIdentifier (line 69) | public static Extension ParseFromNSExtensionPointIdentifier(this strin...
    method AsNSExtensionPointIdentifier (line 76) | public static string AsNSExtensionPointIdentifier(this Extension exten...
    method DoNotAwait (line 83) | public static void DoNotAwait(this Task task)
    method Shuffle (line 108) | public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> collection)
    method AsHtml (line 114) | public static string AsHtml(this string inString)
    method WriteCDataSafe (line 121) | public static void WriteCDataSafe(this XmlWriter writer, string text)

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/Helpers.cs
  type IHelpers (line 17) | public interface IHelpers
    method GetTerminalName (line 19) | string GetTerminalName(int filedescriptor);
    method GenerateStableGuid (line 21) | Guid GenerateStableGuid(string seed = null);
    method GenerateGuid (line 23) | Guid GenerateGuid();
    method GetLocalIpAddresses (line 27) | IEnumerable<IPAddress> GetLocalIpAddresses();
  class Helpers (line 30) | public class Helpers : IHelpers
    method GenerateStableGuid (line 38) | public Guid GenerateStableGuid(string seed = null)
    method GenerateGuid (line 57) | public Guid GenerateGuid() => Guid.NewGuid();
    method ttyname (line 61) | [DllImport("/usr/lib/libc.dylib")]
    method GetTerminalName (line 64) | public string GetTerminalName(int filedescriptor) => Marshal.PtrToStri...
    method GetLocalIpAddresses (line 66) | public IEnumerable<IPAddress> GetLocalIpAddresses()

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/PlistExtensions.cs
  class PListExtensions (line 12) | public static class PListExtensions
    method GetFilename (line 21) | public static string GetFilename(this XmlDocument doc)
    method LoadWithoutNetworkAccess (line 27) | public static void LoadWithoutNetworkAccess(this XmlDocument doc, stri...
    method LoadXmlWithoutNetworkAccess (line 44) | public static void LoadXmlWithoutNetworkAccess(this XmlDocument doc, s...
    method SetMinimumOSVersion (line 60) | public static void SetMinimumOSVersion(this XmlDocument plist, string ...
    method SetMinimummacOSVersion (line 63) | public static void SetMinimummacOSVersion(this XmlDocument plist, stri...
    method SetCFBundleDisplayName (line 66) | public static void SetCFBundleDisplayName(this XmlDocument plist, stri...
    method GetCFBundleDisplayName (line 69) | public static string GetCFBundleDisplayName(this XmlDocument plist) =>
    method GetCFBundleExecutable (line 72) | public static string GetCFBundleExecutable(this XmlDocument plist)
    method GetMinimumOSVersion (line 78) | public static string GetMinimumOSVersion(this XmlDocument plist) =>
    method GetMinimummacOSVersion (line 81) | public static string GetMinimummacOSVersion(this XmlDocument plist) =>
    method SetCFBundleIdentifier (line 84) | public static void SetCFBundleIdentifier(this XmlDocument plist, strin...
    method SetCFBundleName (line 87) | public static void SetCFBundleName(this XmlDocument plist, string valu...
    method SetUIDeviceFamily (line 90) | public static void SetUIDeviceFamily(this XmlDocument plist, params in...
    method GetCFBundleIdentifier (line 93) | public static string GetCFBundleIdentifier(this XmlDocument plist) =>
    method GetCFBundleName (line 96) | public static string GetCFBundleName(this XmlDocument plist) =>
    method GetNSExtensionPointIdentifier (line 99) | public static string GetNSExtensionPointIdentifier(this XmlDocument pl...
    method SetPListStringValue (line 105) | public static void SetPListStringValue(this XmlDocument plist, string ...
    method AddPListStringValue (line 128) | public static void AddPListStringValue(this XmlDocument plist, string ...
    method AddPListKeyValuePair (line 139) | public static void AddPListKeyValuePair(this XmlDocument plist, string...
    method ContainsKey (line 150) | public static bool ContainsKey(this XmlDocument plist, string key) =>
    method SetPListArrayOfIntegerValues (line 153) | private static void SetPListArrayOfIntegerValues(this XmlDocument plis...
    method GetPListStringValue (line 167) | private static string GetPListStringValue(this XmlDocument plist, stri...
    method TryGetPListStringValue (line 170) | private static bool TryGetPListStringValue(this XmlDocument plist, str...

FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs
  class ProjectFileExtensions (line 16) | public static class ProjectFileExtensions
    method SetProjectTypeGuids (line 25) | public static void SetProjectTypeGuids(this XmlDocument csproj, string...
    method GetProjectGuid (line 27) | public static string GetProjectGuid(this XmlDocument csproj) => csproj...
    method SetProjectGuid (line 29) | public static void SetProjectGuid(this XmlDocument csproj, string valu...
    method GetOutputType (line 31) | public static string GetOutputType(this XmlDocument csproj) => csproj
Condensed preview — 651 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,255K chars).
[
  {
    "path": ".azuredevops/dependabot.yml",
    "chars": 182,
    "preview": "version: 2\r\n\r\n# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github.\r\nenab"
  },
  {
    "path": ".config/tsaoptions.json",
    "chars": 425,
    "preview": "{  \n    \"instanceUrl\": \"https://devdiv.visualstudio.com/\",\n    \"template\": \"TFSDEVDIV\",\n    \"projectName\": \"DEVDIV\",\n   "
  },
  {
    "path": ".editorconfig",
    "chars": 7637,
    "preview": "# editorconfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Default settings:\n# A newline ending every file\n# Use 4 "
  },
  {
    "path": ".git-blame-ignore-revs",
    "chars": 76,
    "preview": "# Change to file-scoped namespaces\n2863beb74c1abad7ddfe9ef7afea6fc2605e8a03\n"
  },
  {
    "path": ".gitattributes",
    "chars": 59,
    "preview": "# Apply LF to shell scripts automatically\n*.sh text eol=lf\n"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 8899,
    "preview": "# XHarness Repository Copilot Instructions\n\n## Project Overview\n\nXHarness is a .NET command-line tool that enables runni"
  },
  {
    "path": ".github/workflows/backport.yml",
    "chars": 329,
    "preview": "name: Backport PR to branch\non:\n  issue_comment:\n    types: [created]\n  schedule:\n    # once a day at 13:00 UTC to clean"
  },
  {
    "path": ".github/workflows/copilot-setup-steps.yml",
    "chars": 840,
    "preview": "# Automatically run the setup steps when they are changed to allow for easy validation, and\n# allow manual testing throu"
  },
  {
    "path": ".gitignore",
    "chars": 6196,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "Build.cmd",
    "chars": 141,
    "preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0eng\\common\\Build.ps1\"\"\" -restore -build %*\"\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 265,
    "preview": "# Code of Conduct\r\n\r\nThis project has adopted the code of conduct defined by the Contributor Covenant\r\nto clarify expect"
  },
  {
    "path": "Directory.Build.props",
    "chars": 791,
    "preview": "<Project>\n\n  <Import Project=\"Sdk.props\" Sdk=\"Microsoft.DotNet.Arcade.Sdk\" />\n\n  <PropertyGroup>\n    <LangVersion>latest"
  },
  {
    "path": "Directory.Build.targets",
    "chars": 92,
    "preview": "<Project>\n\n  <Import Project=\"Sdk.targets\" Sdk=\"Microsoft.DotNet.Arcade.Sdk\" />\n\n</Project>\n"
  },
  {
    "path": "Directory.Packages.props",
    "chars": 1160,
    "preview": "<Project>\n\n  <PropertyGroup>\n    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n    <CentralPacka"
  },
  {
    "path": "LICENSE.TXT",
    "chars": 1115,
    "preview": "The MIT License (MIT)\n\nCopyright (c) .NET Foundation and Contributors\n\nAll rights reserved.\n\nPermission is hereby grante"
  },
  {
    "path": "NuGet.config",
    "chars": 524,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <clear />\n    <add key=\"dotnet-eng\" value="
  },
  {
    "path": "README.md",
    "chars": 11257,
    "preview": "# XHarness\n\nThis repo contains the code to build the **XHarness dotnet tool** and a **TestRunner library** that makes ru"
  },
  {
    "path": "SECURITY.md",
    "chars": 2865,
    "preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.3 BLOCK -->\r\n\r\n## Security\r\n\r\nMicrosoft takes the security of our software product"
  },
  {
    "path": "THIRD-PARTY-NOTICES.TXT",
    "chars": 392,
    "preview": ".NET Core uses third-party libraries or other resources that may be\ndistributed under licenses different than the .NET C"
  },
  {
    "path": "XHarness.slnx",
    "chars": 1919,
    "preview": "<Solution>\n  <Folder Name=\"/Solution Items/\">\n    <File Path=\".editorconfig\" />\n    <File Path=\"global.json\" />\n  </Fold"
  },
  {
    "path": "azure-pipelines-public.yml",
    "chars": 5507,
    "preview": "variables:\n- template: /eng/common-variables.yml\n- template: /eng/common/templates/variables/pool-providers.yml\n\n# CI an"
  },
  {
    "path": "azure-pipelines.yml",
    "chars": 2608,
    "preview": "variables:\n- template: /eng/common-variables.yml@self\n- template: /eng/common/templates-official/variables/pool-provider"
  },
  {
    "path": "build.sh",
    "chars": 516,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n\n# resolve $SOURCE until the file is no longer a symlink\nwhile [[ -h $so"
  },
  {
    "path": "decoded_output.xml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "docs/high-level-architecture.md",
    "chars": 2563,
    "preview": "# Overview\n\nThis document provides a high-level overview of the XHarness architecture, which is organized into two main "
  },
  {
    "path": "docs/integrity-check.md",
    "chars": 2775,
    "preview": "# Integrity check of 3rd party dependencies\n\n## NuGet dependencies\n\nAll NuGet dependencies are checked and verified by C"
  },
  {
    "path": "eng/Publishing.props",
    "chars": 265,
    "preview": "<Project>\n\n  <!-- We include mlaunch and adb binaries we didn't build and which do not need sympkgs -->\n  <PropertyGroup"
  },
  {
    "path": "eng/Signing.props",
    "chars": 554,
    "preview": "<Project>\n\n  <ItemGroup>\n    <FileSignInfo Include=\"mlaunch.dll\" CertificateName=\"3PartySHA2\" />\n    <FileSignInfo Inclu"
  },
  {
    "path": "eng/Version.Details.xml",
    "chars": 583,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Dependencies>\n  <ProductDependencies>\n  </ProductDependencies>\n  <ToolsetDepende"
  },
  {
    "path": "eng/Versions.props",
    "chars": 498,
    "preview": "<Project>\n  <PropertyGroup>\n    <!-- change the following places when changing the VersionPrefix:\n           - README.md"
  },
  {
    "path": "eng/common/AGENTS.md",
    "chars": 326,
    "preview": "# `eng/common`\n\nFiles under `eng/common` come from [Arcade](https://github.com/dotnet/arcade).\nEdits in `eng/common` wil"
  },
  {
    "path": "eng/common/BuildConfiguration/build-configuration.json",
    "chars": 55,
    "preview": "{\n  \"RetryCountLimit\": 1,\n  \"RetryByAnyError\": false\n}\n"
  },
  {
    "path": "eng/common/CIBuild.cmd",
    "chars": 140,
    "preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0Build.ps1\"\"\" -restore -build -test -sign -pa"
  },
  {
    "path": "eng/common/PSScriptAnalyzerSettings.psd1",
    "chars": 474,
    "preview": "@{\n    IncludeRules=@('PSAvoidUsingCmdletAliases',\n                   'PSAvoidUsingWMICmdlet',\n                   'PSAvo"
  },
  {
    "path": "eng/common/README.md",
    "chars": 1321,
    "preview": "# Don't touch this folder\n\n                uuuuuuuuuuuuuuuuuuuu\n              u\" uuuuuuuuuuuuuuuuuu \"u\n            u\" u$"
  },
  {
    "path": "eng/common/SetupNugetSources.ps1",
    "chars": 7849,
    "preview": "# This script adds internal feeds required to build commits that depend on internal package sources. For instance,\n# dot"
  },
  {
    "path": "eng/common/SetupNugetSources.sh",
    "chars": 7456,
    "preview": "#!/usr/bin/env bash\n\n# This script adds internal feeds required to build commits that depend on internal package sources"
  },
  {
    "path": "eng/common/build.cmd",
    "chars": 114,
    "preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0build.ps1\"\"\" %*\"\nexit /b %ErrorLevel%\n"
  },
  {
    "path": "eng/common/build.ps1",
    "chars": 6724,
    "preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n  [string][Alias('c')]$configuration = \"Debug\",\n  [string]$platform = $"
  },
  {
    "path": "eng/common/build.sh",
    "chars": 7342,
    "preview": "#!/usr/bin/env bash\n\n# Stop script if unbound variable found (use ${var:-} if intentional)\nset -u\n\n# Stop script if comm"
  },
  {
    "path": "eng/common/cibuild.sh",
    "chars": 537,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n\n# resolve $SOURCE until the file is no longer a symlink\nwhile [[ -h $so"
  },
  {
    "path": "eng/common/core-templates/job/job.yml",
    "chars": 9410,
    "preview": "parameters:\n# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs"
  },
  {
    "path": "eng/common/core-templates/job/onelocbuild.yml",
    "chars": 4813,
    "preview": "parameters:\n  # Optional: dependencies of the job\n  dependsOn: ''\n\n  # Optional: A defined YAML pool - https://docs.micr"
  },
  {
    "path": "eng/common/core-templates/job/publish-build-assets.yml",
    "chars": 9299,
    "preview": "parameters:\n  configuration: 'Debug'\n\n  # Optional: condition for the job to run\n  condition: ''\n\n  # Optional: 'true' i"
  },
  {
    "path": "eng/common/core-templates/job/renovate.yml",
    "chars": 7948,
    "preview": "# --------------------------------------------------------------------------------------\n# Renovate Bot Job Template\n# -"
  },
  {
    "path": "eng/common/core-templates/job/source-build.yml",
    "chars": 5214,
    "preview": "parameters:\n  # This template adds arcade-powered source-build to CI. The template produces a server job with a\n  # defa"
  },
  {
    "path": "eng/common/core-templates/job/source-index-stage1.yml",
    "chars": 1650,
    "preview": "parameters:\n  runAsPublic: false\n  sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Comma"
  },
  {
    "path": "eng/common/core-templates/jobs/jobs.yml",
    "chars": 5295,
    "preview": "parameters:\n  # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md\n  continueOnError: false\n\n  # O"
  },
  {
    "path": "eng/common/core-templates/jobs/source-build.yml",
    "chars": 1818,
    "preview": "parameters:\n  # This template adds arcade-powered source-build to CI. A job is created for each platform, as\n  # well as"
  },
  {
    "path": "eng/common/core-templates/post-build/common-variables.yml",
    "chars": 556,
    "preview": "variables:\n  - group: Publish-Build-Assets\n\n  # Whether the build is internal or not\n  - name: IsInternalBuild\n    value"
  },
  {
    "path": "eng/common/core-templates/post-build/post-build.yml",
    "chars": 12505,
    "preview": "parameters:\n# Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.\n# Publishing V"
  },
  {
    "path": "eng/common/core-templates/post-build/setup-maestro-vars.yml",
    "chars": 2879,
    "preview": "parameters:\n  BARBuildId: ''\n  PromoteToChannelIds: ''\n  is1ESPipeline: ''\n\nsteps:\n  - ${{ if eq(parameters.is1ESPipelin"
  },
  {
    "path": "eng/common/core-templates/stages/renovate.yml",
    "chars": 3639,
    "preview": "# --------------------------------------------------------------------------------------\n# Renovate Pipeline Template\n# "
  },
  {
    "path": "eng/common/core-templates/steps/cleanup-microbuild.yml",
    "chars": 925,
    "preview": "parameters:\n  # Enable cleanup tasks for MicroBuild\n  enableMicrobuild: false\n  # Enable cleanup tasks for MicroBuild on"
  },
  {
    "path": "eng/common/core-templates/steps/enable-internal-runtimes.yml",
    "chars": 1075,
    "preview": "# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'\n# "
  },
  {
    "path": "eng/common/core-templates/steps/enable-internal-sources.yml",
    "chars": 2301,
    "preview": "parameters:\n# This is the Azure federated service connection that we log into to get an access token.\n- name: nugetFeder"
  },
  {
    "path": "eng/common/core-templates/steps/generate-sbom.yml",
    "chars": 444,
    "preview": "parameters:\n  PackageVersion: unused\n  BuildDropPath: unused\n  PackageName: unused\n  ManifestDirPath: unused\n  IgnoreDir"
  },
  {
    "path": "eng/common/core-templates/steps/get-delegation-sas.yml",
    "chars": 1561,
    "preview": "parameters:\n- name: federatedServiceConnection\n  type: string\n- name: outputVariableName\n  type: string\n- name: expiryIn"
  },
  {
    "path": "eng/common/core-templates/steps/get-federated-access-token.yml",
    "chars": 1474,
    "preview": "parameters:\n- name: federatedServiceConnection\n  type: string\n- name: outputVariableName\n  type: string\n- name: is1ESPip"
  },
  {
    "path": "eng/common/core-templates/steps/install-microbuild-impl.yml",
    "chars": 935,
    "preview": "parameters:\n  - name: microbuildTaskInputs\n    type: object\n    default: {}\n\n  - name: microbuildEnv\n    type: object\n  "
  },
  {
    "path": "eng/common/core-templates/steps/install-microbuild.yml",
    "chars": 6336,
    "preview": "parameters:\n  # Enable install tasks for MicroBuild\n  enableMicrobuild: false\n  # Enable install tasks for MicroBuild on"
  },
  {
    "path": "eng/common/core-templates/steps/publish-build-artifacts.yml",
    "chars": 667,
    "preview": "parameters:\n- name: is1ESPipeline\n  type: boolean\n  default: false\n- name: args\n  type: object\n  default: {}\nsteps:\n- ${"
  },
  {
    "path": "eng/common/core-templates/steps/publish-logs.yml",
    "chars": 2826,
    "preview": "parameters:\n  StageLabel: ''\n  JobLabel: ''\n  CustomSensitiveDataList: ''\n  # A default - in case value from eng/common/"
  },
  {
    "path": "eng/common/core-templates/steps/publish-pipeline-artifacts.yml",
    "chars": 562,
    "preview": "parameters:\n- name: is1ESPipeline\n  type: boolean\n  default: false\n\n- name: args\n  type: object\n  default: {}  \n\nsteps:\n"
  },
  {
    "path": "eng/common/core-templates/steps/retain-build.yml",
    "chars": 1222,
    "preview": "parameters:\n  # Optional azure devops PAT with build execute permissions for the build's organization,\n  # only needed i"
  },
  {
    "path": "eng/common/core-templates/steps/send-to-helix.yml",
    "chars": 8338,
    "preview": "# Please remember to update the documentation if you make changes to these parameters!\nparameters:\n  HelixSource: 'pr/de"
  },
  {
    "path": "eng/common/core-templates/steps/source-build.yml",
    "chars": 3133,
    "preview": "parameters:\n  # This template adds arcade-powered source-build to CI.\n\n  # This is a 'steps' template, and is intended f"
  },
  {
    "path": "eng/common/core-templates/steps/source-index-stage1-publish.yml",
    "chars": 2051,
    "preview": "parameters:\n  sourceIndexUploadPackageVersion: 2.0.0-20250906.1\n  sourceIndexProcessBinlogPackageVersion: 1.0.1-20250906"
  },
  {
    "path": "eng/common/core-templates/variables/pool-providers.yml",
    "chars": 258,
    "preview": "parameters:\n  is1ESPipeline: false\n\nvariables:\n  - ${{ if eq(parameters.is1ESPipeline, 'true') }}:\n    - template: /eng/"
  },
  {
    "path": "eng/common/cross/armel/tizen/tizen.patch",
    "chars": 476,
    "preview": "diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so\n--- a/usr/lib/libc.so\t2016-12-30 23:00:08.284951863 +0900\n+++ b/usr/lib/l"
  },
  {
    "path": "eng/common/cross/build-android-rootfs.sh",
    "chars": 5426,
    "preview": "#!/usr/bin/env bash\nset -e\n__NDK_Version=r21\n\nusage()\n{\n    echo \"Creates a toolchain and sysroot used for cross-compili"
  },
  {
    "path": "eng/common/cross/build-rootfs.sh",
    "chars": 44269,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\nusage()\n{\n    echo \"Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] "
  },
  {
    "path": "eng/common/cross/install-debs.py",
    "chars": 13176,
    "preview": "#!/usr/bin/env python3\n\nimport argparse\nimport asyncio\nimport aiohttp\nimport gzip\nimport os\nimport re\nimport shutil\nimpo"
  },
  {
    "path": "eng/common/cross/riscv64/tizen/tizen.patch",
    "chars": 516,
    "preview": "diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so\n--- a/usr/lib64/libc.so\t2016-12-30 23:00:08.284951863 +0900\n+++ b/usr/lib"
  },
  {
    "path": "eng/common/cross/tizen-build-rootfs.sh",
    "chars": 2100,
    "preview": "#!/usr/bin/env bash\nset -e\n\nARCH=$1\nLINK_ARCH=$ARCH\n\ncase \"$ARCH\" in\n    arm)\n        TIZEN_ARCH=\"armv7hl\"\n        ;;\n  "
  },
  {
    "path": "eng/common/cross/tizen-fetch.sh",
    "chars": 4829,
    "preview": "#!/usr/bin/env bash\nset -e\n\nif [[ -z \"${VERBOSE// }\" ]] || [ \"$VERBOSE\" -ne \"$VERBOSE\" ] 2>/dev/null; then\n    VERBOSE=0"
  },
  {
    "path": "eng/common/cross/toolchain.cmake",
    "chars": 15494,
    "preview": "set(CROSS_ROOTFS $ENV{ROOTFS_DIR})\n\n# reset platform variables (e.g. cmake 3.25 sets LINUX=1)\nunset(LINUX)\nunset(FREEBSD"
  },
  {
    "path": "eng/common/darc-init.ps1",
    "chars": 1844,
    "preview": "param (\n    $darcVersion = $null,\n    $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=20"
  },
  {
    "path": "eng/common/darc-init.sh",
    "chars": 2412,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\ndarcVersion=''\nversionEndpoint='https://maestro.dot.net/api/assets/darc-"
  },
  {
    "path": "eng/common/dotnet-install.cmd",
    "chars": 101,
    "preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0dotnet-install.ps1\"\"\" %*\""
  },
  {
    "path": "eng/common/dotnet-install.ps1",
    "chars": 914,
    "preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n  [string] $verbosity = 'minimal',\n  [string] $architecture = '',\n  [st"
  },
  {
    "path": "eng/common/dotnet-install.sh",
    "chars": 2335,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n# resolve $source until the file is no longer a symlink\nwhile [[ -h \"$so"
  },
  {
    "path": "eng/common/dotnet.cmd",
    "chars": 225,
    "preview": "@echo off\n\n:: This script is used to install the .NET SDK.\n:: It will also invoke the SDK with any provided arguments.\n\n"
  },
  {
    "path": "eng/common/dotnet.ps1",
    "chars": 321,
    "preview": "# This script is used to install the .NET SDK.\n# It will also invoke the SDK with any provided arguments.\n\n. $PSScriptRo"
  },
  {
    "path": "eng/common/dotnet.sh",
    "chars": 805,
    "preview": "#!/usr/bin/env bash\n\n# This script is used to install the .NET SDK.\n# It will also invoke the SDK with any provided argu"
  },
  {
    "path": "eng/common/enable-cross-org-publishing.ps1",
    "chars": 584,
    "preview": "param(\n  [string] $token\n)\n\n\n. $PSScriptRoot\\pipeline-logging-functions.ps1\n\n# Write-PipelineSetVariable will no-op if a"
  },
  {
    "path": "eng/common/generate-locproject.ps1",
    "chars": 10088,
    "preview": "Param(\n    [Parameter(Mandatory=$true)][string] $SourcesDirectory,     # Directory where source files live; if using a L"
  },
  {
    "path": "eng/common/helixpublish.proj",
    "chars": 923,
    "preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
  },
  {
    "path": "eng/common/init-tools-native.cmd",
    "chars": 133,
    "preview": "@echo off\npowershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command \"& \"\"\"%~dp0init-tools-native.ps1\"\"\" %*\"\nexit /b"
  },
  {
    "path": "eng/common/init-tools-native.ps1",
    "chars": 7953,
    "preview": "<#\n.SYNOPSIS\nEntry point script for installing native tools\n\n.DESCRIPTION\nReads $RepoRoot\\global.json file to determine "
  },
  {
    "path": "eng/common/init-tools-native.sh",
    "chars": 7326,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\nscriptroot=\"$( cd -P \"$( dirname \"$source\" )\" && pwd )\"\n\nbase_uri='https"
  },
  {
    "path": "eng/common/internal/Directory.Build.props",
    "chars": 408,
    "preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
  },
  {
    "path": "eng/common/internal/NuGet.config",
    "chars": 339,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <clear />\n    <add key=\"dotnet-core-intern"
  },
  {
    "path": "eng/common/internal/Tools.csproj",
    "chars": 1579,
    "preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
  },
  {
    "path": "eng/common/internal-feed-operations.ps1",
    "chars": 4665,
    "preview": "param(\n  [Parameter(Mandatory=$true)][string] $Operation,\n  [string] $AuthToken,\n  [string] $CommitSha,\n  [string] $Repo"
  },
  {
    "path": "eng/common/internal-feed-operations.sh",
    "chars": 4395,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\n# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the \"darc-int-*\" feeds defined in NuGet.c"
  },
  {
    "path": "eng/common/loc/P22DotNetHtmlLocalization.lss",
    "chars": 1876,
    "preview": "<?xml version=\"1.0\"?>\n<LS_SETTINGS_FILE>\n  <LS_SETTINGS_DESCRIPTION>\n    <![CDATA[]]>\n  </LS_SETTINGS_DESCRIPTION>\n  <op"
  },
  {
    "path": "eng/common/msbuild.ps1",
    "chars": 571,
    "preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n  [string] $verbosity = 'minimal',\n  [bool] $warnAsError = $true,\n  [bo"
  },
  {
    "path": "eng/common/msbuild.sh",
    "chars": 1143,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n\n# resolve $source until the file is no longer a symlink\nwhile [[ -h \"$s"
  },
  {
    "path": "eng/common/native/CommonLibrary.psm1",
    "chars": 12103,
    "preview": "<#\n.SYNOPSIS\nHelper module to install an archive to a directory\n\n.DESCRIPTION\nHelper module to download and extract an a"
  },
  {
    "path": "eng/common/native/common-library.sh",
    "chars": 4171,
    "preview": "#!/usr/bin/env bash\n\nfunction GetNativeInstallDirectory {\n  local install_dir\n\n  if [[ -z $NETCOREENG_INSTALL_DIRECTORY "
  },
  {
    "path": "eng/common/native/init-compiler.sh",
    "chars": 4665,
    "preview": "#!/bin/sh\n#\n# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables\n#\n# NOTE: some scr"
  },
  {
    "path": "eng/common/native/init-distro-rid.sh",
    "chars": 3808,
    "preview": "#!/bin/sh\n\n# getNonPortableDistroRid\n#\n# Input:\n#   targetOs: (str)\n#   targetArch: (str)\n#   rootfsDir: (str)\n#\n# Retur"
  },
  {
    "path": "eng/common/native/init-os-and-arch.sh",
    "chars": 1876,
    "preview": "#!/bin/sh\n\n# Use uname to determine what the OS is.\nOSName=$(uname -s | tr '[:upper:]' '[:lower:]')\n\nif command -v getpr"
  },
  {
    "path": "eng/common/native/install-cmake-test.sh",
    "chars": 3010,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\nscriptroot=\"$( cd -P \"$( dirname \"$source\" )\" && pwd )\"\n\n. $scriptroot/c"
  },
  {
    "path": "eng/common/native/install-cmake.sh",
    "chars": 3005,
    "preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\nscriptroot=\"$( cd -P \"$( dirname \"$source\" )\" && pwd )\"\n\n. $scriptroot/c"
  },
  {
    "path": "eng/common/native/install-dependencies.sh",
    "chars": 2136,
    "preview": "#!/bin/sh\n\nset -e\n\n# This is a simple script primarily used for CI to install necessary dependencies\n#\n# Usage:\n#\n# ./in"
  },
  {
    "path": "eng/common/native/install-tool.ps1",
    "chars": 4286,
    "preview": "<#\n.SYNOPSIS\nInstall native tool\n\n.DESCRIPTION\nInstall cmake native tool from Azure blob storage\n\n.PARAMETER InstallPath"
  },
  {
    "path": "eng/common/pipeline-logging-functions.ps1",
    "chars": 8460,
    "preview": "# Source for this file was taken from https://github.com/microsoft/azure-pipelines-task-lib/blob/11c9439d4af17e6475d9fe0"
  },
  {
    "path": "eng/common/pipeline-logging-functions.sh",
    "chars": 3864,
    "preview": "#!/usr/bin/env bash\n\nfunction Write-PipelineTelemetryError {\n  local telemetry_category=''\n  local force=false\n  local f"
  },
  {
    "path": "eng/common/post-build/check-channel-consistency.ps1",
    "chars": 2176,
    "preview": "param(\n  [Parameter(Mandatory=$true)][string] $PromoteToChannels,            # List of channels that the build should be"
  },
  {
    "path": "eng/common/post-build/nuget-validation.ps1",
    "chars": 763,
    "preview": "# This script validates NuGet package metadata information using this \n# tool: https://github.com/NuGet/NuGetGallery/tre"
  },
  {
    "path": "eng/common/post-build/nuget-verification.ps1",
    "chars": 4301,
    "preview": "<#\n.SYNOPSIS\n    Verifies that Microsoft NuGet packages have proper metadata.\n.DESCRIPTION\n    Downloads a verification "
  },
  {
    "path": "eng/common/post-build/publish-using-darc.ps1",
    "chars": 2489,
    "preview": "param(\n  [Parameter(Mandatory=$true)][int] $BuildId,\n  [Parameter(Mandatory=$true)][int] $PublishingInfraVersion,\n  [Par"
  },
  {
    "path": "eng/common/post-build/redact-logs.ps1",
    "chars": 3098,
    "preview": "[CmdletBinding(PositionalBinding=$False)]\nparam(\n  [Parameter(Mandatory=$true, Position=0)][string] $InputPath,\n  [Param"
  },
  {
    "path": "eng/common/post-build/symbols-validation.ps1",
    "chars": 11648,
    "preview": "param(\n  [Parameter(Mandatory = $true)][string] $InputPath, # Full path to directory where NuGet packages to be checked "
  },
  {
    "path": "eng/common/renovate.env",
    "chars": 2299,
    "preview": "# Renovate Global Configuration\n# https://docs.renovatebot.com/self-hosted-configuration/\n#\n# NOTE: This file uses bash/"
  },
  {
    "path": "eng/common/retain-build.ps1",
    "chars": 1373,
    "preview": "\nParam(\n[Parameter(Mandatory=$true)][int] $buildId,\n[Parameter(Mandatory=$true)][string] $azdoOrgUri, \n[Parameter(Mandat"
  },
  {
    "path": "eng/common/sdk-task.ps1",
    "chars": 2826,
    "preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n  [string] $configuration = 'Debug',\n  [string] $task,\n  [string] $verb"
  },
  {
    "path": "eng/common/sdk-task.sh",
    "chars": 2944,
    "preview": "#!/usr/bin/env bash\n\nshow_usage() {\n    echo \"Common settings:\"\n    echo \"  --task <value>           Name of Arcade task"
  },
  {
    "path": "eng/common/template-guidance.md",
    "chars": 7302,
    "preview": "# Overview\n\nArcade provides templates for public (`/templates`) and 1ES pipeline templates (`/templates-official`) scena"
  },
  {
    "path": "eng/common/templates/job/job.yml",
    "chars": 4069,
    "preview": "parameters: \n  enablePublishBuildArtifacts: false\n  runAsPublic: false\n# CG related params, unused now and can eventuall"
  },
  {
    "path": "eng/common/templates/job/onelocbuild.yml",
    "chars": 197,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/onelocbuild.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ each pa"
  },
  {
    "path": "eng/common/templates/job/publish-build-assets.yml",
    "chars": 206,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/publish-build-assets.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${"
  },
  {
    "path": "eng/common/templates/job/source-build.yml",
    "chars": 198,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/source-build.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ each p"
  },
  {
    "path": "eng/common/templates/job/source-index-stage1.yml",
    "chars": 205,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/source-index-stage1.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{"
  },
  {
    "path": "eng/common/templates/jobs/jobs.yml",
    "chars": 191,
    "preview": "jobs:\n- template: /eng/common/core-templates/jobs/jobs.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ each paramete"
  },
  {
    "path": "eng/common/templates/jobs/source-build.yml",
    "chars": 198,
    "preview": "jobs:\n- template: /eng/common/core-templates/jobs/source-build.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ each "
  },
  {
    "path": "eng/common/templates/post-build/common-variables.yml",
    "chars": 248,
    "preview": "variables:\n- template: /eng/common/core-templates/post-build/common-variables.yml\n  parameters:\n    # Specifies whether "
  },
  {
    "path": "eng/common/templates/post-build/post-build.yml",
    "chars": 239,
    "preview": "stages:\n- template: /eng/common/core-templates/post-build/post-build.yml\n  parameters:\n    # Specifies whether to use 1E"
  },
  {
    "path": "eng/common/templates/post-build/setup-maestro-vars.yml",
    "chars": 246,
    "preview": "steps:\n- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml\n  parameters:\n    # Specifies whether to"
  },
  {
    "path": "eng/common/templates/steps/enable-internal-runtimes.yml",
    "chars": 389,
    "preview": "# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'\n# "
  },
  {
    "path": "eng/common/templates/steps/enable-internal-sources.yml",
    "chars": 211,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/enable-internal-sources.yml\n  parameters:\n    is1ESPipeline: false\n\n"
  },
  {
    "path": "eng/common/templates/steps/generate-sbom.yml",
    "chars": 202,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/generate-sbom.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ ea"
  },
  {
    "path": "eng/common/templates/steps/get-delegation-sas.yml",
    "chars": 207,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/get-delegation-sas.yml\n  parameters:\n    is1ESPipeline: false\n\n    $"
  },
  {
    "path": "eng/common/templates/steps/get-federated-access-token.yml",
    "chars": 214,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/get-federated-access-token.yml\n  parameters:\n    is1ESPipeline: fals"
  },
  {
    "path": "eng/common/templates/steps/publish-build-artifacts.yml",
    "chars": 1140,
    "preview": "parameters:\n- name: is1ESPipeline\n  type: boolean\n  default: false\n\n- name: displayName\n  type: string\n  default: 'Publi"
  },
  {
    "path": "eng/common/templates/steps/publish-logs.yml",
    "chars": 201,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/publish-logs.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ eac"
  },
  {
    "path": "eng/common/templates/steps/publish-pipeline-artifacts.yml",
    "chars": 1262,
    "preview": "parameters:\n- name: is1ESPipeline\n  type: boolean\n  default: false\n\n- name: args\n  type: object\n  default: {}\n\nsteps:\n- "
  },
  {
    "path": "eng/common/templates/steps/retain-build.yml",
    "chars": 201,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/retain-build.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ eac"
  },
  {
    "path": "eng/common/templates/steps/send-to-helix.yml",
    "chars": 202,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/send-to-helix.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ ea"
  },
  {
    "path": "eng/common/templates/steps/source-build.yml",
    "chars": 201,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/source-build.yml\n  parameters:\n    is1ESPipeline: false\n\n    ${{ eac"
  },
  {
    "path": "eng/common/templates/steps/source-index-stage1-publish.yml",
    "chars": 216,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/source-index-stage1-publish.yml\n  parameters:\n    is1ESPipeline: fal"
  },
  {
    "path": "eng/common/templates/steps/vmr-sync.yml",
    "chars": 6532,
    "preview": "### These steps synchronize new code from product repositories into the VMR (https://github.com/dotnet/dotnet).\n### They"
  },
  {
    "path": "eng/common/templates/variables/pool-providers.yml",
    "chars": 2855,
    "preview": "# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool"
  },
  {
    "path": "eng/common/templates/vmr-build-pr.yml",
    "chars": 1391,
    "preview": "# This pipeline is used for running the VMR verification of the PR changes in repo-level PRs.\n#\n# It will run a full set"
  },
  {
    "path": "eng/common/templates-official/job/job.yml",
    "chars": 4618,
    "preview": "parameters:\n  runAsPublic: false\n# Sbom related params, unused now and can eventually be removed\n  enableSbom: unused\n  "
  },
  {
    "path": "eng/common/templates-official/job/onelocbuild.yml",
    "chars": 196,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/onelocbuild.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ each par"
  },
  {
    "path": "eng/common/templates-official/job/publish-build-assets.yml",
    "chars": 205,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/publish-build-assets.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{"
  },
  {
    "path": "eng/common/templates-official/job/source-build.yml",
    "chars": 197,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/source-build.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ each pa"
  },
  {
    "path": "eng/common/templates-official/job/source-index-stage1.yml",
    "chars": 204,
    "preview": "jobs:\n- template: /eng/common/core-templates/job/source-index-stage1.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ "
  },
  {
    "path": "eng/common/templates-official/jobs/jobs.yml",
    "chars": 190,
    "preview": "jobs:\n- template: /eng/common/core-templates/jobs/jobs.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ each parameter"
  },
  {
    "path": "eng/common/templates-official/jobs/source-build.yml",
    "chars": 197,
    "preview": "jobs:\n- template: /eng/common/core-templates/jobs/source-build.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ each p"
  },
  {
    "path": "eng/common/templates-official/post-build/common-variables.yml",
    "chars": 247,
    "preview": "variables:\n- template: /eng/common/core-templates/post-build/common-variables.yml\n  parameters:\n    # Specifies whether "
  },
  {
    "path": "eng/common/templates-official/post-build/post-build.yml",
    "chars": 239,
    "preview": "stages:\n- template: /eng/common/core-templates/post-build/post-build.yml\n  parameters:\n    # Specifies whether to use 1E"
  },
  {
    "path": "eng/common/templates-official/post-build/setup-maestro-vars.yml",
    "chars": 245,
    "preview": "steps:\n- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml\n  parameters:\n    # Specifies whether to"
  },
  {
    "path": "eng/common/templates-official/steps/enable-internal-runtimes.yml",
    "chars": 387,
    "preview": "# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'\n# "
  },
  {
    "path": "eng/common/templates-official/steps/enable-internal-sources.yml",
    "chars": 210,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/enable-internal-sources.yml\n  parameters:\n    is1ESPipeline: true\n\n "
  },
  {
    "path": "eng/common/templates-official/steps/generate-sbom.yml",
    "chars": 201,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/generate-sbom.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ eac"
  },
  {
    "path": "eng/common/templates-official/steps/get-delegation-sas.yml",
    "chars": 206,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/get-delegation-sas.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${"
  },
  {
    "path": "eng/common/templates-official/steps/get-federated-access-token.yml",
    "chars": 213,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/get-federated-access-token.yml\n  parameters:\n    is1ESPipeline: true"
  },
  {
    "path": "eng/common/templates-official/steps/publish-build-artifacts.yml",
    "chars": 1156,
    "preview": "parameters:\n- name: displayName\n  type: string\n  default: 'Publish to Build Artifact'\n\n- name: condition\n  type: string\n"
  },
  {
    "path": "eng/common/templates-official/steps/publish-logs.yml",
    "chars": 200,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/publish-logs.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ each"
  },
  {
    "path": "eng/common/templates-official/steps/publish-pipeline-artifacts.yml",
    "chars": 1089,
    "preview": "parameters:\n- name: is1ESPipeline\n  type: boolean\n  default: true\n\n- name: args\n  type: object\n  default: {}\n\nsteps:\n- $"
  },
  {
    "path": "eng/common/templates-official/steps/retain-build.yml",
    "chars": 200,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/retain-build.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ each"
  },
  {
    "path": "eng/common/templates-official/steps/send-to-helix.yml",
    "chars": 201,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/send-to-helix.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ eac"
  },
  {
    "path": "eng/common/templates-official/steps/source-build.yml",
    "chars": 200,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/source-build.yml\n  parameters:\n    is1ESPipeline: true\n\n    ${{ each"
  },
  {
    "path": "eng/common/templates-official/steps/source-index-stage1-publish.yml",
    "chars": 215,
    "preview": "steps:\n- template: /eng/common/core-templates/steps/source-index-stage1-publish.yml\n  parameters:\n    is1ESPipeline: tru"
  },
  {
    "path": "eng/common/templates-official/variables/pool-providers.yml",
    "chars": 2236,
    "preview": "# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool"
  },
  {
    "path": "eng/common/tools.ps1",
    "chars": 38831,
    "preview": "# Initialize variables if they aren't already defined.\n# These may be defined as parameters of the importing script, or "
  },
  {
    "path": "eng/common/tools.sh",
    "chars": 23651,
    "preview": "#!/usr/bin/env bash\n\n# Initialize variables if they aren't already defined.\n\n# CI mode - set to true on CI server for PR"
  },
  {
    "path": "eng/common/vmr-sync.ps1",
    "chars": 4394,
    "preview": "<#\n.SYNOPSIS\n\nThis script is used for synchronizing the current repository into a local VMR.\nIt pulls the current reposi"
  },
  {
    "path": "eng/common/vmr-sync.sh",
    "chars": 6112,
    "preview": "#!/bin/bash\n\n### This script is used for synchronizing the current repository into a local VMR.\n### It pulls the current"
  },
  {
    "path": "eng/common-variables.yml",
    "chars": 825,
    "preview": "variables:\r\n  # Cannot use key:value syntax in root defined variables\r\n  - name: _TeamName\r\n    value: DotNetCore\r\n  - n"
  },
  {
    "path": "eng/e2e-test.yml",
    "chars": 1606,
    "preview": "parameters:\n  # This template tests a given .proj file using the Helix SDK\n  name: ''\n  displayName: ''\n  testProject: '"
  },
  {
    "path": "eng/pipelines/apiscan-steps.yml",
    "chars": 1120,
    "preview": "steps:\n  - script: dir $(Build.SourcesDirectory)\\artifacts\\bin\\Microsoft.DotNet.XHarness.CLI /s\n    displayName: List CL"
  },
  {
    "path": "es-metadata.yml",
    "chars": 208,
    "preview": "schemaVersion: 0.0.1\nisProduction: true\naccountableOwners:\n  service: 97d8e3f4-a4c4-4c48-8ce1-d6b3342c16f1\nrouting:\n  de"
  },
  {
    "path": "global.json",
    "chars": 205,
    "preview": "{\n  \"tools\": {\n    \"dotnet\": \"11.0.100-preview.4.26210.111\"\n  },\n  \"msbuild-sdks\": {\n    \"Microsoft.DotNet.Arcade.Sdk\": "
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/AdbExitCodes.cs",
    "chars": 581,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/AdbFailureException.cs",
    "chars": 390,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/AdbRunner.cs",
    "chars": 58109,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you unde"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/AndroidDevice.cs",
    "chars": 719,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/ApkHelper.cs",
    "chars": 1225,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.IO.Compression;\nusing System.Linq;\n\nnames"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/Execution/AdbProcessManager.cs",
    "chars": 3641,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Sys"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/Execution/AdbReportFactory.cs",
    "chars": 711,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/Execution/Api23AndOlderReportManager.cs",
    "chars": 1363,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/Execution/IAdbProcessManager.cs",
    "chars": 1697,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/Execution/IReportManager.cs",
    "chars": 379,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/Execution/NewReportManager.cs",
    "chars": 1058,
    "preview": "using System;\nusing System.Threading;\nusing Microsoft.Extensions.Logging;\n\nnamespace Microsoft.DotNet.XHarness.Android."
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/InstrumentationRunner.cs",
    "chars": 12408,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Android/Microsoft.DotNet.XHarness.Android.csproj",
    "chars": 285,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>$(XHarnessNetTFMs)</TargetFrameworks>\n  </Pro"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppInstaller.cs",
    "chars": 2681,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunner.cs",
    "chars": 11424,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerBase.cs",
    "chars": 14715,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerFactory.cs",
    "chars": 2037,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTester.cs",
    "chars": 33723,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTesterFactory.cs",
    "chars": 3255,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppUninstaller.cs",
    "chars": 2159,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/CommunicationChannel.cs",
    "chars": 589,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  },
  {
    "path": "src/Microsoft.DotNet.XHarness.Apple/CrashSnapshotReporterFactory.cs",
    "chars": 1125,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
  }
]

// ... and 451 more files (download for full content)

About this extraction

This page contains the full source code of the dotnet/xharness GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 651 files (6.5 MB), approximately 1.7M tokens, and a symbol index with 2389 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!