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