Full Code of dotnet/windowsdesktop for AI

main 6b44032ba4da cached
221 files
714.5 KB
204.3k tokens
37 symbols
1 requests
Download .txt
Showing preview only (787K chars total). Download the full file or copy to clipboard to get everything.
Repository: dotnet/windowsdesktop
Branch: main
Commit: 6b44032ba4da
Files: 221
Total size: 714.5 KB

Directory structure:
gitextract_jfd2h48b/

├── .azuredevops/
│   └── dependabot.yml
├── .config/
│   └── 1espt/
│       └── PipelineAutobaseliningConfig.yml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01_bug_report.md
│   │   └── config.yml
│   ├── policies/
│   │   └── resourceManagement.yml
│   └── workflows/
│       ├── backport.yml
│       └── inter-branch-merge-flow.yml
├── .gitignore
├── Build.proj
├── CODE-OF-CONDUCT.md
├── CODEOWNERS
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE
├── NuGet.config
├── README.md
├── WindowsDesktop.sln
├── azure-pipelines-PR.yml
├── azure-pipelines.yml
├── build.cmd
├── build.sh
├── eng/
│   ├── Build.props
│   ├── Publishing.props
│   ├── Signing.props
│   ├── Version.Details.props
│   ├── Version.Details.xml
│   ├── Versions.props
│   ├── common/
│   │   ├── 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/
│   │   │   ├── arm/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── arm64/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── 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
│   ├── pipelines/
│   │   ├── jobs/
│   │   │   └── windows-build-PR.yml
│   │   └── tsaoptions.json
│   └── sdl-tsa-vars.config
├── es-metadata.yml
├── github-merge-flow.jsonc
├── global.json
└── src/
    ├── Microsoft.Windows.Compatibility/
    │   ├── package/
    │   │   ├── Directory.Build.props
    │   │   └── runtime.native.System.IO.Ports.csproj
    │   └── src/
    │       ├── Microsoft.Windows.Compatibility.csproj
    │       ├── PACKAGE.md
    │       └── README.md
    ├── Microsoft.WindowsDesktop.App.Internal/
    │   └── Microsoft.WindowsDesktop.App.Internal.proj
    └── windowsdesktop/
        ├── src/
        │   ├── Directory.Build.props
        │   ├── Microsoft.WindowsDesktop.App.Ref.stub.proj
        │   ├── bundle/
        │   │   ├── Wix.props
        │   │   ├── Wix.targets
        │   │   ├── bundle.thm
        │   │   ├── bundle.wixproj
        │   │   ├── bundle.wxs
        │   │   ├── dotnet-packages.wxs
        │   │   ├── dummyeula.rtf
        │   │   └── theme/
        │   │       ├── 1028/
        │   │       │   └── thm.wxl
        │   │       ├── 1029/
        │   │       │   └── thm.wxl
        │   │       ├── 1031/
        │   │       │   └── thm.wxl
        │   │       ├── 1033/
        │   │       │   └── thm.wxl
        │   │       ├── 1036/
        │   │       │   └── thm.wxl
        │   │       ├── 1040/
        │   │       │   └── thm.wxl
        │   │       ├── 1041/
        │   │       │   └── thm.wxl
        │   │       ├── 1042/
        │   │       │   └── thm.wxl
        │   │       ├── 1045/
        │   │       │   └── thm.wxl
        │   │       ├── 1046/
        │   │       │   └── thm.wxl
        │   │       ├── 1049/
        │   │       │   └── thm.wxl
        │   │       ├── 1055/
        │   │       │   └── thm.wxl
        │   │       ├── 2052/
        │   │       │   └── thm.wxl
        │   │       └── 3082/
        │   │           └── thm.wxl
        │   └── sfx/
        │       ├── Directory.Build.props
        │       ├── Directory.Build.targets
        │       ├── Microsoft.WindowsDesktop.App.Ref.sfxproj
        │       ├── Microsoft.WindowsDesktop.App.Runtime.sfxproj
        │       ├── PACKAGE.md
        │       ├── PackageOverrides.txt
        │       └── WindowsForms.Packaging.targets
        └── tests/
            ├── Directory.Build.targets
            ├── Microsoft.WindowsDesktop.App.Tests.csproj
            ├── NuGetArtifactTester.cs
            ├── RepoDirectoriesProvider.cs
            └── WindowsDesktopNupkgTests.cs

================================================
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/1espt/PipelineAutobaseliningConfig.yml
================================================
## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/1espt-autobaselining] for more details.

pipelines:
  621:
    retail:
      source:
        credscan:
          lastModifiedDate: 2024-04-13
        eslint:
          lastModifiedDate: 2024-04-13
        psscriptanalyzer:
          lastModifiedDate: 2024-04-13
        armory:
          lastModifiedDate: 2024-04-13
      binary:
        credscan:
          lastModifiedDate: 2024-04-13
        binskim:
          lastModifiedDate: 2024-04-13
        spotbugs:
          lastModifiedDate: 2024-04-13


================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to:
#   automatically normalize line endings on check-in, and
#   convert to Windows-style line endings on check-out
###############################################################################
* text=auto encoding=UTF-8
*.sh text eol=lf

###############################################################################
# Set file behavior to:
#   treat as text, and
#   diff as C# source code
###############################################################################
*.cs                text        diff=csharp

###############################################################################
# Set file behavior to:
#   treat as text
###############################################################################
*.cmd               text
*.config            text
*.csproj            text
*.groovy            text
*.json              text
*.md                text
*.nuspec            text
*.pkgdef            text
*.proj              text
*.projitems         text
*.props             text
*.ps1               text
*.resx              text
*.ruleset           text
*.shproj            text
*.sln               text
*.targets           text
*.vb                text
*.vbproj            text
*.vcxproj           text
*.vcxproj.filters   text
*.vsct              text
*.vsixmanifest      text

###############################################################################
# Set file behavior to:
#   treat as binary
###############################################################################
*.png               binary
*.snk               binary


================================================
FILE: .github/ISSUE_TEMPLATE/01_bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

<!--This is just a template - feel free to delete any and all of it and replace as appropriate.-->

### Description

<!--
* Please share a clear and concise description of the problem.
* Include minimal steps to reproduce the problem if possible. E.g.: the smallest possible code snippet; or a small repo to clone, with steps to run it.
* What behavior are you seeing, and what behavior would you expect?
  -->

### Configuration

<!--
* Which version of .NET is the code running on?
* What OS and version, and what distro if applicable?
* What is the architecture (x64, x86, ARM, ARM64)?
* Do you know whether it is specific to that configuration?
  -->

### Regression?

<!--
* Did this work in a previous build or release of .NET Core, or from .NET Framework? If you can try a previous release or build to find out, that can help us narrow down the problem. If you don't know, that's OK.
  -->

### Other information

<!--
* Please include any relevant stack traces or error messages. If possible please include text as text rather than images (so it shows up in searches).
* If you have an idea where the problem might lie, let us know that here. Please include any pointers to code, relevant changes, or related issues you know of.
* Do you know of any workarounds?
  -->


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
contact_links:
  - name: Issue with Windows Forms
    url:  https://github.com/dotnet/winforms/issues/new/choose
    about: Please open issues relating to Windows Forms in dotnet/winforms.
  - name: Issue with WPF
    url:  https://github.com/dotnet/wpf/issues/new/choose
    about: Please open issues relating to WPF in dotnet/wpf.
  - name: Issue with .NET SDK
    url:  https://github.com/dotnet/sdk/issues/new/choose
    about: Please open issues relating to the .NET SDK in dotnet/sdk.
  - name: Issue with .NET runtime or core .NET libraries
    url:  https://github.com/dotnet/runtime/issues/new/choose
    about: Please open issues relating to the .NET runtime or core .NET libraries in dotnet/runtime.



================================================
FILE: .github/policies/resourceManagement.yml
================================================
name: GitOps.PullRequestIssueManagement
description: GitOps.PullRequestIssueManagement primitive

resource: repository

configuration:
  resourceManagementConfiguration:
    eventResponderTasks:
    - if:
      - payloadType: Pull_Request
      - isActivitySender:
          user: dotnet-maestro[bot]
          issueAuthor: False
      - isAction:
          action: Opened
      then:
      - approvePullRequest:
          comment: Approved by FabricService.
      description: Auto-approve maestro PRs



================================================
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/inter-branch-merge-flow.yml
================================================
name: Inter-branch merge workflow
on:
  push:
    branches:
      - release/**

permissions:
  contents: write
  pull-requests: write

jobs:
  Merge:
    uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main

================================================
FILE: .gitignore
================================================
# Arcade directories
.dotnet/
.packages/
.tools/
artifacts/

# MSBuild log files
msbuild.log
msbuild.err
msbuild.wrn

# Cross building rootfs
cross/rootfs/
cross/android-rootfs/
# add x86 as it is ignored in 'Build results'
!cross/x86

# Others
[Ss]tyle[Cc]op.*
node_modules/
*.metaproj
*.metaproj.tmp
bin.localpkg/

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk

# KDE directory preferences
.directory

### OSX ###
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear on external disk
.Spotlight-V100
.Trashes

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

# vim temporary files
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~

# Visual Studio Code
.vscode/

# Private test configuration and binaries.
config.ps1
**/IISApplications

# VS generated files
launchSettings.json

# Snapcraft files
.snapcraft
*.snap
parts/
prime/
stage/

################################################################################

## 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
*.suo
*.user
*.userosscache
*.sln.docstates

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

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

# 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

# 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/
**/Properties/launchSettings.json

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.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

# JustCode is a .NET coding add-in
.JustCode

# 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

# 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
# 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

# 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

# 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/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# 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/


================================================
FILE: Build.proj
================================================
<Project Sdk="Microsoft.Build.Traversal">

  <PropertyGroup>
    <TargetFramework>$(NetCurrent)</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <!-- Microsoft.WindowsDesktop.App shared framework -->
    <ProjectReference Include="src\windowsdesktop\src\sfx\**\*.sfxproj" />
    <!-- Windows Desktop Runtime Bundle -->
    <ProjectReference Include="src\windowsdesktop\src\bundle\**\*.wixproj" />
    <ProjectReference Include="src\windowsdesktop\tests\**\*.Tests.csproj" />

    <!-- Microsoft.Windows.Compatibility nuget meta package -->
    <ProjectReference Include="src\Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj" />
  </ItemGroup>

  <!-- Build the stub windowsdesktop targeting pack on non-Windows as its shipping version number gets used in sdk
       when generating the BundledSdkVersions.props to download windowsdesktop packs on Unix.
       Don't do this outside of the product build as this repository is fully buildable on Unix outside of a VMR vertical slice. -->
  <ItemGroup Condition="'$(OS)' != 'Windows_NT' and '$(DotNetBuild)' == 'true'">
    <ProjectReference Remove="@(ProjectReference)" />
    <ProjectReference Include="src\windowsdesktop\src\Microsoft.WindowsDesktop.App.Ref.stub.proj" />
  </ItemGroup>

  <ItemGroup>
    <!-- Internal sentil project for transporting a non-stable version. -->
    <ProjectReference Include="src\Microsoft.WindowsDesktop.App.Internal\Microsoft.WindowsDesktop.App.Internal.proj" />
  </ItemGroup>

</Project>


================================================
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: CODEOWNERS
================================================
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.

# These owners will automatically be added as reviewers to all pull requests.
*       @dotnet/dotnet-winforms


================================================
FILE: CONTRIBUTING.md
================================================
Contributing
============

See [Contributing](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/contributing.md) for information about coding styles, source structure, making pull requests, and more.


================================================
FILE: Directory.Build.props
================================================
<Project>
  <Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
  <PropertyGroup>
    <!-- WiX v5 Configuration -->
    <UseWix5>true</UseWix5>
    
    <!-- WiX v5 PDB Type Fix -->
    <WixToolsetCompilerPdbType>full</WixToolsetCompilerPdbType>
    <WixToolsetLinkerPdbType>full</WixToolsetLinkerPdbType>
    
    
  <RunWixpackTargets>true</RunWixpackTargets>
    
    <!-- Packaging properties -->
    <RepositoryUrl>https://github.com/dotnet/windowsdesktop</RepositoryUrl>
    <PackageProjectUrl>https://dot.net</PackageProjectUrl>
    <Owners>microsoft,dotnetframework</Owners>
    <IncludeSymbols>true</IncludeSymbols>
    <LicenseFile>$(MSBuildThisFileDirectory)LICENSE</LicenseFile>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
    <Copyright>$(CopyrightNetFoundation)</Copyright>
    <PackageThirdPartyNoticesFile>$(MSBuildThisFileDirectory)THIRD-PARTY-NOTICES.TXT</PackageThirdPartyNoticesFile>
    <PackageReleaseNotes>https://go.microsoft.com/fwlink/?LinkID=799421</PackageReleaseNotes>

    <!-- Set up handling of build warnings -->
    <WarningLevel>4</WarningLevel>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>

    <!-- Platform detection -->
    <!-- Map Platform property to TargetArchitecture, but skip AnyCPU which is not valid for WiX -->
    <TargetArchitecture Condition="'$(TargetArchitecture)' == '' AND '$(Platform)' != '' AND '$(Platform)' != 'AnyCPU'">$(Platform)</TargetArchitecture>
    <TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture>

    <!-- Only upgrade NuGetAudit warnings to errors for official builds. -->
    <WarningsNotAsErrors Condition="'$(OfficialBuild)' != 'true'">$(WarningsNotAsErrors);NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>

    <!-- Builds are portable by default -->
    <PortableBuild Condition="'$(PortableBuild)' != 'false'">true</PortableBuild>
  </PropertyGroup>

  <PropertyGroup>
    <OfficialBaseURL>https://builds.dotnet.microsoft.com/dotnet/</OfficialBaseURL>
    <!-- Allow overriding the public base URL for Unified Build scenarios to pull assets from a local build. -->
    <PublicBaseURL Condition="'$(PublicBaseURL)' == ''">https://ci.dot.net/public/</PublicBaseURL>
    <InternalBaseURL>https://ci.dot.net/internal/</InternalBaseURL>
    <!-- Allow overriding where installers are pulled in from previously completed jobs in Unified Build scenarios. -->
    <AddVersionToCrossArchitectureInstallerBasePath Condition="'$(CrossArchitectureInstallerBasePath)' != ''">true</AddVersionToCrossArchitectureInstallerBasePath>
    <CrossArchitectureInstallerBasePath Condition="'$(CrossArchitectureInstallerBasePath)' == ''">$(ArtifactsShippingPackagesDir)</CrossArchitectureInstallerBasePath>
  </PropertyGroup>

  <!-- Try various places to find the runtime. It's either released (use official version),
        public but un-released (use dotnetbuilds/public), or internal and unreleased (use dotnetbuilds/internal) -->
  <ItemGroup Condition="'$(DotNetBuild)' != 'true'">
    <RemoteAssetBaseURL Include="$(OfficialBaseURL)" />
    <RemoteAssetBaseURL Include="$(PublicBaseURL)" />
    <!-- Include the token here as we'll generate the URLs to download based on this item group. -->
    <RemoteAssetBaseURL Include="$(InternalBaseURL)"
                        Condition=" '$(DotnetRuntimeSourceFeedKey)' != '' ">
      <token>$(DotnetRuntimeSourceFeedKey)</token>
    </RemoteAssetBaseURL>
  </ItemGroup>

  <!--
    Only try downloading from the "public" base URL when doing a vertical build.
    In a vertical build, the public URL will be overwritten to point to local build artifacts.
  -->
  <ItemGroup Condition="'$(DotNetBuild)' == 'true'">
    <!-- MSBuild removes the '//' slashes when passing PublicBaseURL from the outer to the inner build. -->
    <RemoteAssetBaseURL Condition="$(PublicBaseURL.StartsWith('file:')) and '$(OS)' != 'Windows_NT'" Include="$([System.Text.RegularExpressions.Regex]::Replace('$(PublicBaseURL)', '%28file:\/{1,}%29%28.+%29', 'file:///%242'))" />
    <RemoteAssetBaseURL Condition="!$(PublicBaseURL.StartsWith('file:')) or '$(OS)' == 'Windows_NT'" Include="$(PublicBaseURL)" />
  </ItemGroup>

</Project>


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

  <Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
 
  <PropertyGroup>
    <!--
      Define this here (not just in Versions.props) because the SDK resets it
      unconditionally in Microsoft.NETCoreSdk.BundledVersions.props.
    -->
    <NETCoreAppMaximumVersion>$(MajorVersion).$(MinorVersion)</NETCoreAppMaximumVersion>
  </PropertyGroup>

</Project>


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

  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
    <!-- Using multiple feeds isn't supported by Maestro: https://github.com/dotnet/arcade/issues/14155. -->
    <NoWarn>$(NoWarn);NU1507</NoWarn>
  </PropertyGroup>

  <ItemGroup>
    <!-- Arcade dependencies -->
    <PackageVersion Include="Microsoft.DotNet.Build.Tasks.Archives" Version="$(MicrosoftDotNetBuildTasksArchivesVersion)" />
    <PackageVersion Include="Microsoft.DotNet.Build.Tasks.Installers" Version="$(MicrosoftDotNetBuildTasksInstallersVersion)" />
    <PackageVersion Include="Microsoft.DotNet.Build.Tasks.Templating" Version="$(MicrosoftDotNetBuildTasksTemplatingVersion)" />

    <!-- CoreFx dependencies -->
    <PackageVersion Include="System.Data.DataSetExtensions" Version="$(SystemDataDataSetExtensionsVersion)" />
    <PackageVersion Include="System.Data.SqlClient" Version="$(SystemDataSqlClientVersion)" />
    <PackageVersion Include="System.Reflection.Emit.ILGeneration" Version="$(SystemReflectionEmitILGenerationVersion)" />
    <PackageVersion Include="System.Reflection.Emit.Lightweight" Version="$(SystemReflectionEmitLightweightVersion)" />
    <PackageVersion Include="System.Reflection.Emit" Version="$(SystemReflectionEmitVersion)" />

    <!-- NuGet dependencies -->
    <PackageVersion Include="NuGet.Packaging" Version="$(NuGetPackagingVersion)" />

    <!-- Runtime dependencies -->
    <PackageVersion Include="Microsoft.Win32.Registry.AccessControl" Version="$(MicrosoftWin32RegistryAccessControlVersion)" />
    <PackageVersion Include="Microsoft.Win32.Registry" Version="$(MicrosoftWin32RegistryVersion)" />
    <PackageVersion Include="Microsoft.Win32.SystemEvents" Version="$(MicrosoftWin32SystemEventsVersion)" />
    <PackageVersion Include="System.CodeDom" Version="$(SystemCodeDomVersion)" />
    <PackageVersion Include="System.ComponentModel.Composition.Registration" Version="$(SystemComponentModelCompositionRegistrationVersion)" />
    <PackageVersion Include="System.ComponentModel.Composition" Version="$(SystemComponentModelCompositionVersion)" />
    <PackageVersion Include="System.Configuration.ConfigurationManager" Version="$(SystemConfigurationConfigurationManagerVersion)" />
    <PackageVersion Include="System.Data.Odbc" Version="$(SystemDataOdbcVersion)" />
    <PackageVersion Include="System.Data.OleDb" Version="$(SystemDataOleDbVersion)" />
    <PackageVersion Include="System.Diagnostics.EventLog" Version="$(SystemDiagnosticsEventLogVersion)" />
    <PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="$(SystemDiagnosticsPerformanceCounterVersion)" />
    <PackageVersion Include="System.DirectoryServices.AccountManagement" Version="$(SystemDirectoryServicesAccountManagementVersion)" />
    <PackageVersion Include="System.DirectoryServices.Protocols" Version="$(SystemDirectoryServicesProtocolsVersion)" />
    <PackageVersion Include="System.DirectoryServices" Version="$(SystemDirectoryServicesVersion)" />
    <PackageVersion Include="System.IO.FileSystem.AccessControl" Version="$(SystemIOFileSystemAccessControlVersion)" />
    <PackageVersion Include="System.IO.Packaging" Version="$(SystemIOPackagingVersion)" />
    <PackageVersion Include="System.IO.Pipes.AccessControl" Version="$(SystemIOPipesAccessControlVersion)" />
    <PackageVersion Include="System.IO.Ports" Version="$(SystemIOPortsVersion)" />
    <PackageVersion Include="System.Management" Version="$(SystemManagementVersion)" />
    <PackageVersion Include="System.Reflection.Context" Version="$(SystemReflectionContextVersion)" />
    <PackageVersion Include="System.Runtime.Caching" Version="$(SystemRuntimeCachingVersion)" />
    <PackageVersion Include="System.Security.AccessControl" Version="$(SystemSecurityAccessControlVersion)" />
    <PackageVersion Include="System.Security.Cryptography.Cng" Version="$(SystemSecurityCryptographyCngVersion)" />
    <PackageVersion Include="System.Security.Cryptography.Pkcs" Version="$(SystemSecurityCryptographyPkcsVersion)" />
    <PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="$(SystemSecurityCryptographyProtectedDataVersion)" />
    <PackageVersion Include="System.Security.Cryptography.Xml" Version="$(SystemSecurityCryptographyXmlVersion)" />
    <PackageVersion Include="System.Security.Permissions" Version="$(SystemSecurityPermissionsVersion)" />
    <PackageVersion Include="System.Security.Principal.Windows" Version="$(SystemSecurityPrincipalWindowsVersion)" />
    <PackageVersion Include="System.ServiceModel.Syndication" Version="$(SystemServiceModelSyndicationVersion)" />
    <PackageVersion Include="System.ServiceProcess.ServiceController" Version="$(SystemServiceProcessServiceControllerVersion)" />
    <PackageVersion Include="System.Speech" Version="$(SystemSpeechVersion)" />
    <PackageVersion Include="System.Text.Encoding.CodePages" Version="$(SystemTextEncodingCodePagesVersion)" />
    <PackageVersion Include="System.Threading.AccessControl" Version="$(SystemThreadingAccessControlVersion)" />

    <!-- WCF dependencies -->
    <PackageVersion Include="System.ServiceModel.Http" Version="$(SystemServiceModelVersion)" />
    <PackageVersion Include="System.ServiceModel.NetTcp" Version="$(SystemServiceModelVersion)" />
    <PackageVersion Include="System.ServiceModel.Primitives" Version="$(SystemServiceModelVersion)" />
    <PackageVersion Include="System.Web.Services.Description" Version="$(SystemServiceModelVersion)" />

    <!-- WinForms dependencies -->
    <PackageVersion Include="Microsoft.Private.Winforms" Version="$(MicrosoftPrivateWinformsVersion)" />
    <PackageVersion Include="System.Drawing.Common" Version="$(SystemDrawingCommonVersion)" />

    <!-- WPF dependencies-->
    <PackageVersion Include="Microsoft.DotNet.Wpf.GitHub" Version="$(MicrosoftDotNetWpfGitHubVersion)" />
    <PackageVersion Include="Microsoft.Internal.Runtime.WindowsDesktop.Transport" Version="$(MicrosoftInternalRuntimeWindowsDesktopTransportVersion)" />

    <!-- WiX dependencies -->
    <PackageVersion Include="Microsoft.Wix" Version="$(MicrosoftWixToolsetSdkVersion)" />
    <PackageVersion Include="Microsoft.WixToolset.Bal.wixext" Version="$(MicrosoftWixToolsetSdkVersion)" />
    <PackageVersion Include="Microsoft.WixToolset.Dependency.wixext" Version="$(MicrosoftWixToolsetSdkVersion)" />
    <PackageVersion Include="Microsoft.WixToolset.Heat" Version="$(MicrosoftWixToolsetSdkVersion)" />
    <PackageVersion Include="Microsoft.WixToolset.UI.wixext" Version="$(MicrosoftWixToolsetSdkVersion)" />
    <PackageVersion Include="Microsoft.WixToolset.Util.wixext" Version="$(MicrosoftWixToolsetSdkVersion)" />
    
  </ItemGroup>

</Project>


================================================
FILE: LICENSE
================================================
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>
  <!-- Don't use any higher level config files.
       Our builds need to be isolated from user/machine state -->
  <fallbackPackageFolders>
    <clear />
  </fallbackPackageFolders>
  <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="dotnet9" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9/nuget/v3/index.json" />
    <add key="dotnet9-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9-transport/nuget/v3/index.json" />
    <add key="dotnet10" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" />
    <add key="dotnet10-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json" />
    <add key="dotnet11" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet11/nuget/v3/index.json" />
    <add key="dotnet11-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet11-transport/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>
    <clear />
  </disabledPackageSources>
</configuration>


================================================
FILE: README.md
================================================
# .NET Windows Desktop Runtime

This repo contains the code to build the .NET Windows Desktop Runtime for all
supported platforms.

## Getting started

* [.NET 9 SDK](https://dotnet.microsoft.com/en-us/download/dotnet)
* [Windows Forms repository](https://github.com/dotnet/winforms)
* [WPF repository](https://github.com/dotnet/wpf)

## How to Engage, Contribute and Provide Feedback

Some of the best ways to contribute are to try things out, file bugs, join in
design conversations, and fix issues.

* This repo defines [contributing guidelines](CONTRIBUTING.md) and also follows
  the more general [.NET Core contributing
  guide](https://github.com/dotnet/runtime/blob/master/CONTRIBUTING.md).
* If you have a question or have found a bug, [file an
  issue](https://github.com/dotnet/windowsdesktop/issues/new).

### Reporting security issues and security bugs

Security issues and bugs should be reported privately, via email, to the
Microsoft Security Response Center (MSRC) <secure@microsoft.com>. 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. Further information,
including the MSRC PGP key, can be found in the [Security
TechCenter](https://www.microsoft.com/msrc/faqs-report-an-issue).

Also see info about related [Microsoft .NET Core and ASP.NET Core Bug Bounty
Program](https://www.microsoft.com/msrc/bounty-dot-net-core).

### .NET Framework issues

Issues with .NET Framework should be filed on [VS developer
community](https://developercommunity.visualstudio.com/spaces/61/index.html), or
[Product Support](https://support.microsoft.com/en-us/contactus?ws=support).
They should not be filed on this repo.

## Code of Conduct

This project uses the [.NET Foundation Code of
Conduct](https://dotnetfoundation.org/code-of-conduct) to define expected
conduct in our community. Instances of abusive, harassing, or otherwise
unacceptable behavior may be reported by contacting a project maintainer at
conduct@dotnetfoundation.org.

## License

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

## Officially Released Builds

Download official .NET releases [here](https://www.microsoft.com/net/download#core).


================================================
FILE: WindowsDesktop.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "eng", "eng", "{7525B257-249C-EE79-B10A-65D0BC27ABA9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{C3C130B5-2C3F-D4B2-E3F3-EC385075C7AB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tools", "eng\common\internal\Tools.csproj", "{4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.Windows.Compatibility", "Microsoft.Windows.Compatibility", "{292A50E1-7820-1638-6BA6-14FBE6B99F15}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.native.System.IO.Ports", "src\Microsoft.Windows.Compatibility\package\runtime.native.System.IO.Ports.csproj", "{E47F785E-FA7A-58A1-D296-8C8F02432E6F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Windows.Compatibility", "src\Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj", "{B4E26156-D23F-346E-920D-DB46A8C16C8E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windowsdesktop", "windowsdesktop", "{B1DEBE5E-C067-B350-5F22-0DD39AD9FFE8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.WindowsDesktop.App.Tests", "src\windowsdesktop\tests\Microsoft.WindowsDesktop.App.Tests.csproj", "{DDF86961-3AF2-FBA0-E08B-F367E1ABC517}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Release|Any CPU.Build.0 = Release|Any CPU
		{E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Release|Any CPU.Build.0 = Release|Any CPU
		{B4E26156-D23F-346E-920D-DB46A8C16C8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{B4E26156-D23F-346E-920D-DB46A8C16C8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{B4E26156-D23F-346E-920D-DB46A8C16C8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{B4E26156-D23F-346E-920D-DB46A8C16C8E}.Release|Any CPU.Build.0 = Release|Any CPU
		{DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(NestedProjects) = preSolution
		{C3C130B5-2C3F-D4B2-E3F3-EC385075C7AB} = {7525B257-249C-EE79-B10A-65D0BC27ABA9}
		{4F21FD48-C11F-D5EF-ADE2-1691A92E45C5} = {C3C130B5-2C3F-D4B2-E3F3-EC385075C7AB}
		{292A50E1-7820-1638-6BA6-14FBE6B99F15} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
		{E47F785E-FA7A-58A1-D296-8C8F02432E6F} = {292A50E1-7820-1638-6BA6-14FBE6B99F15}
		{B4E26156-D23F-346E-920D-DB46A8C16C8E} = {292A50E1-7820-1638-6BA6-14FBE6B99F15}
		{B1DEBE5E-C067-B350-5F22-0DD39AD9FFE8} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
		{DDF86961-3AF2-FBA0-E08B-F367E1ABC517} = {B1DEBE5E-C067-B350-5F22-0DD39AD9FFE8}
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {B96CF507-B5D5-4809-9C1C-7948C55C80FB}
	EndGlobalSection
EndGlobal


================================================
FILE: azure-pipelines-PR.yml
================================================
trigger:
  batch: true
  branches:
    include:
    - main
    - release/*

pr:
- main
- release/*

variables:
  - name: TeamName
    value: dotnet-core-acquisition
  # Skip Running CI tests
  - name: SkipTests
    value: false
  # Produce test-signed build for PR and Public builds
  - name: SignType
    value: test

stages:
- stage: Build
  jobs:

  # Windows x64
  - template: /eng/pipelines/jobs/windows-build-PR.yml
    parameters:
      name: win_x64
      displayName: win-x64
      targetArchitecture: x64

  # Windows x86
  - template: /eng/pipelines/jobs/windows-build-PR.yml
    parameters:
      name: win_x86
      displayName: win-x86
      targetArchitecture: x86

  # Windows arm64
  - template: /eng/pipelines/jobs/windows-build-PR.yml
    parameters:
      name: win_arm64
      displayName: win-arm64
      targetArchitecture: arm64


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

trigger:
  batch: true
  branches:
    include:
      - main
      - release/*

pr: none

resources:
  repositories:
  - repository: 1ESPipelineTemplates
    type: git
    name: 1ESPipelineTemplates/1ESPipelineTemplates
    ref: refs/tags/release
extends:
  template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
  parameters:
    sdl:
      createAdoIssuesForJustificationsForDisablement: false
      sourceAnalysisPool:
        name: $(DncEngInternalBuildPool)
        image: 1es-windows-2022
        os: windows
    stages:
    - stage: build
      displayName: Build
      jobs:
      - template: /eng/common/templates-official/jobs/jobs.yml@self
        parameters:
          enablePublishBuildArtifacts: true
          enablePublishBuildAssets: false
          enablePublishTestResults: false
          publishAssetsImmediately: true
          isAssetlessBuild: true
          enableTelemetry: true

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


================================================
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" --restore --build $@

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

  <ItemGroup>
    <ProjectToBuild Include="$(RepoRoot)Build.proj" />
  </ItemGroup>

</Project>


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

  <PropertyGroup>
    <ProducesDotNetReleaseShippingAssets>true</ProducesDotNetReleaseShippingAssets>
    <!-- This avoids creating VS.*.symbols.nupkg packages that are identical to the original package. -->
    <AutoGenerateSymbolPackages>false</AutoGenerateSymbolPackages>
    <!-- Set PlatformName to TargetArchitecture to create unique build manifest files. -->
    <PlatformName Condition="'$(TargetArchitecture)' != ''">$(TargetArchitecture)</PlatformName>
  </PropertyGroup>

  <!--
    Only generate the productVersion.txt and windowsdesktop-productVersion.txt files when we're building
    the .NET product (DotNetBuild=true) in BP1 or when building the repository standalone not as part of the .NET product.
  -->
  <PropertyGroup>
    <ShouldGenerateProductVersionFiles Condition="'$(DotNetBuild)' == 'true' and '$(EnableDefaultRidSpecificArtifacts)' != 'true' and ('$(DotNetBuildPass)' == '' or '$(DotNetBuildPass)' == '1')">true</ShouldGenerateProductVersionFiles>
    <ShouldGenerateProductVersionFiles Condition="'$(DotNetBuild)' != 'true' and '$(EnableDefaultArtifacts)' == 'true'">true</ShouldGenerateProductVersionFiles>
  </PropertyGroup>

  <Target Name="GetNonStableProductVersion">
    <!-- Retrieve the non-stable runtime pack product version.
         Don't stabilize the package version in order to retrieve the VersionSuffix. -->
    <MSBuild Projects="$(RepoRoot)src/windowsdesktop/src/sfx/Microsoft.WindowsDesktop.App.Runtime.sfxproj"
             Targets="ReturnProductVersion"
             Properties="IsShipping=false">
      <Output TaskParameter="TargetOutputs" PropertyName="NonStableProductVersion" />
    </MSBuild>
  </Target>

  <!-- This target only runs when EnableDefaultArtifacts=true which is a single build leg in CI. -->
  <Target Name="GenerateProductVersionFiles"
          DependsOnTargets="GetNonStableProductVersion"
          BeforeTargets="AddRelativeBlobPathToBlobArtifacts;PublishToAzureDevOpsArtifacts"
          Condition="'$(ShouldGenerateProductVersionFiles)' == 'true'">
    <!-- Retrieve the runtime pack version -->
    <MSBuild Projects="$(RepoRoot)src/windowsdesktop/src/sfx/Microsoft.WindowsDesktop.App.Runtime.sfxproj"
             Targets="ReturnProductVersion">
      <Output TaskParameter="TargetOutputs" PropertyName="ProductVersion" />
    </MSBuild>

    <ItemGroup>
      <ProductVersionFile Include="$(ArtifactsShippingPackagesDir)productVersion.txt" />
      <ProductVersionFile Include="$(ArtifactsShippingPackagesDir)windowsdesktop-productVersion.txt" />
    </ItemGroup>

    <!-- Generate productVersion.txt file containing the product version. -->
    <WriteLinesToFile File="%(ProductVersionFile.Identity)"
                      Lines="$(ProductVersion)"
                      Overwrite="true"
                      Encoding="ASCII" />

    <ItemGroup>
      <Artifact Include="@(ProductVersionFile)" Kind="Blob" />
    </ItemGroup>
  </Target>

  <Target Name="AddRelativeBlobPathToBlobArtifacts"
          DependsOnTargets="GetNonStableProductVersion"
          BeforeTargets="PublishToAzureDevOpsArtifacts"
          AfterTargets="GenerateChecksumsFromArtifacts">
    <ItemGroup>
      <Artifact Condition="'%(Artifact.Kind)' == 'Blob' and '%(Artifact.RelativeBlobPath)' == ''"
                RelativeBlobPath="WindowsDesktop/$(NonStableProductVersion)/%(Filename)%(Extension)" />
    </ItemGroup>
  </Target>

</Project>


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

  <PropertyGroup>
    <UseDotNetCertificate>true</UseDotNetCertificate>
    <!-- Don't sign and publish rid agnostic nuget packages from other builds than win-x64 when not building inside the VMR. -->
    <EnableDefaultArtifacts Condition="'$(DotNetBuild)' != 'true' and
                                       '$(TargetArchitecture)' != 'x64' and
                                       '$(TargetArchitecture)' != ''">false</EnableDefaultArtifacts>
  </PropertyGroup>

  <!-- Include installers -->
  <ItemGroup>
    <Artifact Include="$(ArtifactsPackagesDir)**\*.tar.gz;
                       $(ArtifactsPackagesDir)**\*.zip;
                       $(ArtifactsPackagesDir)**\*.exe;
                       $(ArtifactsPackagesDir)**\*.msi"
              Kind="Blob"
              IsShipping="$([System.String]::Copy('%(RecursiveDir)').StartsWith('Shipping'))">
      <!-- Exclude wixpack.zip files from checksum generation -->
      <ChecksumPath Condition="$([System.String]::Copy('%(Filename)%(Extension)').EndsWith('.wixpack.zip')) != 'true'">%(FullPath).sha512</ChecksumPath>
    </Artifact>
  </ItemGroup>

  <!-- Include RID specific packages when default items are disabled. -->
  <ItemGroup Condition="'$(EnableDefaultArtifacts)' != 'true'">
    <Artifact Include="$(ArtifactsPackagesDir)**\Microsoft.WindowsDesktop.App.Runtime.*.nupkg;
                       $(ArtifactsPackagesDir)**\VS.Redist.Common.WindowsDesktop.*.nupkg"
              IsShipping="$([System.String]::Copy('%(RecursiveDir)').StartsWith('Shipping'))"
              Kind="Package" />
  </ItemGroup>

</Project>


================================================
FILE: eng/Version.Details.props
================================================
<!--
This file is auto-generated by the Maestro dependency flow system.
Do not edit it manually, as it will get overwritten by automation.
This file should be imported by eng/Versions.props
-->
<Project>
  <PropertyGroup>
    <!-- dotnet-dotnet dependencies -->
    <MicrosoftDotNetArcadeSdkPackageVersion>11.0.0-beta.26230.101</MicrosoftDotNetArcadeSdkPackageVersion>
    <MicrosoftDotNetBuildTasksArchivesPackageVersion>11.0.0-beta.26230.101</MicrosoftDotNetBuildTasksArchivesPackageVersion>
    <MicrosoftDotNetBuildTasksFeedPackageVersion>11.0.0-beta.26230.101</MicrosoftDotNetBuildTasksFeedPackageVersion>
    <MicrosoftDotNetBuildTasksInstallersPackageVersion>11.0.0-beta.26230.101</MicrosoftDotNetBuildTasksInstallersPackageVersion>
    <MicrosoftDotNetBuildTasksTemplatingPackageVersion>11.0.0-beta.26230.101</MicrosoftDotNetBuildTasksTemplatingPackageVersion>
    <MicrosoftDotNetSharedFrameworkSdkPackageVersion>11.0.0-beta.26230.101</MicrosoftDotNetSharedFrameworkSdkPackageVersion>
    <MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>11.0.0-preview.5.26230.101</MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>
    <MicrosoftDotNetWpfGitHubPackageVersion>11.0.0-preview.5.26230.101</MicrosoftDotNetWpfGitHubPackageVersion>
    <MicrosoftDotNetWpfProjectTemplatesPackageVersion>11.0.0-preview.5.26230.101</MicrosoftDotNetWpfProjectTemplatesPackageVersion>
    <MicrosoftInternalRuntimeWindowsDesktopTransportPackageVersion>11.0.0-preview.5.26230.101</MicrosoftInternalRuntimeWindowsDesktopTransportPackageVersion>
    <MicrosoftNETSdkWindowsDesktopPackageVersion>11.0.0-preview.5.26230.101</MicrosoftNETSdkWindowsDesktopPackageVersion>
    <MicrosoftNETCoreAppRefPackageVersion>11.0.0-preview.5.26230.101</MicrosoftNETCoreAppRefPackageVersion>
    <MicrosoftNETCorePlatformsPackageVersion>11.0.0-preview.5.26230.101</MicrosoftNETCorePlatformsPackageVersion>
    <MicrosoftPrivateWinformsPackageVersion>11.0.0-preview.5.26230.101</MicrosoftPrivateWinformsPackageVersion>
    <MicrosoftWin32RegistryAccessControlPackageVersion>11.0.0-preview.5.26230.101</MicrosoftWin32RegistryAccessControlPackageVersion>
    <MicrosoftWin32SystemEventsPackageVersion>11.0.0-preview.5.26230.101</MicrosoftWin32SystemEventsPackageVersion>
    <SystemCodeDomPackageVersion>11.0.0-preview.5.26230.101</SystemCodeDomPackageVersion>
    <SystemComponentModelCompositionPackageVersion>11.0.0-preview.5.26230.101</SystemComponentModelCompositionPackageVersion>
    <SystemComponentModelCompositionRegistrationPackageVersion>11.0.0-preview.5.26230.101</SystemComponentModelCompositionRegistrationPackageVersion>
    <SystemConfigurationConfigurationManagerPackageVersion>11.0.0-preview.5.26230.101</SystemConfigurationConfigurationManagerPackageVersion>
    <SystemDataOdbcPackageVersion>11.0.0-preview.5.26230.101</SystemDataOdbcPackageVersion>
    <SystemDataOleDbPackageVersion>11.0.0-preview.5.26230.101</SystemDataOleDbPackageVersion>
    <SystemDiagnosticsEventLogPackageVersion>11.0.0-preview.5.26230.101</SystemDiagnosticsEventLogPackageVersion>
    <SystemDiagnosticsPerformanceCounterPackageVersion>11.0.0-preview.5.26230.101</SystemDiagnosticsPerformanceCounterPackageVersion>
    <SystemDirectoryServicesPackageVersion>11.0.0-preview.5.26230.101</SystemDirectoryServicesPackageVersion>
    <SystemDirectoryServicesAccountManagementPackageVersion>11.0.0-preview.5.26230.101</SystemDirectoryServicesAccountManagementPackageVersion>
    <SystemDirectoryServicesProtocolsPackageVersion>11.0.0-preview.5.26230.101</SystemDirectoryServicesProtocolsPackageVersion>
    <SystemDrawingCommonPackageVersion>11.0.0-preview.5.26230.101</SystemDrawingCommonPackageVersion>
    <SystemIOPackagingPackageVersion>11.0.0-preview.5.26230.101</SystemIOPackagingPackageVersion>
    <SystemIOPortsPackageVersion>11.0.0-preview.5.26230.101</SystemIOPortsPackageVersion>
    <SystemManagementPackageVersion>11.0.0-preview.5.26230.101</SystemManagementPackageVersion>
    <SystemReflectionContextPackageVersion>11.0.0-preview.5.26230.101</SystemReflectionContextPackageVersion>
    <SystemRuntimeCachingPackageVersion>11.0.0-preview.5.26230.101</SystemRuntimeCachingPackageVersion>
    <SystemSecurityCryptographyPkcsPackageVersion>11.0.0-preview.5.26230.101</SystemSecurityCryptographyPkcsPackageVersion>
    <SystemSecurityCryptographyProtectedDataPackageVersion>11.0.0-preview.5.26230.101</SystemSecurityCryptographyProtectedDataPackageVersion>
    <SystemSecurityCryptographyXmlPackageVersion>11.0.0-preview.5.26230.101</SystemSecurityCryptographyXmlPackageVersion>
    <SystemSecurityPermissionsPackageVersion>11.0.0-preview.5.26230.101</SystemSecurityPermissionsPackageVersion>
    <SystemServiceModelSyndicationPackageVersion>11.0.0-preview.5.26230.101</SystemServiceModelSyndicationPackageVersion>
    <SystemServiceProcessServiceControllerPackageVersion>11.0.0-preview.5.26230.101</SystemServiceProcessServiceControllerPackageVersion>
    <SystemSpeechPackageVersion>11.0.0-preview.5.26230.101</SystemSpeechPackageVersion>
    <SystemTextEncodingCodePagesPackageVersion>11.0.0-preview.5.26230.101</SystemTextEncodingCodePagesPackageVersion>
    <SystemThreadingAccessControlPackageVersion>11.0.0-preview.5.26230.101</SystemThreadingAccessControlPackageVersion>
  </PropertyGroup>
  <!--Property group for alternate package version names-->
  <PropertyGroup>
    <!-- dotnet-dotnet dependencies -->
    <MicrosoftDotNetArcadeSdkVersion>$(MicrosoftDotNetArcadeSdkPackageVersion)</MicrosoftDotNetArcadeSdkVersion>
    <MicrosoftDotNetBuildTasksArchivesVersion>$(MicrosoftDotNetBuildTasksArchivesPackageVersion)</MicrosoftDotNetBuildTasksArchivesVersion>
    <MicrosoftDotNetBuildTasksFeedVersion>$(MicrosoftDotNetBuildTasksFeedPackageVersion)</MicrosoftDotNetBuildTasksFeedVersion>
    <MicrosoftDotNetBuildTasksInstallersVersion>$(MicrosoftDotNetBuildTasksInstallersPackageVersion)</MicrosoftDotNetBuildTasksInstallersVersion>
    <MicrosoftDotNetBuildTasksTemplatingVersion>$(MicrosoftDotNetBuildTasksTemplatingPackageVersion)</MicrosoftDotNetBuildTasksTemplatingVersion>
    <MicrosoftDotNetSharedFrameworkSdkVersion>$(MicrosoftDotNetSharedFrameworkSdkPackageVersion)</MicrosoftDotNetSharedFrameworkSdkVersion>
    <MicrosoftDotnetWinFormsProjectTemplatesVersion>$(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion)</MicrosoftDotnetWinFormsProjectTemplatesVersion>
    <MicrosoftDotNetWpfGitHubVersion>$(MicrosoftDotNetWpfGitHubPackageVersion)</MicrosoftDotNetWpfGitHubVersion>
    <MicrosoftDotNetWpfProjectTemplatesVersion>$(MicrosoftDotNetWpfProjectTemplatesPackageVersion)</MicrosoftDotNetWpfProjectTemplatesVersion>
    <MicrosoftInternalRuntimeWindowsDesktopTransportVersion>$(MicrosoftInternalRuntimeWindowsDesktopTransportPackageVersion)</MicrosoftInternalRuntimeWindowsDesktopTransportVersion>
    <MicrosoftNETSdkWindowsDesktopVersion>$(MicrosoftNETSdkWindowsDesktopPackageVersion)</MicrosoftNETSdkWindowsDesktopVersion>
    <MicrosoftNETCoreAppRefVersion>$(MicrosoftNETCoreAppRefPackageVersion)</MicrosoftNETCoreAppRefVersion>
    <MicrosoftNETCorePlatformsVersion>$(MicrosoftNETCorePlatformsPackageVersion)</MicrosoftNETCorePlatformsVersion>
    <MicrosoftPrivateWinformsVersion>$(MicrosoftPrivateWinformsPackageVersion)</MicrosoftPrivateWinformsVersion>
    <MicrosoftWin32RegistryAccessControlVersion>$(MicrosoftWin32RegistryAccessControlPackageVersion)</MicrosoftWin32RegistryAccessControlVersion>
    <MicrosoftWin32SystemEventsVersion>$(MicrosoftWin32SystemEventsPackageVersion)</MicrosoftWin32SystemEventsVersion>
    <SystemCodeDomVersion>$(SystemCodeDomPackageVersion)</SystemCodeDomVersion>
    <SystemComponentModelCompositionVersion>$(SystemComponentModelCompositionPackageVersion)</SystemComponentModelCompositionVersion>
    <SystemComponentModelCompositionRegistrationVersion>$(SystemComponentModelCompositionRegistrationPackageVersion)</SystemComponentModelCompositionRegistrationVersion>
    <SystemConfigurationConfigurationManagerVersion>$(SystemConfigurationConfigurationManagerPackageVersion)</SystemConfigurationConfigurationManagerVersion>
    <SystemDataOdbcVersion>$(SystemDataOdbcPackageVersion)</SystemDataOdbcVersion>
    <SystemDataOleDbVersion>$(SystemDataOleDbPackageVersion)</SystemDataOleDbVersion>
    <SystemDiagnosticsEventLogVersion>$(SystemDiagnosticsEventLogPackageVersion)</SystemDiagnosticsEventLogVersion>
    <SystemDiagnosticsPerformanceCounterVersion>$(SystemDiagnosticsPerformanceCounterPackageVersion)</SystemDiagnosticsPerformanceCounterVersion>
    <SystemDirectoryServicesVersion>$(SystemDirectoryServicesPackageVersion)</SystemDirectoryServicesVersion>
    <SystemDirectoryServicesAccountManagementVersion>$(SystemDirectoryServicesAccountManagementPackageVersion)</SystemDirectoryServicesAccountManagementVersion>
    <SystemDirectoryServicesProtocolsVersion>$(SystemDirectoryServicesProtocolsPackageVersion)</SystemDirectoryServicesProtocolsVersion>
    <SystemDrawingCommonVersion>$(SystemDrawingCommonPackageVersion)</SystemDrawingCommonVersion>
    <SystemIOPackagingVersion>$(SystemIOPackagingPackageVersion)</SystemIOPackagingVersion>
    <SystemIOPortsVersion>$(SystemIOPortsPackageVersion)</SystemIOPortsVersion>
    <SystemManagementVersion>$(SystemManagementPackageVersion)</SystemManagementVersion>
    <SystemReflectionContextVersion>$(SystemReflectionContextPackageVersion)</SystemReflectionContextVersion>
    <SystemRuntimeCachingVersion>$(SystemRuntimeCachingPackageVersion)</SystemRuntimeCachingVersion>
    <SystemSecurityCryptographyPkcsVersion>$(SystemSecurityCryptographyPkcsPackageVersion)</SystemSecurityCryptographyPkcsVersion>
    <SystemSecurityCryptographyProtectedDataVersion>$(SystemSecurityCryptographyProtectedDataPackageVersion)</SystemSecurityCryptographyProtectedDataVersion>
    <SystemSecurityCryptographyXmlVersion>$(SystemSecurityCryptographyXmlPackageVersion)</SystemSecurityCryptographyXmlVersion>
    <SystemSecurityPermissionsVersion>$(SystemSecurityPermissionsPackageVersion)</SystemSecurityPermissionsVersion>
    <SystemServiceModelSyndicationVersion>$(SystemServiceModelSyndicationPackageVersion)</SystemServiceModelSyndicationVersion>
    <SystemServiceProcessServiceControllerVersion>$(SystemServiceProcessServiceControllerPackageVersion)</SystemServiceProcessServiceControllerVersion>
    <SystemSpeechVersion>$(SystemSpeechPackageVersion)</SystemSpeechVersion>
    <SystemTextEncodingCodePagesVersion>$(SystemTextEncodingCodePagesPackageVersion)</SystemTextEncodingCodePagesVersion>
    <SystemThreadingAccessControlVersion>$(SystemThreadingAccessControlPackageVersion)</SystemThreadingAccessControlVersion>
  </PropertyGroup>
</Project>


================================================
FILE: eng/Version.Details.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<Dependencies>
  <Source Uri="https://github.com/dotnet/dotnet" Mapping="windowsdesktop" Sha="5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e" BarId="312557" />
  <ProductDependencies>
    <Dependency Name="Microsoft.Internal.Runtime.WindowsDesktop.Transport" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.Private.Winforms" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.Wpf.GitHub" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.NET.Sdk.WindowsDesktop" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.NETCore.App.Ref" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.NETCore.Platforms" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.Wpf.ProjectTemplates" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.Win32.Registry.AccessControl" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.Win32.SystemEvents" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.CodeDom" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.ComponentModel.Composition" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Configuration.ConfigurationManager" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Data.Odbc" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Data.OleDb" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Diagnostics.EventLog" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Diagnostics.PerformanceCounter" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.DirectoryServices.AccountManagement" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.DirectoryServices.Protocols" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.DirectoryServices" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.IO.Packaging" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.IO.Ports" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Management" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Reflection.Context" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Runtime.Caching" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Security.Cryptography.Pkcs" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Security.Cryptography.ProtectedData" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Security.Cryptography.Xml" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Security.Permissions" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.ServiceModel.Syndication" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.ServiceProcess.ServiceController" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Speech" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Text.Encoding.CodePages" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Threading.AccessControl" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.ComponentModel.Composition.Registration" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="System.Drawing.Common" Version="11.0.0-preview.5.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
  </ProductDependencies>
  <ToolsetDependencies>
    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.Build.Tasks.Feed" Version="11.0.0-beta.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.SharedFramework.Sdk" Version="11.0.0-beta.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.Build.Tasks.Templating" Version="11.0.0-beta.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.Build.Tasks.Archives" Version="11.0.0-beta.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
    <Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="11.0.0-beta.26230.101">
      <Uri>https://github.com/dotnet/dotnet</Uri>
      <Sha>5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e</Sha>
    </Dependency>
  </ToolsetDependencies>
</Dependencies>


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

  <Import Project="Version.Details.props" />

  <PropertyGroup>
    <MajorVersion>11</MajorVersion>
    <MinorVersion>0</MinorVersion>
    <PatchVersion>0</PatchVersion>
    <PreReleaseVersionLabel>preview</PreReleaseVersionLabel>
    <PreReleaseVersionIteration>5</PreReleaseVersionIteration>
    <!-- Allowed values: '', 'prerelease', 'release'. Set to 'release' when stabilizing. -->
    <DotNetFinalVersionKind></DotNetFinalVersionKind>
  </PropertyGroup>

  <PropertyGroup>
    <!-- corefx -->
    <SystemDataDataSetExtensionsVersion>4.5.0</SystemDataDataSetExtensionsVersion>
    <SystemReflectionEmitVersion>4.7.0</SystemReflectionEmitVersion>
    <SystemReflectionEmitILGenerationVersion>4.7.0</SystemReflectionEmitILGenerationVersion>
    <SystemReflectionEmitLightweightVersion>4.7.0</SystemReflectionEmitLightweightVersion>
    <!-- nuget -->
    <NuGetPackagingVersion>6.12.1</NuGetPackagingVersion>
    <!-- runtime -->
    <MicrosoftWin32RegistryVersion>5.0.0</MicrosoftWin32RegistryVersion>
    <SystemIOFileSystemAccessControlVersion>5.0.0</SystemIOFileSystemAccessControlVersion>
    <SystemIOPipesAccessControlVersion>5.0.0</SystemIOPipesAccessControlVersion>
    <SystemSecurityAccessControlVersion>6.0.0</SystemSecurityAccessControlVersion>
    <SystemSecurityCryptographyCngVersion>5.0.0</SystemSecurityCryptographyCngVersion>
    <SystemSecurityPrincipalWindowsVersion>5.0.0</SystemSecurityPrincipalWindowsVersion>
    <!-- wcf -->
    <SystemServiceModelVersion>8.1.2</SystemServiceModelVersion>
  </PropertyGroup>

</Project>


================================================
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
  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 }}
      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 s
Download .txt
gitextract_jfd2h48b/

├── .azuredevops/
│   └── dependabot.yml
├── .config/
│   └── 1espt/
│       └── PipelineAutobaseliningConfig.yml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01_bug_report.md
│   │   └── config.yml
│   ├── policies/
│   │   └── resourceManagement.yml
│   └── workflows/
│       ├── backport.yml
│       └── inter-branch-merge-flow.yml
├── .gitignore
├── Build.proj
├── CODE-OF-CONDUCT.md
├── CODEOWNERS
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE
├── NuGet.config
├── README.md
├── WindowsDesktop.sln
├── azure-pipelines-PR.yml
├── azure-pipelines.yml
├── build.cmd
├── build.sh
├── eng/
│   ├── Build.props
│   ├── Publishing.props
│   ├── Signing.props
│   ├── Version.Details.props
│   ├── Version.Details.xml
│   ├── Versions.props
│   ├── common/
│   │   ├── 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/
│   │   │   ├── arm/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── arm64/
│   │   │   │   └── tizen/
│   │   │   │       └── tizen.patch
│   │   │   ├── 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
│   ├── pipelines/
│   │   ├── jobs/
│   │   │   └── windows-build-PR.yml
│   │   └── tsaoptions.json
│   └── sdl-tsa-vars.config
├── es-metadata.yml
├── github-merge-flow.jsonc
├── global.json
└── src/
    ├── Microsoft.Windows.Compatibility/
    │   ├── package/
    │   │   ├── Directory.Build.props
    │   │   └── runtime.native.System.IO.Ports.csproj
    │   └── src/
    │       ├── Microsoft.Windows.Compatibility.csproj
    │       ├── PACKAGE.md
    │       └── README.md
    ├── Microsoft.WindowsDesktop.App.Internal/
    │   └── Microsoft.WindowsDesktop.App.Internal.proj
    └── windowsdesktop/
        ├── src/
        │   ├── Directory.Build.props
        │   ├── Microsoft.WindowsDesktop.App.Ref.stub.proj
        │   ├── bundle/
        │   │   ├── Wix.props
        │   │   ├── Wix.targets
        │   │   ├── bundle.thm
        │   │   ├── bundle.wixproj
        │   │   ├── bundle.wxs
        │   │   ├── dotnet-packages.wxs
        │   │   ├── dummyeula.rtf
        │   │   └── theme/
        │   │       ├── 1028/
        │   │       │   └── thm.wxl
        │   │       ├── 1029/
        │   │       │   └── thm.wxl
        │   │       ├── 1031/
        │   │       │   └── thm.wxl
        │   │       ├── 1033/
        │   │       │   └── thm.wxl
        │   │       ├── 1036/
        │   │       │   └── thm.wxl
        │   │       ├── 1040/
        │   │       │   └── thm.wxl
        │   │       ├── 1041/
        │   │       │   └── thm.wxl
        │   │       ├── 1042/
        │   │       │   └── thm.wxl
        │   │       ├── 1045/
        │   │       │   └── thm.wxl
        │   │       ├── 1046/
        │   │       │   └── thm.wxl
        │   │       ├── 1049/
        │   │       │   └── thm.wxl
        │   │       ├── 1055/
        │   │       │   └── thm.wxl
        │   │       ├── 2052/
        │   │       │   └── thm.wxl
        │   │       └── 3082/
        │   │           └── thm.wxl
        │   └── sfx/
        │       ├── Directory.Build.props
        │       ├── Directory.Build.targets
        │       ├── Microsoft.WindowsDesktop.App.Ref.sfxproj
        │       ├── Microsoft.WindowsDesktop.App.Runtime.sfxproj
        │       ├── PACKAGE.md
        │       ├── PackageOverrides.txt
        │       └── WindowsForms.Packaging.targets
        └── tests/
            ├── Directory.Build.targets
            ├── Microsoft.WindowsDesktop.App.Tests.csproj
            ├── NuGetArtifactTester.cs
            ├── RepoDirectoriesProvider.cs
            └── WindowsDesktopNupkgTests.cs
Download .txt
SYMBOL INDEX (37 symbols across 4 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/windowsdesktop/tests/NuGetArtifactTester.cs
  class NuGetArtifactTester (line 17) | internal class NuGetArtifactTester : IDisposable
    method Open (line 19) | public static NuGetArtifactTester Open(
    method OpenOrNull (line 29) | public static NuGetArtifactTester OpenOrNull(
    method NuGetArtifactTester (line 56) | public NuGetArtifactTester(string file)
    method Dispose (line 63) | public void Dispose()
    method IsTargetingPack (line 68) | public void IsTargetingPack()
    method IsTargetingPackForPlatform (line 79) | public void IsTargetingPackForPlatform()
    method IsRuntimePack (line 86) | public void IsRuntimePack()
    method HasOnlyTheseDataFiles (line 95) | public void HasOnlyTheseDataFiles(params string[] expectedDataFiles)
    method HasGoodPlatformManifest (line 106) | public void HasGoodPlatformManifest()
    method ReadEntryContent (line 127) | public string ReadEntryContent(string entry)
    method ReadEntryXDocument (line 132) | public XDocument ReadEntryXDocument(string entry)
    method IsFrameworkPack (line 137) | private void IsFrameworkPack()
    method IsRuntimeSpecificPack (line 146) | private void IsRuntimeSpecificPack()
    method ContainsFrameworkList (line 155) | private void ContainsFrameworkList(string name)
    method ReadEntryContent (line 169) | private static string ReadEntryContent(ZipArchiveEntry entry)
    method ReadEntryXDocument (line 175) | private static XDocument ReadEntryXDocument(ZipArchiveEntry entry)

FILE: src/windowsdesktop/tests/RepoDirectoriesProvider.cs
  class RepoDirectoriesProvider (line 10) | internal class RepoDirectoriesProvider
    method RepoDirectoriesProvider (line 21) | public RepoDirectoriesProvider(
    method GetTestContextVariable (line 41) | public string GetTestContextVariable(string name)
    method GetRepoRootDirectory (line 62) | private static string GetRepoRootDirectory()

FILE: src/windowsdesktop/tests/WindowsDesktopNupkgTests.cs
  class WindowsDesktopNupkgTests (line 11) | public class WindowsDesktopNupkgTests
    method WindowsDesktopTargetingPackIsValid (line 15) | [Fact]
    method WindowsDesktopFrameworkListHasClassifications (line 45) | [Fact]
    method WindowsDesktopRuntimePackIsValid (line 69) | [Fact]
Condensed preview — 221 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (788K 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/1espt/PipelineAutobaseliningConfig.yml",
    "chars": 621,
    "preview": "## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/"
  },
  {
    "path": ".gitattributes",
    "chars": 1660,
    "preview": "###############################################################################\n# Set default behavior to:\n#   automatic"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/01_bug_report.md",
    "chars": 1381,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n<!--This is just"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 739,
    "preview": "blank_issues_enabled: true\ncontact_links:\n  - name: Issue with Windows Forms\n    url:  https://github.com/dotnet/winform"
  },
  {
    "path": ".github/policies/resourceManagement.yml",
    "chars": 504,
    "preview": "name: GitOps.PullRequestIssueManagement\ndescription: GitOps.PullRequestIssueManagement primitive\n\nresource: repository\n\n"
  },
  {
    "path": ".github/workflows/backport.yml",
    "chars": 344,
    "preview": "name: Backport PR to branch\r\non:\r\n  issue_comment:\r\n    types: [created]\r\n  schedule:\r\n    # once a day at 13:00 UTC to "
  },
  {
    "path": ".github/workflows/inter-branch-merge-flow.yml",
    "chars": 236,
    "preview": "name: Inter-branch merge workflow\r\non:\r\n  push:\r\n    branches:\r\n      - release/**\r\n\r\npermissions:\r\n  contents: write\r\n "
  },
  {
    "path": ".gitignore",
    "chars": 6786,
    "preview": "# Arcade directories\n.dotnet/\n.packages/\n.tools/\nartifacts/\n\n# MSBuild log files\nmsbuild.log\nmsbuild.err\nmsbuild.wrn\n\n# "
  },
  {
    "path": "Build.proj",
    "chars": 1508,
    "preview": "<Project Sdk=\"Microsoft.Build.Traversal\">\n\n  <PropertyGroup>\n    <TargetFramework>$(NetCurrent)</TargetFramework>\n  </Pr"
  },
  {
    "path": "CODE-OF-CONDUCT.md",
    "chars": 259,
    "preview": "# Code of Conduct\n\nThis project has adopted the code of conduct defined by the Contributor Covenant\nto clarify expected "
  },
  {
    "path": "CODEOWNERS",
    "chars": 213,
    "preview": "# Lines starting with '#' are comments.\n# Each line is a file pattern followed by one or more owners.\n\n# These owners wi"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 222,
    "preview": "Contributing\n============\n\nSee [Contributing](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/co"
  },
  {
    "path": "Directory.Build.props",
    "chars": 4272,
    "preview": "<Project>\n  <Import Project=\"Sdk.props\" Sdk=\"Microsoft.DotNet.Arcade.Sdk\" />\n  <PropertyGroup>\n    <!-- WiX v5 Configura"
  },
  {
    "path": "Directory.Build.targets",
    "chars": 384,
    "preview": "<Project>\n\n  <Import Project=\"Sdk.targets\" Sdk=\"Microsoft.DotNet.Arcade.Sdk\" />\n \n  <PropertyGroup>\n    <!--\n      Defin"
  },
  {
    "path": "Directory.Packages.props",
    "chars": 6823,
    "preview": "<Project>\n\n  <PropertyGroup>\n    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n    <CentralPacka"
  },
  {
    "path": "LICENSE",
    "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": 1499,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <!-- Don't use any higher level config files.\n       Our builds"
  },
  {
    "path": "README.md",
    "chars": 2267,
    "preview": "# .NET Windows Desktop Runtime\n\nThis repo contains the code to build the .NET Windows Desktop Runtime for all\nsupported "
  },
  {
    "path": "WindowsDesktop.sln",
    "chars": 4051,
    "preview": "Microsoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.5.2.0\nMi"
  },
  {
    "path": "azure-pipelines-PR.yml",
    "chars": 853,
    "preview": "trigger:\n  batch: true\n  branches:\n    include:\n    - main\n    - release/*\n\npr:\n- main\n- release/*\n\nvariables:\n  - name:"
  },
  {
    "path": "azure-pipelines.yml",
    "chars": 1058,
    "preview": "variables:\n  - name: _PublishUsingPipelines\n    value: false\n  - template: /eng/common/templates-official/variables/pool"
  },
  {
    "path": "build.cmd",
    "chars": 120,
    "preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0eng\\common\\Build.ps1\"\"\" -restore -build %*\"\n"
  },
  {
    "path": "build.sh",
    "chars": 515,
    "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/Build.props",
    "chars": 107,
    "preview": "<Project>\n\n  <ItemGroup>\n    <ProjectToBuild Include=\"$(RepoRoot)Build.proj\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "eng/Publishing.props",
    "chars": 3417,
    "preview": "<Project>\n\n  <PropertyGroup>\n    <ProducesDotNetReleaseShippingAssets>true</ProducesDotNetReleaseShippingAssets>\n    <!-"
  },
  {
    "path": "eng/Signing.props",
    "chars": 1598,
    "preview": "<Project>\n\n  <PropertyGroup>\n    <UseDotNetCertificate>true</UseDotNetCertificate>\n    <!-- Don't sign and publish rid a"
  },
  {
    "path": "eng/Version.Details.props",
    "chars": 10649,
    "preview": "<!--\nThis file is auto-generated by the Maestro dependency flow system.\nDo not edit it manually, as it will get overwrit"
  },
  {
    "path": "eng/Version.Details.xml",
    "chars": 9444,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Dependencies>\n  <Source Uri=\"https://github.com/dotnet/dotnet\" Mapping=\"windowsd"
  },
  {
    "path": "eng/Versions.props",
    "chars": 1561,
    "preview": "<Project>\n\n  <Import Project=\"Version.Details.props\" />\n\n  <PropertyGroup>\n    <MajorVersion>11</MajorVersion>\n    <Mino"
  },
  {
    "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": 4632,
    "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/arm/tizen/tizen.patch",
    "chars": 488,
    "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/arm64/tizen/tizen.patch",
    "chars": 506,
    "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/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": 15157,
    "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": 786,
    "preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n  [string] $verbosity = 'minimal',\n  [string] $architecture = '',\n  [st"
  },
  {
    "path": "eng/common/dotnet-install.sh",
    "chars": 2232,
    "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": 37916,
    "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": 22642,
    "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/pipelines/jobs/windows-build-PR.yml",
    "chars": 3480,
    "preview": "parameters:\n  additionalMSBuildArguments: ''\n  displayName: ''\n  skipTests: $(SkipTests)\n  targetArchitecture: null\n  ti"
  },
  {
    "path": "eng/pipelines/tsaoptions.json",
    "chars": 360,
    "preview": "{  \n    \"instanceUrl\": \"https://devdiv.visualstudio.com/\",\n    \"template\": \"TFSDEVDIV\",\n    \"projectName\": \"DEVDIV\",\n   "
  },
  {
    "path": "eng/sdl-tsa-vars.config",
    "chars": 409,
    "preview": "-SourceToolsList @(\"policheck\",\"credscan\")\n-ArtifactToolsList @(\"binskim\")\n-TsaInstanceURL https://devdiv.visualstudio.c"
  },
  {
    "path": "es-metadata.yml",
    "chars": 200,
    "preview": "schemaVersion: 0.0.1\nisProduction: true\naccountableOwners:\n  service: 207fa7e8-9931-4637-a9c1-75b5bc8c289e\nrouting:\n  de"
  },
  {
    "path": "github-merge-flow.jsonc",
    "chars": 488,
    "preview": "// IMPORTANT: This file is read by the merge flow from main branch only. \n{\n    \"merge-flow-configurations\": {\n        \""
  },
  {
    "path": "global.json",
    "chars": 743,
    "preview": "{\n  \"sdk\": {\n    \"version\": \"11.0.100-preview.4.26210.111\",\n    \"allowPrerelease\": true,\n    \"rollForward\": \"latestFeatu"
  },
  {
    "path": "src/Microsoft.Windows.Compatibility/package/Directory.Build.props",
    "chars": 435,
    "preview": "<Project>\n  <PropertyGroup>\n    <!-- don't produce any packages -->\n    <IsPackable>false</IsPackable>\n    <IsShipping>f"
  },
  {
    "path": "src/Microsoft.Windows.Compatibility/package/runtime.native.System.IO.Ports.csproj",
    "chars": 275,
    "preview": "<Project Sdk=\"Microsoft.Build.NoTargets\">\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n  </Pr"
  },
  {
    "path": "src/Microsoft.Windows.Compatibility/src/Microsoft.Windows.Compatibility.csproj",
    "chars": 4667,
    "preview": "<Project Sdk=\"Microsoft.Build.NoTargets\">\n\n  <PropertyGroup>\n    <!-- Using a csproj extension to get the correct multi-"
  },
  {
    "path": "src/Microsoft.Windows.Compatibility/src/PACKAGE.md",
    "chars": 2660,
    "preview": "# Microsoft.Windows.Compatibility\n\nThe `Microsoft.Windows.Compatibility` package provides Windows-specific APIs to help "
  },
  {
    "path": "src/Microsoft.Windows.Compatibility/src/README.md",
    "chars": 955,
    "preview": "# Microsoft.Windows.Compatibility package\n\nThis Windows Compatibility Pack provides access to APIs that were previously "
  },
  {
    "path": "src/Microsoft.WindowsDesktop.App.Internal/Microsoft.WindowsDesktop.App.Internal.proj",
    "chars": 466,
    "preview": "<Project Sdk=\"Microsoft.Build.NoTargets\">\n\n  <!-- A sentinel package only used for communicating non-shipping versions. "
  },
  {
    "path": "src/windowsdesktop/src/Directory.Build.props",
    "chars": 1948,
    "preview": "<Project>\n\n  <Import Project=\"$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory).., Directory.Build.pr"
  },
  {
    "path": "src/windowsdesktop/src/Microsoft.WindowsDesktop.App.Ref.stub.proj",
    "chars": 654,
    "preview": "<Project Sdk=\"Microsoft.Build.NoTargets\">\n\n  <!-- This is a stub project to generate the shipping targeting pack package"
  },
  {
    "path": "src/windowsdesktop/src/bundle/Wix.props",
    "chars": 1682,
    "preview": "<Project>\n  <PropertyGroup>\n    <Configuration Condition=\"'$(Configuration)' == ''\">Release</Configuration>\n    <Platfor"
  },
  {
    "path": "src/windowsdesktop/src/bundle/Wix.targets",
    "chars": 13665,
    "preview": "<Project>\n  <!-- Extracted WiX build targets for Windows Desktop Runtime bundle -->\n\n  <Target Name=\"CollectRuntimePrere"
  },
  {
    "path": "src/windowsdesktop/src/bundle/bundle.thm",
    "chars": 11871,
    "preview": "<!-- Copyright (c) .NET Foundation and contributors. All rights reserved.\nLicensed under the MIT license. See License.tx"
  },
  {
    "path": "src/windowsdesktop/src/bundle/bundle.wixproj",
    "chars": 3059,
    "preview": "<Project Sdk=\"Microsoft.WixToolset.Sdk\">\n\n  <Import Project=\"Wix.props\" />\n\n  <PropertyGroup>\n    <!-- OutputType determ"
  },
  {
    "path": "src/windowsdesktop/src/bundle/bundle.wxs",
    "chars": 11713,
    "preview": "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:bal=\"http://wixtoolset.org/schemas/v4/wxs/bal\" xmlns:util=\"http:"
  },
  {
    "path": "src/windowsdesktop/src/bundle/dotnet-packages.wxs",
    "chars": 5121,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:util=\"http://wixtoolset.o"
  },
  {
    "path": "src/windowsdesktop/src/bundle/dummyeula.rtf",
    "chars": 208,
    "preview": "{\\rtf1\\ansi\\deff0 {\\fonttbl {\\f0 Times New Roman;}}\n\\f0\\fs20 MICROSOFT .NET WINDOWS DESKTOP RUNTIME LICENSE\n\\par\n\\par\nPl"
  },
  {
    "path": "src/windowsdesktop/src/bundle/theme/1028/thm.wxl",
    "chars": 5814,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<WixLocalization Culture=\"zh-TW\" Language=\"1028\" xmlns=\"http://wixtoolset.org/sc"
  },
  {
    "path": "src/windowsdesktop/src/bundle/theme/1029/thm.wxl",
    "chars": 7763,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<WixLocalization Culture=\"cs-CZ\" Language=\"1029\" xmlns=\"http://wixtoolset.org/sc"
  },
  {
    "path": "src/windowsdesktop/src/bundle/theme/1031/thm.wxl",
    "chars": 7799,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<WixLocalization Culture=\"de-DE\" Language=\"1031\" xmlns=\"http://wixtoolset.org/sc"
  },
  {
    "path": "src/windowsdesktop/src/bundle/theme/1033/thm.wxl",
    "chars": 7291,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<WixLocalization Culture=\"en-us\" Language=\"1033\" xmlns=\"http://wixtoolset.org/sc"
  },
  {
    "path": "src/windowsdesktop/src/bundle/theme/1036/thm.wxl",
    "chars": 8198,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<WixLocalization Culture=\"fr-FR\" Language=\"1036\" xmlns=\"http://wixtoolset.org/sc"
  }
]

// ... and 21 more files (download for full content)

About this extraction

This page contains the full source code of the dotnet/windowsdesktop GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 221 files (714.5 KB), approximately 204.3k tokens, and a symbol index with 37 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!