Merge branch 'feature/installer-merge-update-main' into feature/installer-merge-update

# Conflicts:
#	eng/Version.Details.xml
#	eng/Versions.props
#	global.json
#	src/redist/redist.csproj
#	src/redist/targets/BundledDotnetTools.targets
#	src/redist/targets/BundledTemplates.targets
#	src/redist/targets/Crossgen.targets
#	src/redist/targets/GenerateArchives.targets
#	src/redist/targets/GenerateLayout.targets
#	src/redist/targets/GeneratePKG.targets
#	test/SdkTests/SdkTests.csproj
This commit is contained in:
Michael Yanni 2024-02-27 13:09:06 -08:00
commit 34c7829222
121 changed files with 5521 additions and 4406 deletions

View file

@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"microsoft.dotnet.darc": {
"version": "1.1.0-beta.24074.1",
"version": "1.1.0-beta.24112.3",
"commands": [
"darc"
]

View file

@ -13,7 +13,7 @@ This Codespace can help you debug the source build of .NET. In case you have run
`/workspaces/dotnet` with the PR changes pulled into it. You can then attempt to source-build
the VMR which is what the VMR leg in the installer PR build doing. This build takes about 45
minutes and, after completion, produces an archived .NET SDK located in
`/workspaces/dotnet/artifacts/x64/Release`.
`/workspaces/dotnet/artifacts/assets/Release`.
## Build the SDK

View file

@ -121,7 +121,7 @@ stages:
parameters:
agentOs: Linux
jobName: Build_Linux_musl_Debug_x64
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.15-WithNode'
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode'
buildConfiguration: Debug
buildArchitecture: x64
runtimeIdentifier: 'linux-musl-x64'
@ -222,7 +222,7 @@ stages:
parameters:
agentOs: Linux
jobName: Build_Linux_musl_Release_x64
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.15-WithNode'
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode'
buildConfiguration: Release
buildArchitecture: x64
runtimeIdentifier: 'linux-musl-x64'

View file

@ -8,7 +8,7 @@
</PropertyGroup>
<PropertyGroup>
<BuildArchitecture>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant())</BuildArchitecture>
<BuildArchitecture Condition="'$(BuildArchitecture)' == ''">$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant())</BuildArchitecture>
<Architecture Condition="'$(Architecture)' == '' AND ('$(BuildArchitecture)' == 'arm64' OR '$(BuildArchitecture)' == 'arm')">$(BuildArchitecture)</Architecture>
<Architecture Condition="'$(Architecture)' == '' AND '$(BuildArchitecture)' == 's390x'">$(BuildArchitecture)</Architecture>
<Architecture Condition="'$(Architecture)' == '' AND '$(BuildArchitecture)' == 'ppc64le'">$(BuildArchitecture)</Architecture>

110
README.md
View file

@ -169,25 +169,24 @@ With development builds, internal NuGet feeds are necessary for some scenarios (
Do not directly edit the table below. Use https://github.com/dotnet/installer/tree/main/tools/sdk-readme-table-generator to help you generate it. Make sure to run the table generator test and make any changes to the generator along with your changes to the table. Daily servicing builds aren't shown here because they may contain upcoming security fixes. All public servicing builds can be downloaded at http://aka.ms/dotnet-download.
### Table
*Note* the 8.0.100 build will be finished internally starting in mid-October.
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------
| Platform | main<br>(9.0.x&nbsp;Runtime) | 8.0.3xx<br>(8.0&nbsp;Runtime) | Release/7.0.4xx<br>(7.0.x&nbsp;Runtime) |
| :--------- | :----------: | :----------: | :----------: |
| **Windows x64** | [![][win-x64-badge-main]][win-x64-version-main]<br>[Installer][win-x64-installer-main] - [Checksum][win-x64-installer-checksum-main]<br>[zip][win-x64-zip-main] - [Checksum][win-x64-zip-checksum-main] | [![][win-x64-badge-8.0.3XX]][win-x64-version-8.0.3XX]<br>[Installer][win-x64-installer-8.0.3XX] - [Checksum][win-x64-installer-checksum-8.0.3XX]<br>[zip][win-x64-zip-8.0.3XX] - [Checksum][win-x64-zip-checksum-8.0.3XX] | [![][win-x64-badge-7.0.4XX]][win-x64-version-7.0.4XX]<br>[Installer][win-x64-installer-7.0.4XX] - [Checksum][win-x64-installer-checksum-7.0.4XX]<br>[zip][win-x64-zip-7.0.4XX] - [Checksum][win-x64-zip-checksum-7.0.4XX] |
| **Windows x86** | [![][win-x86-badge-main]][win-x86-version-main]<br>[Installer][win-x86-installer-main] - [Checksum][win-x86-installer-checksum-main]<br>[zip][win-x86-zip-main] - [Checksum][win-x86-zip-checksum-main] | [![][win-x86-badge-8.0.3XX]][win-x86-version-8.0.3XX]<br>[Installer][win-x86-installer-8.0.3XX] - [Checksum][win-x86-installer-checksum-8.0.3XX]<br>[zip][win-x86-zip-8.0.3XX] - [Checksum][win-x86-zip-checksum-8.0.3XX] | [![][win-x86-badge-7.0.4XX]][win-x86-version-7.0.4XX]<br>[Installer][win-x86-installer-7.0.4XX] - [Checksum][win-x86-installer-checksum-7.0.4XX]<br>[zip][win-x86-zip-7.0.4XX] - [Checksum][win-x86-zip-checksum-7.0.4XX] |
| **Windows arm** | **N/A** | **N/A** | **N/A** |
| **Windows arm64** | [![][win-arm64-badge-main]][win-arm64-version-main]<br>[Installer][win-arm64-installer-main] - [Checksum][win-arm64-installer-checksum-main]<br>[zip][win-arm64-zip-main] | [![][win-arm64-badge-8.0.3XX]][win-arm64-version-8.0.3XX]<br>[Installer][win-arm64-installer-8.0.3XX] - [Checksum][win-arm64-installer-checksum-8.0.3XX]<br>[zip][win-arm64-zip-8.0.3XX] | [![][win-arm64-badge-7.0.4XX]][win-arm64-version-7.0.4XX]<br>[Installer][win-arm64-installer-7.0.4XX] - [Checksum][win-arm64-installer-checksum-7.0.4XX]<br>[zip][win-arm64-zip-7.0.4XX] |
| **macOS x64** | [![][osx-x64-badge-main]][osx-x64-version-main]<br>[Installer][osx-x64-installer-main] - [Checksum][osx-x64-installer-checksum-main]<br>[tar.gz][osx-x64-targz-main] - [Checksum][osx-x64-targz-checksum-main] | [![][osx-x64-badge-8.0.3XX]][osx-x64-version-8.0.3XX]<br>[Installer][osx-x64-installer-8.0.3XX] - [Checksum][osx-x64-installer-checksum-8.0.3XX]<br>[tar.gz][osx-x64-targz-8.0.3XX] - [Checksum][osx-x64-targz-checksum-8.0.3XX] | [![][osx-x64-badge-7.0.4XX]][osx-x64-version-7.0.4XX]<br>[Installer][osx-x64-installer-7.0.4XX] - [Checksum][osx-x64-installer-checksum-7.0.4XX]<br>[tar.gz][osx-x64-targz-7.0.4XX] - [Checksum][osx-x64-targz-checksum-7.0.4XX] |
| **macOS arm64** | [![][osx-arm64-badge-main]][osx-arm64-version-main]<br>[Installer][osx-arm64-installer-main] - [Checksum][osx-arm64-installer-checksum-main]<br>[tar.gz][osx-arm64-targz-main] - [Checksum][osx-arm64-targz-checksum-main] | [![][osx-arm64-badge-8.0.3XX]][osx-arm64-version-8.0.3XX]<br>[Installer][osx-arm64-installer-8.0.3XX] - [Checksum][osx-arm64-installer-checksum-8.0.3XX]<br>[tar.gz][osx-arm64-targz-8.0.3XX] - [Checksum][osx-arm64-targz-checksum-8.0.3XX] | [![][osx-arm64-badge-7.0.4XX]][osx-arm64-version-7.0.4XX]<br>[Installer][osx-arm64-installer-7.0.4XX] - [Checksum][osx-arm64-installer-checksum-7.0.4XX]<br>[tar.gz][osx-arm64-targz-7.0.4XX] - [Checksum][osx-arm64-targz-checksum-7.0.4XX] |
| **Linux x64** | [![][linux-badge-main]][linux-version-main]<br>[DEB Installer][linux-DEB-installer-main] - [Checksum][linux-DEB-installer-checksum-main]<br>[RPM Installer][linux-RPM-installer-main] - [Checksum][linux-RPM-installer-checksum-main]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-main] - [Checksum][linux-targz-checksum-main] | [![][linux-badge-8.0.3XX]][linux-version-8.0.3XX]<br>[DEB Installer][linux-DEB-installer-8.0.3XX] - [Checksum][linux-DEB-installer-checksum-8.0.3XX]<br>[RPM Installer][linux-RPM-installer-8.0.3XX] - [Checksum][linux-RPM-installer-checksum-8.0.3XX]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-8.0.3XX] - [Checksum][linux-targz-checksum-8.0.3XX] | [![][linux-badge-7.0.4XX]][linux-version-7.0.4XX]<br>[DEB Installer][linux-DEB-installer-7.0.4XX] - [Checksum][linux-DEB-installer-checksum-7.0.4XX]<br>[RPM Installer][linux-RPM-installer-7.0.4XX] - [Checksum][linux-RPM-installer-checksum-7.0.4XX]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-7.0.4XX] - [Checksum][linux-targz-checksum-7.0.4XX] |
| **Linux arm** | [![][linux-arm-badge-main]][linux-arm-version-main]<br>[tar.gz][linux-arm-targz-main] - [Checksum][linux-arm-targz-checksum-main] | [![][linux-arm-badge-8.0.3XX]][linux-arm-version-8.0.3XX]<br>[tar.gz][linux-arm-targz-8.0.3XX] - [Checksum][linux-arm-targz-checksum-8.0.3XX] | [![][linux-arm-badge-7.0.4XX]][linux-arm-version-7.0.4XX]<br>[tar.gz][linux-arm-targz-7.0.4XX] - [Checksum][linux-arm-targz-checksum-7.0.4XX] |
| **Linux arm64** | [![][linux-arm64-badge-main]][linux-arm64-version-main]<br>[tar.gz][linux-arm64-targz-main] - [Checksum][linux-arm64-targz-checksum-main] | [![][linux-arm64-badge-8.0.3XX]][linux-arm64-version-8.0.3XX]<br>[tar.gz][linux-arm64-targz-8.0.3XX] - [Checksum][linux-arm64-targz-checksum-8.0.3XX] | [![][linux-arm64-badge-7.0.4XX]][linux-arm64-version-7.0.4XX]<br>[tar.gz][linux-arm64-targz-7.0.4XX] - [Checksum][linux-arm64-targz-checksum-7.0.4XX] |
| **Linux-musl-x64** | [![][linux-musl-x64-badge-main]][linux-musl-x64-version-main]<br>[tar.gz][linux-musl-x64-targz-main] - [Checksum][linux-musl-x64-targz-checksum-main] | [![][linux-musl-x64-badge-8.0.3XX]][linux-musl-x64-version-8.0.3XX]<br>[tar.gz][linux-musl-x64-targz-8.0.3XX] - [Checksum][linux-musl-x64-targz-checksum-8.0.3XX] | [![][linux-musl-x64-badge-7.0.4XX]][linux-musl-x64-version-7.0.4XX]<br>[tar.gz][linux-musl-x64-targz-7.0.4XX] - [Checksum][linux-musl-x64-targz-checksum-7.0.4XX] |
| **Linux-musl-arm** | [![][linux-musl-arm-badge-main]][linux-musl-arm-version-main]<br>[tar.gz][linux-musl-arm-targz-main] - [Checksum][linux-musl-arm-targz-checksum-main] | [![][linux-musl-arm-badge-8.0.3XX]][linux-musl-arm-version-8.0.3XX]<br>[tar.gz][linux-musl-arm-targz-8.0.3XX] - [Checksum][linux-musl-arm-targz-checksum-8.0.3XX] | [![][linux-musl-arm-badge-7.0.4XX]][linux-musl-arm-version-7.0.4XX]<br>[tar.gz][linux-musl-arm-targz-7.0.4XX] - [Checksum][linux-musl-arm-targz-checksum-7.0.4XX] |
| **Linux-musl-arm64** | [![][linux-musl-arm64-badge-main]][linux-musl-arm64-version-main]<br>[tar.gz][linux-musl-arm64-targz-main] - [Checksum][linux-musl-arm64-targz-checksum-main] | [![][linux-musl-arm64-badge-8.0.3XX]][linux-musl-arm64-version-8.0.3XX]<br>[tar.gz][linux-musl-arm64-targz-8.0.3XX] - [Checksum][linux-musl-arm64-targz-checksum-8.0.3XX] | [![][linux-musl-arm64-badge-7.0.4XX]][linux-musl-arm64-version-7.0.4XX]<br>[tar.gz][linux-musl-arm64-targz-7.0.4XX] - [Checksum][linux-musl-arm64-targz-checksum-7.0.4XX] |
| **RHEL 6** | **N/A** | **N/A** | **N/A** |
| Platform | main<br>(9.0.x&nbsp;Runtime) | 9.0.1xx-preview1<br>(9.0-preview1&nbsp;Runtime) | 8.0.3xx<br>(8.0&nbsp;Runtime) | Release/7.0.4xx<br>(7.0.x&nbsp;Runtime) |
| :--------- | :----------: | :----------: | :----------: | :----------: |
| **Windows x64** | [![][win-x64-badge-main]][win-x64-version-main]<br>[Installer][win-x64-installer-main] - [Checksum][win-x64-installer-checksum-main]<br>[zip][win-x64-zip-main] - [Checksum][win-x64-zip-checksum-main] | [![][win-x64-badge-9.0.1XX-preview1]][win-x64-version-9.0.1XX-preview1]<br>[Installer][win-x64-installer-9.0.1XX-preview1] - [Checksum][win-x64-installer-checksum-9.0.1XX-preview1]<br>[zip][win-x64-zip-9.0.1XX-preview1] - [Checksum][win-x64-zip-checksum-9.0.1XX-preview1] | [![][win-x64-badge-8.0.3XX]][win-x64-version-8.0.3XX]<br>[Installer][win-x64-installer-8.0.3XX] - [Checksum][win-x64-installer-checksum-8.0.3XX]<br>[zip][win-x64-zip-8.0.3XX] - [Checksum][win-x64-zip-checksum-8.0.3XX] | [![][win-x64-badge-7.0.4XX]][win-x64-version-7.0.4XX]<br>[Installer][win-x64-installer-7.0.4XX] - [Checksum][win-x64-installer-checksum-7.0.4XX]<br>[zip][win-x64-zip-7.0.4XX] - [Checksum][win-x64-zip-checksum-7.0.4XX] |
| **Windows x86** | [![][win-x86-badge-main]][win-x86-version-main]<br>[Installer][win-x86-installer-main] - [Checksum][win-x86-installer-checksum-main]<br>[zip][win-x86-zip-main] - [Checksum][win-x86-zip-checksum-main] | [![][win-x86-badge-9.0.1XX-preview1]][win-x86-version-9.0.1XX-preview1]<br>[Installer][win-x86-installer-9.0.1XX-preview1] - [Checksum][win-x86-installer-checksum-9.0.1XX-preview1]<br>[zip][win-x86-zip-9.0.1XX-preview1] - [Checksum][win-x86-zip-checksum-9.0.1XX-preview1] | [![][win-x86-badge-8.0.3XX]][win-x86-version-8.0.3XX]<br>[Installer][win-x86-installer-8.0.3XX] - [Checksum][win-x86-installer-checksum-8.0.3XX]<br>[zip][win-x86-zip-8.0.3XX] - [Checksum][win-x86-zip-checksum-8.0.3XX] | [![][win-x86-badge-7.0.4XX]][win-x86-version-7.0.4XX]<br>[Installer][win-x86-installer-7.0.4XX] - [Checksum][win-x86-installer-checksum-7.0.4XX]<br>[zip][win-x86-zip-7.0.4XX] - [Checksum][win-x86-zip-checksum-7.0.4XX] |
| **Windows arm** | **N/A** | **N/A** | **N/A** | **N/A** |
| **Windows arm64** | [![][win-arm64-badge-main]][win-arm64-version-main]<br>[Installer][win-arm64-installer-main] - [Checksum][win-arm64-installer-checksum-main]<br>[zip][win-arm64-zip-main] | [![][win-arm64-badge-9.0.1XX-preview1]][win-arm64-version-9.0.1XX-preview1]<br>[Installer][win-arm64-installer-9.0.1XX-preview1] - [Checksum][win-arm64-installer-checksum-9.0.1XX-preview1]<br>[zip][win-arm64-zip-9.0.1XX-preview1] | [![][win-arm64-badge-8.0.3XX]][win-arm64-version-8.0.3XX]<br>[Installer][win-arm64-installer-8.0.3XX] - [Checksum][win-arm64-installer-checksum-8.0.3XX]<br>[zip][win-arm64-zip-8.0.3XX] | [![][win-arm64-badge-7.0.4XX]][win-arm64-version-7.0.4XX]<br>[Installer][win-arm64-installer-7.0.4XX] - [Checksum][win-arm64-installer-checksum-7.0.4XX]<br>[zip][win-arm64-zip-7.0.4XX] |
| **macOS x64** | [![][osx-x64-badge-main]][osx-x64-version-main]<br>[Installer][osx-x64-installer-main] - [Checksum][osx-x64-installer-checksum-main]<br>[tar.gz][osx-x64-targz-main] - [Checksum][osx-x64-targz-checksum-main] | [![][osx-x64-badge-9.0.1XX-preview1]][osx-x64-version-9.0.1XX-preview1]<br>[Installer][osx-x64-installer-9.0.1XX-preview1] - [Checksum][osx-x64-installer-checksum-9.0.1XX-preview1]<br>[tar.gz][osx-x64-targz-9.0.1XX-preview1] - [Checksum][osx-x64-targz-checksum-9.0.1XX-preview1] | [![][osx-x64-badge-8.0.3XX]][osx-x64-version-8.0.3XX]<br>[Installer][osx-x64-installer-8.0.3XX] - [Checksum][osx-x64-installer-checksum-8.0.3XX]<br>[tar.gz][osx-x64-targz-8.0.3XX] - [Checksum][osx-x64-targz-checksum-8.0.3XX] | [![][osx-x64-badge-7.0.4XX]][osx-x64-version-7.0.4XX]<br>[Installer][osx-x64-installer-7.0.4XX] - [Checksum][osx-x64-installer-checksum-7.0.4XX]<br>[tar.gz][osx-x64-targz-7.0.4XX] - [Checksum][osx-x64-targz-checksum-7.0.4XX] |
| **macOS arm64** | [![][osx-arm64-badge-main]][osx-arm64-version-main]<br>[Installer][osx-arm64-installer-main] - [Checksum][osx-arm64-installer-checksum-main]<br>[tar.gz][osx-arm64-targz-main] - [Checksum][osx-arm64-targz-checksum-main] | [![][osx-arm64-badge-9.0.1XX-preview1]][osx-arm64-version-9.0.1XX-preview1]<br>[Installer][osx-arm64-installer-9.0.1XX-preview1] - [Checksum][osx-arm64-installer-checksum-9.0.1XX-preview1]<br>[tar.gz][osx-arm64-targz-9.0.1XX-preview1] - [Checksum][osx-arm64-targz-checksum-9.0.1XX-preview1] | [![][osx-arm64-badge-8.0.3XX]][osx-arm64-version-8.0.3XX]<br>[Installer][osx-arm64-installer-8.0.3XX] - [Checksum][osx-arm64-installer-checksum-8.0.3XX]<br>[tar.gz][osx-arm64-targz-8.0.3XX] - [Checksum][osx-arm64-targz-checksum-8.0.3XX] | [![][osx-arm64-badge-7.0.4XX]][osx-arm64-version-7.0.4XX]<br>[Installer][osx-arm64-installer-7.0.4XX] - [Checksum][osx-arm64-installer-checksum-7.0.4XX]<br>[tar.gz][osx-arm64-targz-7.0.4XX] - [Checksum][osx-arm64-targz-checksum-7.0.4XX] |
| **Linux x64** | [![][linux-badge-main]][linux-version-main]<br>[DEB Installer][linux-DEB-installer-main] - [Checksum][linux-DEB-installer-checksum-main]<br>[RPM Installer][linux-RPM-installer-main] - [Checksum][linux-RPM-installer-checksum-main]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-main] - [Checksum][linux-targz-checksum-main] | [![][linux-badge-9.0.1XX-preview1]][linux-version-9.0.1XX-preview1]<br>[DEB Installer][linux-DEB-installer-9.0.1XX-preview1] - [Checksum][linux-DEB-installer-checksum-9.0.1XX-preview1]<br>[RPM Installer][linux-RPM-installer-9.0.1XX-preview1] - [Checksum][linux-RPM-installer-checksum-9.0.1XX-preview1]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-9.0.1XX-preview1] - [Checksum][linux-targz-checksum-9.0.1XX-preview1] | [![][linux-badge-8.0.3XX]][linux-version-8.0.3XX]<br>[DEB Installer][linux-DEB-installer-8.0.3XX] - [Checksum][linux-DEB-installer-checksum-8.0.3XX]<br>[RPM Installer][linux-RPM-installer-8.0.3XX] - [Checksum][linux-RPM-installer-checksum-8.0.3XX]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-8.0.3XX] - [Checksum][linux-targz-checksum-8.0.3XX] | [![][linux-badge-7.0.4XX]][linux-version-7.0.4XX]<br>[DEB Installer][linux-DEB-installer-7.0.4XX] - [Checksum][linux-DEB-installer-checksum-7.0.4XX]<br>[RPM Installer][linux-RPM-installer-7.0.4XX] - [Checksum][linux-RPM-installer-checksum-7.0.4XX]<br>_see installer note below_<sup>1</sup><br>[tar.gz][linux-targz-7.0.4XX] - [Checksum][linux-targz-checksum-7.0.4XX] |
| **Linux arm** | [![][linux-arm-badge-main]][linux-arm-version-main]<br>[tar.gz][linux-arm-targz-main] - [Checksum][linux-arm-targz-checksum-main] | [![][linux-arm-badge-9.0.1XX-preview1]][linux-arm-version-9.0.1XX-preview1]<br>[tar.gz][linux-arm-targz-9.0.1XX-preview1] - [Checksum][linux-arm-targz-checksum-9.0.1XX-preview1] | [![][linux-arm-badge-8.0.3XX]][linux-arm-version-8.0.3XX]<br>[tar.gz][linux-arm-targz-8.0.3XX] - [Checksum][linux-arm-targz-checksum-8.0.3XX] | [![][linux-arm-badge-7.0.4XX]][linux-arm-version-7.0.4XX]<br>[tar.gz][linux-arm-targz-7.0.4XX] - [Checksum][linux-arm-targz-checksum-7.0.4XX] |
| **Linux arm64** | [![][linux-arm64-badge-main]][linux-arm64-version-main]<br>[tar.gz][linux-arm64-targz-main] - [Checksum][linux-arm64-targz-checksum-main] | [![][linux-arm64-badge-9.0.1XX-preview1]][linux-arm64-version-9.0.1XX-preview1]<br>[tar.gz][linux-arm64-targz-9.0.1XX-preview1] - [Checksum][linux-arm64-targz-checksum-9.0.1XX-preview1] | [![][linux-arm64-badge-8.0.3XX]][linux-arm64-version-8.0.3XX]<br>[tar.gz][linux-arm64-targz-8.0.3XX] - [Checksum][linux-arm64-targz-checksum-8.0.3XX] | [![][linux-arm64-badge-7.0.4XX]][linux-arm64-version-7.0.4XX]<br>[tar.gz][linux-arm64-targz-7.0.4XX] - [Checksum][linux-arm64-targz-checksum-7.0.4XX] |
| **Linux-musl-x64** | [![][linux-musl-x64-badge-main]][linux-musl-x64-version-main]<br>[tar.gz][linux-musl-x64-targz-main] - [Checksum][linux-musl-x64-targz-checksum-main] | [![][linux-musl-x64-badge-9.0.1XX-preview1]][linux-musl-x64-version-9.0.1XX-preview1]<br>[tar.gz][linux-musl-x64-targz-9.0.1XX-preview1] - [Checksum][linux-musl-x64-targz-checksum-9.0.1XX-preview1] | [![][linux-musl-x64-badge-8.0.3XX]][linux-musl-x64-version-8.0.3XX]<br>[tar.gz][linux-musl-x64-targz-8.0.3XX] - [Checksum][linux-musl-x64-targz-checksum-8.0.3XX] | [![][linux-musl-x64-badge-7.0.4XX]][linux-musl-x64-version-7.0.4XX]<br>[tar.gz][linux-musl-x64-targz-7.0.4XX] - [Checksum][linux-musl-x64-targz-checksum-7.0.4XX] |
| **Linux-musl-arm** | [![][linux-musl-arm-badge-main]][linux-musl-arm-version-main]<br>[tar.gz][linux-musl-arm-targz-main] - [Checksum][linux-musl-arm-targz-checksum-main] | [![][linux-musl-arm-badge-9.0.1XX-preview1]][linux-musl-arm-version-9.0.1XX-preview1]<br>[tar.gz][linux-musl-arm-targz-9.0.1XX-preview1] - [Checksum][linux-musl-arm-targz-checksum-9.0.1XX-preview1] | [![][linux-musl-arm-badge-8.0.3XX]][linux-musl-arm-version-8.0.3XX]<br>[tar.gz][linux-musl-arm-targz-8.0.3XX] - [Checksum][linux-musl-arm-targz-checksum-8.0.3XX] | [![][linux-musl-arm-badge-7.0.4XX]][linux-musl-arm-version-7.0.4XX]<br>[tar.gz][linux-musl-arm-targz-7.0.4XX] - [Checksum][linux-musl-arm-targz-checksum-7.0.4XX] |
| **Linux-musl-arm64** | [![][linux-musl-arm64-badge-main]][linux-musl-arm64-version-main]<br>[tar.gz][linux-musl-arm64-targz-main] - [Checksum][linux-musl-arm64-targz-checksum-main] | [![][linux-musl-arm64-badge-9.0.1XX-preview1]][linux-musl-arm64-version-9.0.1XX-preview1]<br>[tar.gz][linux-musl-arm64-targz-9.0.1XX-preview1] - [Checksum][linux-musl-arm64-targz-checksum-9.0.1XX-preview1] | [![][linux-musl-arm64-badge-8.0.3XX]][linux-musl-arm64-version-8.0.3XX]<br>[tar.gz][linux-musl-arm64-targz-8.0.3XX] - [Checksum][linux-musl-arm64-targz-checksum-8.0.3XX] | [![][linux-musl-arm64-badge-7.0.4XX]][linux-musl-arm64-version-7.0.4XX]<br>[tar.gz][linux-musl-arm64-targz-7.0.4XX] - [Checksum][linux-musl-arm64-targz-checksum-7.0.4XX] |
| **RHEL 6** | **N/A** | **N/A** | **N/A** | **N/A** |
Reference notes:
> **1**: Our Debian packages are put together slightly differently than the other OS specific installers. Instead of combining everything, we have separate component packages that depend on each other. If you're installing the SDK from the .deb file (via dpkg or similar), then you'll need to install the corresponding dependencies first:
@ -203,6 +202,13 @@ Reference notes:
[win-x64-zip-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-x64.zip
[win-x64-zip-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-x64.zip.sha
[win-x64-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/win_x64_Release_version_badge.svg?no-cache
[win-x64-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-win-x64.txt
[win-x64-installer-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x64.exe
[win-x64-installer-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x64.exe.sha
[win-x64-zip-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x64.zip
[win-x64-zip-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x64.zip.sha
[win-x64-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/win_x64_Release_version_badge.svg?no-cache
[win-x64-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-win-x64.txt
[win-x64-installer-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-win-x64.exe
@ -224,6 +230,13 @@ Reference notes:
[win-x86-zip-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-x86.zip
[win-x86-zip-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-x86.zip.sha
[win-x86-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/win_x86_Release_version_badge.svg?no-cache
[win-x86-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-win-x86.txt
[win-x86-installer-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x86.exe
[win-x86-installer-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x86.exe.sha
[win-x86-zip-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x86.zip
[win-x86-zip-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-x86.zip.sha
[win-x86-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/win_x86_Release_version_badge.svg?no-cache
[win-x86-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-win-x86.txt
[win-x86-installer-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-win-x86.exe
@ -245,6 +258,13 @@ Reference notes:
[osx-x64-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-osx-x64.tar.gz
[osx-x64-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
[osx-x64-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/osx_x64_Release_version_badge.svg?no-cache
[osx-x64-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-osx-x64.txt
[osx-x64-installer-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-x64.pkg
[osx-x64-installer-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-x64.pkg.sha
[osx-x64-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-x64.tar.gz
[osx-x64-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-x64.pkg.tar.gz.sha
[osx-x64-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/osx_x64_Release_version_badge.svg?no-cache
[osx-x64-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-osx-x64.txt
[osx-x64-installer-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-osx-x64.pkg
@ -266,6 +286,13 @@ Reference notes:
[osx-arm64-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-osx-arm64.tar.gz
[osx-arm64-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
[osx-arm64-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/osx_arm64_Release_version_badge.svg?no-cache
[osx-arm64-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-osx-arm64.txt
[osx-arm64-installer-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-arm64.pkg
[osx-arm64-installer-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-arm64.pkg.sha
[osx-arm64-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-arm64.tar.gz
[osx-arm64-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-osx-arm64.pkg.tar.gz.sha
[osx-arm64-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/osx_arm64_Release_version_badge.svg?no-cache
[osx-arm64-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-osx-arm64.txt
[osx-arm64-installer-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-osx-arm64.pkg
@ -289,6 +316,15 @@ Reference notes:
[linux-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-x64.tar.gz
[linux-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-x64.tar.gz.sha
[linux-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/linux_x64_Release_version_badge.svg?no-cache
[linux-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-linux-x64.txt
[linux-DEB-installer-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-x64.deb
[linux-DEB-installer-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-x64.deb.sha
[linux-RPM-installer-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-x64.rpm
[linux-RPM-installer-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-x64.rpm.sha
[linux-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-x64.tar.gz
[linux-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-x64.tar.gz.sha
[linux-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/linux_x64_Release_version_badge.svg?no-cache
[linux-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-linux-x64.txt
[linux-DEB-installer-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-x64.deb
@ -312,6 +348,11 @@ Reference notes:
[linux-arm-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-arm.tar.gz
[linux-arm-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-arm.tar.gz.sha
[linux-arm-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/linux_arm_Release_version_badge.svg?no-cache
[linux-arm-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-linux-arm.txt
[linux-arm-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-arm.tar.gz
[linux-arm-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-arm.tar.gz.sha
[linux-arm-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/linux_arm_Release_version_badge.svg?no-cache
[linux-arm-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-linux-arm.txt
[linux-arm-targz-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-linux-arm.tar.gz
@ -327,6 +368,11 @@ Reference notes:
[linux-arm64-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-arm64.tar.gz
[linux-arm64-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-arm64.tar.gz.sha
[linux-arm64-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/linux_arm64_Release_version_badge.svg?no-cache
[linux-arm64-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-linux-arm64.txt
[linux-arm64-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-arm64.tar.gz
[linux-arm64-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-arm64.tar.gz.sha
[linux-arm64-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/linux_arm64_Release_version_badge.svg?no-cache
[linux-arm64-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-linux-arm64.txt
[linux-arm64-targz-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-linux-arm64.tar.gz
@ -342,6 +388,11 @@ Reference notes:
[rhel-6-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-rhel.6-x64.tar.gz
[rhel-6-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
[rhel-6-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/rhel.6_x64_Release_version_badge.svg?no-cache
[rhel-6-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-rhel.6-x64.txt
[rhel-6-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-rhel.6-x64.tar.gz
[rhel-6-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-rhel.6-x64.tar.gz.sha
[rhel-6-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/rhel.6_x64_Release_version_badge.svg?no-cache
[rhel-6-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-rhel.6-x64.txt
[rhel-6-targz-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-rhel.6-x64.tar.gz
@ -357,6 +408,11 @@ Reference notes:
[linux-musl-x64-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-musl-x64.tar.gz
[linux-musl-x64-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
[linux-musl-x64-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/linux_musl_x64_Release_version_badge.svg?no-cache
[linux-musl-x64-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-linux-musl-x64.txt
[linux-musl-x64-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-musl-x64.tar.gz
[linux-musl-x64-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-musl-x64.tar.gz.sha
[linux-musl-x64-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/linux_musl_x64_Release_version_badge.svg?no-cache
[linux-musl-x64-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-linux-musl-x64.txt
[linux-musl-x64-targz-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-linux-musl-x64.tar.gz
@ -372,6 +428,11 @@ Reference notes:
[linux-musl-arm-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-musl-arm.tar.gz
[linux-musl-arm-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
[linux-musl-arm-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/linux_musl_arm_Release_version_badge.svg?no-cache
[linux-musl-arm-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-linux-musl-arm.txt
[linux-musl-arm-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-musl-arm.tar.gz
[linux-musl-arm-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-musl-arm.tar.gz.sha
[linux-musl-arm-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/linux_musl_arm_Release_version_badge.svg?no-cache
[linux-musl-arm-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-linux-musl-arm.txt
[linux-musl-arm-targz-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-linux-musl-arm.tar.gz
@ -387,6 +448,11 @@ Reference notes:
[linux-musl-arm64-targz-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz
[linux-musl-arm64-targz-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
[linux-musl-arm64-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/linux_musl_arm64_Release_version_badge.svg?no-cache
[linux-musl-arm64-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-linux-musl-arm64.txt
[linux-musl-arm64-targz-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-musl-arm64.tar.gz
[linux-musl-arm64-targz-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-linux-musl-arm64.tar.gz.sha
[linux-musl-arm64-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/linux_musl_arm64_Release_version_badge.svg?no-cache
[linux-musl-arm64-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-linux-musl-arm64.txt
[linux-musl-arm64-targz-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-linux-musl-arm64.tar.gz
@ -402,6 +468,11 @@ Reference notes:
[win-arm-zip-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-arm.zip
[win-arm-zip-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-arm.zip.sha
[win-arm-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/win_arm_Release_version_badge.svg?no-cache
[win-arm-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-win-arm.txt
[win-arm-zip-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-arm.zip
[win-arm-zip-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-arm.zip.sha
[win-arm-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/win_arm_Release_version_badge.svg?no-cache
[win-arm-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-win-arm.txt
[win-arm-zip-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-win-arm.zip
@ -419,6 +490,13 @@ Reference notes:
[win-arm64-zip-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-arm64.zip
[win-arm64-zip-checksum-main]: https://aka.ms/dotnet/9.0.1xx/daily/dotnet-sdk-win-arm64.zip.sha
[win-arm64-badge-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/win_arm64_Release_version_badge.svg?no-cache
[win-arm64-version-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/productCommit-win-arm64.txt
[win-arm64-installer-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-arm64.exe
[win-arm64-installer-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-arm64.exe.sha
[win-arm64-zip-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-arm64.zip
[win-arm64-zip-checksum-9.0.1XX-preview1]: https://aka.ms/dotnet/9.0.1xx-preview1/daily/dotnet-sdk-win-arm64.zip.sha
[win-arm64-badge-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/win_arm64_Release_version_badge.svg?no-cache
[win-arm64-version-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/productCommit-win-arm64.txt
[win-arm64-installer-8.0.3XX]: https://aka.ms/dotnet/8.0.3xx/daily/dotnet-sdk-win-arm64.exe

View file

@ -8,13 +8,25 @@
</PropertyGroup>
<Target Name="ConfigureInnerBuildArg" BeforeTargets="GetSourceBuildCommandConfiguration">
<PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<InnerBuildArgs>$(InnerBuildArgs) /p:SkipBuildingInstallers=true</InnerBuildArgs>
<InnerBuildArgs>$(InnerBuildArgs) /p:IncludeNuGetPackageArchive=false</InnerBuildArgs>
<InnerBuildArgs>$(InnerBuildArgs) /p:IncludeAdditionalSharedFrameworks=false</InnerBuildArgs>
<InnerBuildArgs>$(InnerBuildArgs) /p:IncludeSharedFrameworksForBackwardsCompatibilityTests=false</InnerBuildArgs>
<InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:DISABLE_CROSSGEN=true</InnerBuildArgs>
<InnerBuildArgs Condition="'$(PgoInstrument)' == 'true'">$(InnerBuildArgs) /p:PgoInstrument=true</InnerBuildArgs>
</PropertyGroup>
</Target>
<!-- This should be resolved/removed with https://github.com/dotnet/source-build/issues/4101 -->
<Target Name="AddInstallers"
BeforeTargets="GetCategorizedIntermediateNupkgContents">
<ItemGroup Condition="'$(DotNetBuildOrchestrator)' == 'true'">
<!-- Include installers when in product VMR builds. These are not necessary when building the repo-only build as we don't
need them in downstream source-only PR legs. We could include them, but it may bump us over the package size limit. -->
<IntermediateNupkgArtifactFile Include="$(CurrentRepoSourceBuildArtifactsPackagesDir)Shipping\*.msi" />
<IntermediateNupkgArtifactFile Include="$(CurrentRepoSourceBuildArtifactsPackagesDir)Shipping\*.deb" />
<IntermediateNupkgArtifactFile Include="$(CurrentRepoSourceBuildArtifactsPackagesDir)Shipping\*.rpm" />
<IntermediateNupkgArtifactFile Include="$(CurrentRepoSourceBuildArtifactsPackagesDir)Shipping\*.pkg" />
</ItemGroup>
</Target>
</Project>

View file

@ -5,42 +5,41 @@
Source-build uses transitive dependency resolution to determine correct build SHA of all product contributing repos.
The order of dependencies is important and should not be modified without approval from dotnet/source-build-internal.
-->
<Dependency Name="Microsoft.WindowsDesktop.App.Ref" Version="9.0.0-preview.2.24075.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.WindowsDesktop.App.Ref" Version="9.0.0-preview.2.24122.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
<Sha>22ec63c9172b7998b103de28ceb98cf5b53d52b3</Sha>
<Sha>6cd8a235fa93f02ae0400a78625dab312c4642f2</Sha>
</Dependency>
<Dependency Name="VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24075.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24122.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
<Sha>22ec63c9172b7998b103de28ceb98cf5b53d52b3</Sha>
<Sha>6cd8a235fa93f02ae0400a78625dab312c4642f2</Sha>
</Dependency>
<Dependency Name="VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0" Version="9.0.0-preview.2.24075.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0" Version="9.0.0-preview.2.24122.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
<Sha>22ec63c9172b7998b103de28ceb98cf5b53d52b3</Sha>
<Sha>6cd8a235fa93f02ae0400a78625dab312c4642f2</Sha>
</Dependency>
<Dependency Name="Microsoft.WindowsDesktop.App.Runtime.win-x64" Version="9.0.0-preview.2.24075.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.WindowsDesktop.App.Runtime.win-x64" Version="9.0.0-preview.2.24122.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/windowsdesktop</Uri>
<Sha>22ec63c9172b7998b103de28ceb98cf5b53d52b3</Sha>
<Sha>6cd8a235fa93f02ae0400a78625dab312c4642f2</Sha>
</Dependency>
<Dependency Name="VS.Redist.Common.NetCore.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24076.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="VS.Redist.Common.NetCore.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>0d81a5ac76948b49840c3a6f44703bfd6489109b</Sha>
<SourceBuild RepoName="runtime" ManagedOnly="false" />
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.App.Ref" Version="9.0.0-preview.2.24076.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.NETCore.App.Ref" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>0d81a5ac76948b49840c3a6f44703bfd6489109b</Sha>
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
</Dependency>
<Dependency Name="VS.Redist.Common.NetCore.TargetingPack.x64.9.0" Version="9.0.0-preview.2.24076.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="VS.Redist.Common.NetCore.TargetingPack.x64.9.0" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>0d81a5ac76948b49840c3a6f44703bfd6489109b</Sha>
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="9.0.0-preview.2.24076.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>0d81a5ac76948b49840c3a6f44703bfd6489109b</Sha>
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.App.Host.win-x64" Version="9.0.0-preview.2.24076.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.NETCore.App.Host.win-x64" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>0d81a5ac76948b49840c3a6f44703bfd6489109b</Sha>
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
</Dependency>
<!-- Change blob version in GenerateLayout.targets if this is unpinned to service targeting pack -->
<!-- No new netstandard.library planned for 3.1 timeframe at this time. -->
@ -48,56 +47,72 @@
<Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>7d57652f33493fa022125b7f63aad0d70c52d810</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.Platforms" Version="9.0.0-preview.2.24076.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.NETCore.Platforms" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>0d81a5ac76948b49840c3a6f44703bfd6489109b</Sha>
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
</Dependency>
<Dependency Name="Microsoft.AspNetCore.App.Ref" Version="9.0.0-preview.2.24075.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>de12f70f8d536a72bd8c6a2add8f6c8ad8f344af</Sha>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.runtime.linux-x64" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
<SourceBuild RepoName="runtime" ManagedOnly="false" />
</Dependency>
<Dependency Name="Microsoft.AspNetCore.App.Ref.Internal" Version="9.0.0-preview.2.24075.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.AspNetCore.App.Ref" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>de12f70f8d536a72bd8c6a2add8f6c8ad8f344af</Sha>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
</Dependency>
<Dependency Name="Microsoft.AspNetCore.App.Ref.Internal" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
</Dependency>
<Dependency Name="Microsoft.AspNetCore.App.Runtime.win-x64" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
</Dependency>
<Dependency Name="VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
</Dependency>
<Dependency Name="dotnet-dev-certs" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
</Dependency>
<Dependency Name="dotnet-user-jwts" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
</Dependency>
<Dependency Name="dotnet-user-secrets" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.aspnetcore" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>cc5bc6b56dc0a6e6f1ca103acff5afd9c71973ba</Sha>
<SourceBuild RepoName="aspnetcore" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.AspNetCore.App.Runtime.win-x64" Version="9.0.0-preview.2.24075.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>de12f70f8d536a72bd8c6a2add8f6c8ad8f344af</Sha>
</Dependency>
<Dependency Name="VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24075.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>de12f70f8d536a72bd8c6a2add8f6c8ad8f344af</Sha>
</Dependency>
<Dependency Name="dotnet-dev-certs" Version="9.0.0-preview.2.24075.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>de12f70f8d536a72bd8c6a2add8f6c8ad8f344af</Sha>
</Dependency>
<Dependency Name="dotnet-user-jwts" Version="9.0.0-preview.2.24075.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>de12f70f8d536a72bd8c6a2add8f6c8ad8f344af</Sha>
</Dependency>
<Dependency Name="dotnet-user-secrets" Version="9.0.0-preview.2.24075.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>de12f70f8d536a72bd8c6a2add8f6c8ad8f344af</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Common.ItemTemplates" Version="9.0.100-preview.2.24076.3">
<Dependency Name="Microsoft.DotNet.Common.ItemTemplates" Version="9.0.100-preview.2.24123.3">
<Uri>https://github.com/dotnet/sdk</Uri>
<Sha>370bf4de035b328f8aadd69f0c2abbad14196f4f</Sha>
<Sha>e0a3cd9377fb9decba91d8cbcd50f2fe6107b12c</Sha>
</Dependency>
<Dependency Name="Microsoft.TemplateEngine.Cli" Version="9.0.100-preview.2.24076.3">
<Dependency Name="Microsoft.TemplateEngine.Cli" Version="9.0.100-preview.2.24123.3">
<Uri>https://github.com/dotnet/sdk</Uri>
<Sha>370bf4de035b328f8aadd69f0c2abbad14196f4f</Sha>
<Sha>e0a3cd9377fb9decba91d8cbcd50f2fe6107b12c</Sha>
</Dependency>
<Dependency Name="Microsoft.NET.Sdk" Version="9.0.100-preview.2.24076.3">
<Dependency Name="Microsoft.NET.Sdk" Version="9.0.100-preview.2.24123.3">
<Uri>https://github.com/dotnet/sdk</Uri>
<Sha>370bf4de035b328f8aadd69f0c2abbad14196f4f</Sha>
<Sha>e0a3cd9377fb9decba91d8cbcd50f2fe6107b12c</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.MSBuildSdkResolver" Version="9.0.100-preview.2.24123.3">
<Uri>https://github.com/dotnet/sdk</Uri>
<Sha>e0a3cd9377fb9decba91d8cbcd50f2fe6107b12c</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.sdk" Version="9.0.100-preview.2.24123.3">
<Uri>https://github.com/dotnet/sdk</Uri>
<Sha>e0a3cd9377fb9decba91d8cbcd50f2fe6107b12c</Sha>
<SourceBuild RepoName="sdk" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.MSBuildSdkResolver" Version="9.0.100-preview.2.24076.3">
<Uri>https://github.com/dotnet/sdk</Uri>
<Sha>370bf4de035b328f8aadd69f0c2abbad14196f4f</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.2.1" Version="1.0.2-beta4.22406.1">
<Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>0385265f4d0b6413d64aea0223172366a9b9858c</Sha>
@ -114,55 +129,76 @@
<Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>becc4bd157cd6608b51a5ffe414a5d2de6330272</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.8.0" Version="1.1.0-rc.24076.1">
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.8.0" Version="1.1.0-rc.24120.2">
<Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>5fc17f5abd212c64fe9adcc3641283954a7555aa</Sha>
<Sha>1591b24326caa98288e04e18e5c1b75c36c917c1</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.9.0" Version="1.1.0-rc.24120.2">
<Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>1591b24326caa98288e04e18e5c1b75c36c917c1</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.test-templates" Version="1.1.0-rc.24120.2">
<Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>1591b24326caa98288e04e18e5c1b75c36c917c1</Sha>
<SourceBuild RepoName="test-templates" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.9.0" Version="1.1.0-rc.24076.1">
<Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>5fc17f5abd212c64fe9adcc3641283954a7555aa</Sha>
</Dependency>
<!-- For coherency purposes, these versions should be gated by the versions of winforms and wpf routed via windowsdesktop -->
<Dependency Name="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="9.0.0-preview.2.24074.4" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
<Dependency Name="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="9.0.0-preview.2.24122.2" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/winforms</Uri>
<Sha>daf3f4db5de296ac78b51d279e86a38c62255e0b</Sha>
<Sha>822e882f4080b6197234cd82ad0d2f2a485a4f35</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Wpf.ProjectTemplates" Version="9.0.0-preview.2.24075.1" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
<Dependency Name="Microsoft.DotNet.Wpf.ProjectTemplates" Version="9.0.0-preview.2.24122.1" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/wpf</Uri>
<Sha>b9272765feae8da69fee7340c127add8296917fb</Sha>
<Sha>a86dc342ee4a97a9d36c1e55503e5d7ae7eb8b80</Sha>
</Dependency>
<Dependency Name="Microsoft.FSharp.Compiler" Version="12.8.300-beta.24075.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.FSharp.Compiler" Version="12.8.300-beta.24122.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/fsharp</Uri>
<Sha>32898dc51efc669de98e7e47f57d521bc07ac4cc</Sha>
<Sha>02bb351b606468bce98688fccda9d0c8adcd964d</Sha>
</Dependency>
<Dependency Name="Microsoft.SourceBuild.Intermediate.fsharp" Version="8.0.300-beta.24075.4" CoherentParentDependency="Microsoft.NET.Sdk">
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.fsharp" Version="8.0.300-beta.24122.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/fsharp</Uri>
<Sha>32898dc51efc669de98e7e47f57d521bc07ac4cc</Sha>
<Sha>02bb351b606468bce98688fccda9d0c8adcd964d</Sha>
<SourceBuild RepoName="fsharp" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.NET.Test.Sdk" Version="17.10.0-preview-24073-02" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.NET.Test.Sdk" Version="17.10.0-preview-24120-01" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/microsoft/vstest</Uri>
<Sha>c0c0e75fb8ea396a8b0717d17c2e738975d412e7</Sha>
<Sha>48d8e778c871315db0bad221b00f4843b06242c3</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.vstest" Version="17.10.0-preview-24120-01" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/microsoft/vstest</Uri>
<Sha>48d8e778c871315db0bad221b00f4843b06242c3</Sha>
<SourceBuild RepoName="vstest" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.NET.ILLink.Tasks" Version="9.0.0-preview.2.24076.4" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.NET.ILLink.Tasks" Version="9.0.0-preview.2.24123.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>0d81a5ac76948b49840c3a6f44703bfd6489109b</Sha>
<Sha>99b76018b6e4edc4ce185dd5f3c5697c6941d88e</Sha>
</Dependency>
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.10.0-1.24067.21" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.10.0-2.24122.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>3cd939f76803da435c20b082a5cfcc844386fcfb</Sha>
<Sha>2bfcc497086de48b15861bb56407324facef4c4a</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.roslyn" Version="4.10.0-2.24122.3" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>2bfcc497086de48b15861bb56407324facef4c4a</Sha>
<SourceBuild RepoName="roslyn" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.Build" Version="17.10.0-preview-24073-02" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.Build" Version="17.10.0-preview-24122-01" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>d51ae5297cd0a24caa8cfe356442cc8634c3f087</Sha>
<Sha>d4cb14fe4d2e6df0327308feab18ccbb2046246c</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.msbuild" Version="17.10.0-preview-24122-01" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>d4cb14fe4d2e6df0327308feab18ccbb2046246c</Sha>
<SourceBuild RepoName="msbuild" ManagedOnly="true" />
</Dependency>
<Dependency Name="NuGet.Build.Tasks" Version="6.9.0-rc.86" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="NuGet.Build.Tasks" Version="6.10.0-preview.2.41" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/nuget/nuget.client</Uri>
<Sha>d55931a69dcda3dcb87ba46a09fe268e0febc223</Sha>
<Sha>63958aab19b7120862ff55eac32ab6a155596a59</Sha>
<SourceBuildTarball RepoName="nuget-client" ManagedOnly="true" />
</Dependency>
<!-- TODO -->
@ -170,81 +206,109 @@
<Uri>https://github.com/Microsoft/ApplicationInsights-dotnet</Uri>
<Sha>53b80940842204f78708a538628288ff5d741a1d</Sha>
</Dependency>
<Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport" Version="9.0.0-alpha.1.24072.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/emsdk</Uri>
<Sha>ae7c93e25ae596594b3b22d64115f374a3595912</Sha>
<Sha>2d3f1fe4807a21879cedba9d3fde8cd329fb17f2</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.emsdk" Version="9.0.0-preview.2.24121.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/emsdk</Uri>
<Sha>2d3f1fe4807a21879cedba9d3fde8cd329fb17f2</Sha>
<SourceBuild RepoName="emsdk" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.NET.Sdk.Aspire.Manifest-8.0.100" Version="8.0.0-preview.3.24060.4">
<Uri>https://github.com/dotnet/aspire</Uri>
<Sha>66a1dd77e4077592a587c1429c8814d1057dc474</Sha>
<SourceBuild RepoName="aspire" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.Deployment.DotNet.Releases" Version="2.0.0-preview.1.24067.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="Microsoft.Deployment.DotNet.Releases" Version="2.0.0-preview.1.24113.2" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/deployment-tools</Uri>
<Sha>e56c69b0610b50407d29fdc2dda2574712a7b94d</Sha>
<Sha>822ff266c5f999ab9ceb6928df59d79285ea4a4f</Sha>
</Dependency>
<!-- Explicit dependency because Microsoft.Deployment.DotNet.Releases has different versioning
than the SB intermediate -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.deployment-tools" Version="9.0.0-preview.1.24067.1" CoherentParentDependency="Microsoft.NET.Sdk">
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.deployment-tools" Version="9.0.0-preview.1.24113.2" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/deployment-tools</Uri>
<Sha>e56c69b0610b50407d29fdc2dda2574712a7b94d</Sha>
<Sha>822ff266c5f999ab9ceb6928df59d79285ea4a4f</Sha>
<SourceBuild RepoName="deployment-tools" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="9.0.0-alpha.1.24076.1">
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="9.0.0-alpha.1.24112.1">
<Uri>https://github.com/dotnet/source-build-externals</Uri>
<Sha>414a85bf970355c0e91d6a2de1ee183fafbfcecd</Sha>
<Sha>ddfb60463c966af55fd0e222c2266170e83d1324</Sha>
<SourceBuild RepoName="source-build-externals" ManagedOnly="true" />
</Dependency>
<Dependency Name="System.CommandLine" Version="2.0.0-beta4.24068.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Dependency Name="System.CommandLine" Version="2.0.0-beta4.24112.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/command-line-api</Uri>
<Sha>ecd2ce5eafbba3008a7d4f5d04b025d30928c812</Sha>
<Sha>e9ac4ff4293cf853f3d07eb9e747aef27f5be965</Sha>
</Dependency>
<Dependency Name="Microsoft.SourceBuild.Intermediate.command-line-api" Version="0.1.506801" CoherentParentDependency="Microsoft.NET.Sdk">
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.command-line-api" Version="0.1.511201" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/command-line-api</Uri>
<Sha>ecd2ce5eafbba3008a7d4f5d04b025d30928c812</Sha>
<Sha>e9ac4ff4293cf853f3d07eb9e747aef27f5be965</Sha>
<SourceBuild RepoName="command-line-api" ManagedOnly="true" />
</Dependency>
</ProductDependencies>
<ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24075.2">
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24114.1">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>1d8f27f89c3b167f63e28e73a3d9ab345e81d310</Sha>
<Sha>d5b02a4900c4d521cb48b8f0d7e3f28175268f7c</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="9.0.0-beta.24114.1">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>d5b02a4900c4d521cb48b8f0d7e3f28175268f7c</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="9.0.0-beta.24114.1">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>d5b02a4900c4d521cb48b8f0d7e3f28175268f7c</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Darc" Version="1.1.0-beta.24112.3">
<Uri>https://github.com/dotnet/arcade-services</Uri>
<Sha>c041bcdab75f5447be8bd11ddcfbe8e639f13f32</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.DarcLib" Version="1.1.0-beta.24112.3">
<Uri>https://github.com/dotnet/arcade-services</Uri>
<Sha>c041bcdab75f5447be8bd11ddcfbe8e639f13f32</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.24114.1">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>d5b02a4900c4d521cb48b8f0d7e3f28175268f7c</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.24114.1">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>d5b02a4900c4d521cb48b8f0d7e3f28175268f7c</Sha>
<SourceBuild RepoName="arcade" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="9.0.0-beta.24075.2">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>1d8f27f89c3b167f63e28e73a3d9ab345e81d310</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="9.0.0-beta.24075.2">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>1d8f27f89c3b167f63e28e73a3d9ab345e81d310</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Darc" Version="1.1.0-beta.24074.1">
<Uri>https://github.com/dotnet/arcade-services</Uri>
<Sha>70e9b79b12680b7be6c36913f1d0ecb5cc9e32cf</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.DarcLib" Version="1.1.0-beta.24074.1">
<Uri>https://github.com/dotnet/arcade-services</Uri>
<Sha>70e9b79b12680b7be6c36913f1d0ecb5cc9e32cf</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.24075.2">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>1d8f27f89c3b167f63e28e73a3d9ab345e81d310</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="9.0.0-alpha.1.23612.13">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>ab1a8224cdf115b65e0db5dc88d11f205068f444</Sha>
</Dependency>
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24075.1">
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24119.1">
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
<Sha>e659f328bf255d3e17e81296117c3aed1d461f2f</Sha>
<Sha>539af5d8ae183d4fe61e8b2f8f4a8505c8a765a7</Sha>
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.ScenarioTests.SdkTemplateTests" Version="9.0.0-preview.24057.2">
<Uri>https://github.com/dotnet/scenario-tests</Uri>
<Sha>bfde902a10d7b672f4fc7e844198ede405dbb9c6</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.scenario-tests" Version="9.0.0-preview.24057.2">
<Uri>https://github.com/dotnet/scenario-tests</Uri>
<Sha>bfde902a10d7b672f4fc7e844198ede405dbb9c6</Sha>
<SourceBuild RepoName="scenario-tests" ManagedOnly="true" />
</Dependency>
<!-- Aspire isn't really a toolset dependency. However, it only inserts a baseline manifest in installer,
and if you squint at it, this means we can say that its specific dependency versions don't matter to installer.
Avoiding this as a product dependency avoids a long coherency path (aspnetcore->extensions->aspire->installer).
**It is** of course possible that an incoherent aspire means that aspire depends on versions of extensions that
aren't shipping, or those extensions packages depend on aspnetcore packages that won't ship. However, given the cost
of maintaining this coherency path is high. This being toolset means that aspire is responsible for its own coherency.
-->
<Dependency Name="Microsoft.NET.Sdk.Aspire.Manifest-9.0.100-preview.1" Version="9.0.0-preview.1.24116.3">
<Uri>https://github.com/dotnet/aspire</Uri>
<Sha>1dd4b3265f01a50b20522fd3d7f3cd315db5be6b</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.aspire" Version="9.0.0-preview.1.24116.3">
<Uri>https://github.com/dotnet/aspire</Uri>
<Sha>1dd4b3265f01a50b20522fd3d7f3cd315db5be6b</Sha>
<SourceBuild RepoName="aspire" ManagedOnly="true" />
</Dependency>
</ToolsetDependencies>
</Dependencies>

View file

@ -9,6 +9,10 @@
<VersionMinor>0</VersionMinor>
<VersionSDKMinor>1</VersionSDKMinor>
<VersionFeature>00</VersionFeature>
<!-- This property powers the SdkAnalysisLevel property in end-user MSBuild code.
It should always be the hundreds-value of the current SDK version, never any
preview version components or anything else. E.g. 8.0.100, 9.0.300, etc. -->
<SdkFeatureBand>$(VersionMajor).$(VersionMinor).$(VersionSDKMinor)00</SdkFeatureBand>
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionSDKMinor)$(VersionFeature)</VersionPrefix>
<MajorMinorVersion>$(VersionMajor).$(VersionMinor)</MajorMinorVersion>
<CliProductBandVersion>$(MajorMinorVersion).$(VersionSDKMinor)</CliProductBandVersion>
@ -19,7 +23,7 @@
<PreReleaseVersionLabel Condition="'$(StabilizePackageVersion)' != 'true'">preview</PreReleaseVersionLabel>
<PreReleaseVersionLabel Condition="'$(StabilizePackageVersion)' == 'true' and '$(VersionFeature)' == '00'">rtm</PreReleaseVersionLabel>
<PreReleaseVersionLabel Condition="'$(StabilizePackageVersion)' == 'true' and '$(VersionFeature)' != '00'">servicing</PreReleaseVersionLabel>
<PreReleaseVersionIteration Condition="'$(StabilizePackageVersion)' != 'true'">2</PreReleaseVersionIteration>
<PreReleaseVersionIteration Condition="'$(StabilizePackageVersion)' != 'true'">3</PreReleaseVersionIteration>
</PropertyGroup>
<PropertyGroup>
<VersionFeature21>30</VersionFeature21>
@ -40,19 +44,19 @@
</PropertyGroup>
<PropertyGroup>
<!-- Dependency from https://github.com/dotnet/arcade -->
<MicrosoftDotNetBuildTasksInstallersPackageVersion>9.0.0-beta.24075.2</MicrosoftDotNetBuildTasksInstallersPackageVersion>
<MicrosoftDotNetBuildTasksInstallersPackageVersion>9.0.0-beta.24114.1</MicrosoftDotNetBuildTasksInstallersPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependency from https://github.com/dotnet/arcade-services -->
<MicrosoftDotNetDarcLibVersion>1.1.0-beta.24074.1</MicrosoftDotNetDarcLibVersion>
<MicrosoftDotNetDarcLibVersion>1.1.0-beta.24112.3</MicrosoftDotNetDarcLibVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependency from https://github.com/dotnet/winforms -->
<MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>9.0.0-preview.2.24074.4</MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>
<MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>9.0.0-preview.2.24122.2</MicrosoftDotnetWinFormsProjectTemplatesPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependency from https://github.com/dotnet/wpf -->
<MicrosoftDotNetWpfProjectTemplatesPackageVersion>9.0.0-preview.2.24075.1</MicrosoftDotNetWpfProjectTemplatesPackageVersion>
<MicrosoftDotNetWpfProjectTemplatesPackageVersion>9.0.0-preview.2.24122.1</MicrosoftDotNetWpfProjectTemplatesPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependency from https://github.com/dotnet/test-templates -->
@ -64,8 +68,8 @@
<!-- Supported versions -->
<MicrosoftDotNetTestProjectTemplates60PackageVersion>1.1.0-rc.24069.1</MicrosoftDotNetTestProjectTemplates60PackageVersion>
<MicrosoftDotNetTestProjectTemplates70PackageVersion>1.1.0-rc.24069.1</MicrosoftDotNetTestProjectTemplates70PackageVersion>
<MicrosoftDotNetTestProjectTemplates80PackageVersion>1.1.0-rc.24076.1</MicrosoftDotNetTestProjectTemplates80PackageVersion>
<MicrosoftDotNetTestProjectTemplates90PackageVersion>1.1.0-rc.24076.1</MicrosoftDotNetTestProjectTemplates90PackageVersion>
<MicrosoftDotNetTestProjectTemplates80PackageVersion>1.1.0-rc.24120.2</MicrosoftDotNetTestProjectTemplates80PackageVersion>
<MicrosoftDotNetTestProjectTemplates90PackageVersion>1.1.0-rc.24120.2</MicrosoftDotNetTestProjectTemplates90PackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- NUnit3.DotNetNew.Template versions do not 'flow in' -->
@ -73,13 +77,13 @@
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/aspnet/AspNetCore -->
<MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>9.0.0-preview.2.24075.3</MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>
<MicrosoftAspNetCoreAppRefPackageVersion>9.0.0-preview.2.24075.3</MicrosoftAspNetCoreAppRefPackageVersion>
<MicrosoftAspNetCoreAppRefInternalPackageVersion>9.0.0-preview.2.24075.3</MicrosoftAspNetCoreAppRefInternalPackageVersion>
<VSRedistCommonAspNetCoreSharedFrameworkx6490PackageVersion>9.0.0-preview.2.24075.3</VSRedistCommonAspNetCoreSharedFrameworkx6490PackageVersion>
<DotnetDevCertsPackageVersion>9.0.0-preview.2.24075.3</DotnetDevCertsPackageVersion>
<DotnetUserJwtsPackageVersion>9.0.0-preview.2.24075.3</DotnetUserJwtsPackageVersion>
<DotnetUserSecretsPackageVersion>9.0.0-preview.2.24075.3</DotnetUserSecretsPackageVersion>
<MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>9.0.0-preview.2.24121.1</MicrosoftAspNetCoreAppRuntimewinx64PackageVersion>
<MicrosoftAspNetCoreAppRefPackageVersion>9.0.0-preview.2.24121.1</MicrosoftAspNetCoreAppRefPackageVersion>
<MicrosoftAspNetCoreAppRefInternalPackageVersion>9.0.0-preview.2.24121.1</MicrosoftAspNetCoreAppRefInternalPackageVersion>
<VSRedistCommonAspNetCoreSharedFrameworkx6490PackageVersion>9.0.0-preview.2.24121.1</VSRedistCommonAspNetCoreSharedFrameworkx6490PackageVersion>
<DotnetDevCertsPackageVersion>9.0.0-preview.2.24121.1</DotnetDevCertsPackageVersion>
<DotnetUserJwtsPackageVersion>9.0.0-preview.2.24121.1</DotnetUserJwtsPackageVersion>
<DotnetUserSecretsPackageVersion>9.0.0-preview.2.24121.1</DotnetUserSecretsPackageVersion>
</PropertyGroup>
<PropertyGroup>
<MicroBuildCorePackageVersion>0.2.0</MicroBuildCorePackageVersion>
@ -87,36 +91,36 @@
<!-- TODO -->
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/sdk -->
<MicrosoftDotNetCommonItemTemplatesPackageVersion>9.0.100-preview.2.24076.3</MicrosoftDotNetCommonItemTemplatesPackageVersion>
<MicrosoftNETSdkPackageVersion>9.0.100-preview.2.24076.3</MicrosoftNETSdkPackageVersion>
<MicrosoftDotNetMSBuildSdkResolverPackageVersion>9.0.100-preview.2.24076.3</MicrosoftDotNetMSBuildSdkResolverPackageVersion>
<MicrosoftDotNetCommonItemTemplatesPackageVersion>9.0.100-preview.2.24123.3</MicrosoftDotNetCommonItemTemplatesPackageVersion>
<MicrosoftNETSdkPackageVersion>9.0.100-preview.2.24123.3</MicrosoftNETSdkPackageVersion>
<MicrosoftDotNetMSBuildSdkResolverPackageVersion>9.0.100-preview.2.24123.3</MicrosoftDotNetMSBuildSdkResolverPackageVersion>
<MicrosoftNETBuildExtensionsPackageVersion>$(MicrosoftNETSdkPackageVersion)</MicrosoftNETBuildExtensionsPackageVersion>
<MicrosoftDotnetToolsetInternalPackageVersion>$(MicrosoftNETSdkPackageVersion)</MicrosoftDotnetToolsetInternalPackageVersion>
<MicrosoftDotnetTemplateLocatorPackageVersion>$(MicrosoftNETSdkPackageVersion)</MicrosoftDotnetTemplateLocatorPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/roslyn -->
<MicrosoftNetCompilersToolsetPackageVersion>4.10.0-1.24067.21</MicrosoftNetCompilersToolsetPackageVersion>
<MicrosoftNetCompilersToolsetPackageVersion>4.10.0-2.24122.3</MicrosoftNetCompilersToolsetPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/corefx -->
<MicrosoftNETCorePlatformsPackageVersion>9.0.0-preview.2.24076.4</MicrosoftNETCorePlatformsPackageVersion>
<MicrosoftNETCorePlatformsPackageVersion>9.0.0-preview.2.24123.1</MicrosoftNETCorePlatformsPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/core-setup -->
<VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion>9.0.0-preview.2.24076.4</VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion>
<VSRedistCommonNetCoreTargetingPackx6490PackageVersion>9.0.0-preview.2.24076.4</VSRedistCommonNetCoreTargetingPackx6490PackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>9.0.0-preview.2.24076.4</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<MicrosoftNETCoreAppHostwinx64PackageVersion>9.0.0-preview.2.24076.4</MicrosoftNETCoreAppHostwinx64PackageVersion>
<MicrosoftNETCoreAppRefPackageVersion>9.0.0-preview.2.24076.4</MicrosoftNETCoreAppRefPackageVersion>
<VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion>9.0.0-preview.2.24123.1</VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion>
<VSRedistCommonNetCoreTargetingPackx6490PackageVersion>9.0.0-preview.2.24123.1</VSRedistCommonNetCoreTargetingPackx6490PackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>9.0.0-preview.2.24123.1</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<MicrosoftNETCoreAppHostwinx64PackageVersion>9.0.0-preview.2.24123.1</MicrosoftNETCoreAppHostwinx64PackageVersion>
<MicrosoftNETCoreAppRefPackageVersion>9.0.0-preview.2.24123.1</MicrosoftNETCoreAppRefPackageVersion>
<NETStandardLibraryRefPackageVersion>2.1.0</NETStandardLibraryRefPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/windowsdesktop -->
<VSRedistCommonWindowsDesktopSharedFrameworkx6490PackageVersion>9.0.0-preview.2.24075.4</VSRedistCommonWindowsDesktopSharedFrameworkx6490PackageVersion>
<VSRedistCommonWindowsDesktopTargetingPackx6490PackageVersion>9.0.0-preview.2.24075.4</VSRedistCommonWindowsDesktopTargetingPackx6490PackageVersion>
<MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>9.0.0-preview.2.24075.4</MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>
<MicrosoftWindowsDesktopAppRefPackageVersion>9.0.0-preview.2.24075.4</MicrosoftWindowsDesktopAppRefPackageVersion>
<VSRedistCommonWindowsDesktopSharedFrameworkx6490PackageVersion>9.0.0-preview.2.24122.1</VSRedistCommonWindowsDesktopSharedFrameworkx6490PackageVersion>
<VSRedistCommonWindowsDesktopTargetingPackx6490PackageVersion>9.0.0-preview.2.24122.1</VSRedistCommonWindowsDesktopTargetingPackx6490PackageVersion>
<MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>9.0.0-preview.2.24122.1</MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion>
<MicrosoftWindowsDesktopAppRefPackageVersion>9.0.0-preview.2.24122.1</MicrosoftWindowsDesktopAppRefPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Runtime and Apphost pack versions are the same for all RIDs. We flow the x64 version above and create aliases without the winx64 here for clarity elsewhere. -->
@ -127,11 +131,11 @@
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/NuGet/NuGet.Client -->
<NuGetBuildTasksPackageVersion>6.9.0-rc.86</NuGetBuildTasksPackageVersion>
<NuGetBuildTasksPackageVersion>6.10.0-preview.2.41</NuGetBuildTasksPackageVersion>
</PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/deployment-tools -->
<PropertyGroup>
<MicrosoftDeploymentDotNetReleasesVersion>2.0.0-preview.1.24067.1</MicrosoftDeploymentDotNetReleasesVersion>
<MicrosoftDeploymentDotNetReleasesVersion>2.0.0-preview.1.24113.2</MicrosoftDeploymentDotNetReleasesVersion>
</PropertyGroup>
<PropertyGroup>
<!-- TODO -->
@ -186,7 +190,8 @@
<SharedHostVersion>$(MicrosoftNETCoreAppRuntimePackageVersion)</SharedHostVersion>
</PropertyGroup>
<PropertyGroup>
<WixPackageVersion>1.0.0-v3.14.0.5722</WixPackageVersion>
<!-- This is the version of the zip archive for the WiX toolset and is different from the NuGet package version format. -->
<WixVersion>3.14.0.8606</WixVersion>
</PropertyGroup>
<PropertyGroup>
<!-- 9.0 Template versions -->
@ -248,23 +253,23 @@
<PropertyGroup>
<VersionToolsVersion>2.2.0-beta.19072.10</VersionToolsVersion>
<DotnetDebToolVersion>2.0.0</DotnetDebToolVersion>
<MicrosoftNETTestSdkVersion>17.10.0-preview-24073-02</MicrosoftNETTestSdkVersion>
<MicrosoftNETTestSdkVersion>17.10.0-preview-24120-01</MicrosoftNETTestSdkVersion>
<MicrosoftExtensionsLoggingConsoleVersion>9.0.0-alpha.1.24058.10</MicrosoftExtensionsLoggingConsoleVersion>
<MicrosoftDotNetScenarioTestsSdkTemplateTestsVersion>9.0.0-preview.24057.2</MicrosoftDotNetScenarioTestsSdkTemplateTestsVersion>
</PropertyGroup>
<!-- Workload manifest package versions -->
<PropertyGroup>
<AspireFeatureBand>8.0.100</AspireFeatureBand>
<AspireWorkloadManifestVersion>8.0.0-preview.3.24060.4</AspireWorkloadManifestVersion>
<MauiFeatureBand>9.0.100-alpha.1</MauiFeatureBand>
<MauiWorkloadManifestVersion>9.0.0-ci.net9.9818</MauiWorkloadManifestVersion>
<XamarinAndroidWorkloadManifestVersion>34.99.0-preview.1.109</XamarinAndroidWorkloadManifestVersion>
<XamarinIOSWorkloadManifestVersion>17.0.9712-net9-p1</XamarinIOSWorkloadManifestVersion>
<XamarinMacCatalystWorkloadManifestVersion>17.0.9712-net9-p1</XamarinMacCatalystWorkloadManifestVersion>
<XamarinMacOSWorkloadManifestVersion>14.0.9712-net9-p1</XamarinMacOSWorkloadManifestVersion>
<XamarinTvOSWorkloadManifestVersion>17.0.9712-net9-p1</XamarinTvOSWorkloadManifestVersion>
<AspireFeatureBand>9.0.100-preview.1</AspireFeatureBand>
<MicrosoftNETSdkAspireManifest90100preview1PackageVersion>9.0.0-preview.1.24116.3</MicrosoftNETSdkAspireManifest90100preview1PackageVersion>
<MauiFeatureBand>9.0.100-preview.1</MauiFeatureBand>
<MauiWorkloadManifestVersion>9.0.0-preview.1.9973</MauiWorkloadManifestVersion>
<XamarinAndroidWorkloadManifestVersion>34.99.0-preview.1.151</XamarinAndroidWorkloadManifestVersion>
<XamarinIOSWorkloadManifestVersion>17.2.9088-net9-p1</XamarinIOSWorkloadManifestVersion>
<XamarinMacCatalystWorkloadManifestVersion>17.2.9088-net9-p1</XamarinMacCatalystWorkloadManifestVersion>
<XamarinMacOSWorkloadManifestVersion>14.2.9088-net9-p1</XamarinMacOSWorkloadManifestVersion>
<XamarinTvOSWorkloadManifestVersion>17.2.9088-net9-p1</XamarinTvOSWorkloadManifestVersion>
<!-- Workloads from dotnet/emsdk -->
<MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion>9.0.0-alpha.1.24072.1</MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion>
<MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion>9.0.0-preview.2.24121.1</MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion>
<EmscriptenWorkloadManifestVersion>$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion)</EmscriptenWorkloadManifestVersion>
<!-- emsdk workload prerelease version band must match the emsdk feature band -->
<EmscriptenWorkloadFeatureBand>9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-[A-z]*[\.]*\d*`))</EmscriptenWorkloadFeatureBand>

View file

@ -83,10 +83,10 @@ jobs:
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $(DncEngPublicBuildPool)
demands: ImageOverride -equals windows.vs2019.amd64.open
demands: ImageOverride -equals windows.vs2022.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals windows.vs2019.amd64
demands: ImageOverride -equals windows.vs2022.amd64
${{ if eq(parameters.agentOs, 'Linux') }}:
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:

View file

@ -35,6 +35,10 @@ fi
case "$CPUName" in
arm64|aarch64)
arch=arm64
if [ "$(getconf LONG_BIT)" -lt 64 ]; then
# This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS)
arch=arm
fi
;;
loongarch64)

View file

@ -64,7 +64,7 @@ try {
$GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty
}
if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) {
$GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.8.1-2" -MemberType NoteProperty
$GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.8.5" -MemberType NoteProperty
}
if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") {
$xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true

View file

@ -58,7 +58,7 @@ jobs:
demands: Cmd
# If it's not devdiv, it's dnceng
${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
name: $(DncEngInternalBuildPool)
name: NetCore1ESPool-Publishing-Internal
demands: ImageOverride -equals windows.vs2019.amd64
steps:

View file

@ -1,6 +1,6 @@
parameters:
runAsPublic: false
sourceIndexPackageVersion: 1.0.1-20231213.4
sourceIndexPackageVersion: 1.0.1-20240129.2
sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
preSteps: []

View file

@ -259,7 +259,7 @@ stages:
demands: Cmd
# If it's not devdiv, it's dnceng
${{ else }}:
name: $(DncEngInternalBuildPool)
name: NetCore1ESPool-Publishing-Internal
demands: ImageOverride -equals windows.vs2019.amd64
steps:
- template: setup-maestro-vars.yml

View file

@ -5,6 +5,8 @@ parameters:
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
@ -29,7 +31,7 @@ parameters:
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\eng\common\helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"'
- 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)
@ -59,7 +61,7 @@ steps:
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/eng/common/helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog
- 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)

View file

@ -379,8 +379,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
# If the version of msbuild is going to be xcopied,
# use this version. Version matches a package here:
# https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/RoslynTools.MSBuild/versions/17.8.1-2
$defaultXCopyMSBuildVersion = '17.8.1-2'
# https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/17.8.5
$defaultXCopyMSBuildVersion = '17.8.5'
if (!$vsRequirements) {
if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') {
@ -445,7 +445,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
if ($xcopyMSBuildVersion.Trim() -ine "none") {
$vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install
if ($vsInstallDir -eq $null) {
throw "Could not xcopy msbuild. Please check that package 'RoslynTools.MSBuild @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'."
throw "Could not xcopy msbuild. Please check that package 'Microsoft.DotNet.Arcade.MSBuild.Xcopy @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'."
}
}
if ($vsInstallDir -eq $null) {
@ -482,7 +482,7 @@ function InstallXCopyMSBuild([string]$packageVersion) {
}
function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) {
$packageName = 'RoslynTools.MSBuild'
$packageName = 'Microsoft.DotNet.Arcade.MSBuild.Xcopy'
$packageDir = Join-Path $ToolsDir "msbuild\$packageVersion"
$packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg"

View file

@ -1,23 +1,7 @@
### This job source-builds https://github.com/dotnet/dotnet with given parameters
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested
### This job builds https://github.com/dotnet/dotnet with given parameters
### If run in an installer PR, new changes are applied to a local copy of the VMR, then it is built and tested
parameters:
- name: isBuiltFromVmr
displayName: True when build is running from dotnet/dotnet directly
type: boolean
- name: vmrPath
type: string
default: $(Agent.BuildDirectory)/vmr
- name: vmrBranch
displayName: dotnet/dotnet branch to use
type: string
default: $(Build.SourceBranch)
- name: buildName
type: string
- name: architecture
type: string
@ -25,34 +9,60 @@ parameters:
type: string
default: ''
- name: buildName
type: string
- name: container
type: string
default: ''
- name: crossRootFs
type: string
default: ''
- name: pool
type: object
# Allow downloading artifacts from the internet during the build
- name: runOnline
type: boolean
# Name of a previous job (from the same template as this) whose output will be used to build this job
# The SDK from its artifacts is copied to vmr/.dotnet
- name: reuseBuildArtifactsFrom
- name: targetOS
type: string
default: ''
- name: excludeOmniSharpTests
type: boolean
- name: targetArchitecture
type: string
default: ''
- name: enablePoison
type: boolean
#### SOURCE-ONLY parameters ####
# Instead of building the VMR directly, exports the sources into a tarball and builds from that
- name: buildFromArchive
type: boolean
default: false
# Use the previous version's SDK to build the current one
- name: withPreviousSDK
# Enable for source-building the VMR
- name: buildSourceOnly
type: boolean
default: false
- name: enablePoison
type: boolean
default: false
- name: excludeOmniSharpTests
type: boolean
default: false
# Name of a previous job (from the same template as this) whose output will be used to build this job
# The SDK from its artifacts is copied to $(sourcesPath)/.dotnet
- name: reuseBuildArtifactsFrom
type: string
default: ''
# Allow downloading artifacts from the internet during the build
- name: runOnline
type: boolean
default: true
- name: runTests
type: boolean
default: false
@ -61,13 +71,25 @@ parameters:
type: boolean
default: false
- name: crossRootFS
# Freeform field for extra values to pass to build.sh for special build modes
- name: extraProperties
type: string
default: ''
- name: targetRid
# Use the previous version's SDK to build the current one
- name: withPreviousSDK
type: boolean
default: false
#### INSTALLER parameters ####
- name: isBuiltFromVmr
displayName: True when build is running from dotnet/dotnet directly
type: boolean
- name: vmrBranch
displayName: dotnet/dotnet branch to use
type: string
default: ''
jobs:
- job: ${{ parameters.buildName }}_${{ parameters.architecture }}
@ -90,6 +112,13 @@ jobs:
- name: additionalBuildArgs
value: ''
- ${{ if parameters.isBuiltFromVmr }}:
- name: vmrPath
value: $(Build.SourcesDirectory)
- ${{ else }}:
- name: vmrPath
value: $(Agent.BuildDirectory)/vmr
# Location of the VMR sources
# We either build the repo directly, or we extract them outside (which is what partners do)
- ${{ if parameters.buildFromArchive }}:
@ -97,35 +126,34 @@ jobs:
value: $(Build.StagingDirectory)/dotnet-sources/
- ${{ else }}:
- name: sourcesPath
value: ${{ parameters.vmrPath }}
value: $(vmrPath)
steps:
- ${{ if not(parameters.isBuiltFromVmr) }}:
- template: ../steps/vmr-prepare.yml
parameters:
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
vmrBranch: $(System.PullRequest.TargetBranch)
${{ else }}:
vmrBranch: ${{ parameters.vmrBranch }}
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
skipComponentGovernanceDetection: true
# Synchronize new content in the VMR during PRs (we expect this to come
- ${{ if and(not(parameters.isBuiltFromVmr), eq(variables['Build.Reason'], 'PullRequest')) }}:
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
- template: ../steps/vmr-pull-updates.yml
parameters:
vmrPath: ${{ parameters.vmrPath }}
vmrPath: $(vmrPath)
vmrBranch: ${{ parameters.vmrBranch }}
targetRef: $(Build.SourceVersion) # Synchronize the current installer commit
- ${{ if parameters.buildFromArchive }}:
- script: |
set -ex
cp -r "${{ parameters.vmrPath }}" "$(sourcesPath)"
cp -r "$(vmrPath)" "$(sourcesPath)"
rm -rf "$(sourcesPath)/.git"
displayName: Export VMR sources
workingDirectory: $(Build.StagingDirectory)
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), eq(parameters.runTests, 'True')) }}:
- script: cp "$(sourcesPath)/src/installer/NuGet.config" "$(sourcesPath)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config"
displayName: Copy Test NuGet Config
@ -150,7 +178,7 @@ jobs:
inputs:
SourceFolder: $(Pipeline.Workspace)/${{ parameters.reuseBuildArtifactsFrom }}_${{ parameters.architecture }}_Artifacts
Contents: '*.tar.gz'
TargetFolder: ${{ variables.sourcesPath }}/prereqs/packages/archive/
TargetFolder: $(sourcesPath)/prereqs/packages/archive/
- ${{ if eq(parameters.withPreviousSDK, 'true') }}:
- script: |
@ -161,7 +189,7 @@ jobs:
exit 1
fi
packageVersionsPath="${{ variables.sourcesPath }}/eng/Versions.props"
packageVersionsPath="$(sourcesPath)/eng/Versions.props"
notFoundMessage="No source-built SDK found to download..."
echo "Looking for source-built SDK to download..."
@ -181,8 +209,15 @@ jobs:
fi
displayName: Setup Previously Source-Built SDK
- ${{ if eq(parameters.targetOS, 'windows') }}:
- script: |
set -x
call $(sourcesPath)\build.cmd -ci -cleanWhileBuilding -prepareMachine ${{ parameters.extraProperties }}
displayName: Build
- ${{ else }}:
- ${{ if eq(parameters.buildSourceOnly, 'true') }}:
- script: |
set -ex
customPrepArgs=""
prepSdk=true
@ -210,22 +245,15 @@ jobs:
echo "##vso[task.setvariable variable=additionalBuildArgs]--with-sdk /vmr/.dotnet"
fi
# Only use Docker stuff on Linux
if [[ -n "${{ parameters.container }}" ]]; then
docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs
else
cd $(sourcesPath)
./prep.sh $customPrepArgs
fi
displayName: Prep the Build
- script: |
set -x
set -ex
df -h
# Allows Arcade to have access to the commit for the build
customEnvVars="BUILD_SOURCEVERSION=$BUILD_SOURCEVERSION"
customBuildArgs="--ci --prepareMachine"
customEnvVars=""
customBuildArgs="--ci --clean-while-building --prepareMachine"
if [[ '${{ parameters.runOnline }}' == 'True' ]]; then
customBuildArgs="$customBuildArgs --online"
fi
@ -236,35 +264,43 @@ jobs:
if [[ '${{ parameters.buildFromArchive }}' == 'True' ]]; then
customBuildArgs="$customBuildArgs --source-repository https://github.com/dotnet/dotnet"
customBuildArgs="$customBuildArgs --source-version $(git -C "${{ parameters.vmrPath }}" rev-parse HEAD)"
customBuildArgs="$customBuildArgs --source-version $(git -C "$(vmrPath)" rev-parse HEAD)"
fi
if [[ '${{ parameters.buildSourceOnly }}' == 'True' ]]; then
customBuildArgs="$customBuildArgs --source-only"
fi
if [[ '${{ parameters.useMonoRuntime }}' == 'True' ]]; then
customBuildArgs="$customBuildArgs --use-mono-runtime"
fi
if [[ -n "${{ parameters.container }}" ]]; then
useDocker=true
fi
if [[ ! -z '${{ parameters.targetRid }}' ]]; then
extraBuildProperties="--"
if [[ '${{ parameters.useMonoRuntime }}' == 'True' ]]; then
if [[ -n "${{ parameters.crossRootFs }}" ]]; then
customEnvVars="$customEnvVars ROOTFS_DIR=${{ parameters.crossRootFs}}"
if [[ '${{ parameters.targetArchitecture }}' != 'wasm' ]]; then
customEnvVars="$customEnvVars CROSSCOMPILE=1"
fi
extraBuildProperties="$extraBuildProperties /p:PortableBuild=true /p:DotNetBuildVertical=true /p:CrossBuild=true"
fi
if [[ ! -z '${{ parameters.crossRootFs }}' ]]; then
customEnvVars="$customEnvVars ROOTFS_DIR=${{ parameters.crossRootFs}}"
if [[ ! -z '${{ parameters.targetOS }}' ]]; then
extraBuildProperties="$extraBuildProperties /p:TargetOS=${{ parameters.targetOS }}"
fi
if [[ ! -z '${{ parameters.targetRid }}' ]]; then
extraBuildProperties="$extraBuildProperties /p:OverrideTargetRid=${{ parameters.targetRid }}"
if [[ ! -z '${{ parameters.targetArchitecture }}' ]]; then
extraBuildProperties="$extraBuildProperties /p:TargetArchitecture=${{ parameters.targetArchitecture }}"
fi
# Only use Docker stuff on Linux
if [[ "$useDocker" == "true" ]]; then
if [[ -n "${{ parameters.extraProperties }}" ]]; then
extraBuildProperties="$extraBuildProperties ${{ parameters.extraProperties }}"
fi
buildArgs="$(additionalBuildArgs) $customBuildArgs $extraBuildProperties"
# Only use Docker when a container is specified
if [[ -n "${{ parameters.container }}" ]]; then
# Allows Arcade to have access to the commit for the build, pass it through to the container
customEnvVars="$customEnvVars BUILD_SOURCEVERSION=$BUILD_SOURCEVERSION"
customDockerRunArgs=""
for envVar in $customEnvVars; do
customDockerRunArgs="$customDockerRunArgs -e $envVar"
@ -274,21 +310,21 @@ jobs:
customDockerRunArgs="$customDockerRunArgs --network none"
fi
docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customDockerRunArgs ${{ parameters.container }} ./build.sh --source-only --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties
docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customDockerRunArgs ${{ parameters.container }} ./build.sh $buildArgs
else
for envVar in $customEnvVars; do
customEnvVarsWithBashSyntax="$customEnvVarsWithBashSyntax export $envVar;"
done
cd $(sourcesPath)
eval $customEnvVarsWithBashSyntax
./build.sh --source-only --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties
./build.sh $buildArgs
fi
displayName: Build
# Don't run tests if overriding RID, we don't support that for now
- ${{ if eq(parameters.targetRid, '') }}:
# Only run tests if enabled
- ${{ if eq(parameters.runTests, 'True') }}:
- script: |
set -x
set -ex
dockerVolumeArgs="-v $(sourcesPath):/vmr"
dockerEnvArgs="-e SMOKE_TESTS_EXCLUDE_OMNISHARP=${{ parameters.excludeOmniSharpTests }} -e SMOKE_TESTS_WARN_SDK_CONTENT_DIFFS=true -e SMOKE_TESTS_RUNNING_IN_CI=true"
@ -301,6 +337,41 @@ jobs:
docker run --rm $dockerVolumeArgs -w /vmr $dockerEnvArgs ${{ parameters.container }} ./build.sh --source-only $poisonArg --test $(additionalBuildArgs) /p:SmokeTestConsoleVerbosity=detailed
displayName: Run Tests
- ${{ if eq(parameters.targetOS, 'windows') }}:
# Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph.
- powershell: |
function CopyWithRelativeFolders($sourcePath, $targetFolder, $filter) {
Get-ChildItem -Path $sourcePath -Filter $filter -Recurse | ForEach-Object {
$targetPath = Join-Path $targetFolder (Resolve-Path -Relative $_.FullName)
New-Item -ItemType Directory -Path (Split-Path -Parent $targetPath) -Force | Out-Null
Copy-Item $_.FullName -Destination $targetPath -Force
}
}
$targetFolder = "$(Build.StagingDirectory)/BuildLogs/"
New-Item -ItemType Directory -Path $targetFolder -Force | Out-Null
cd "$(sourcesPath)"
CopyWithRelativeFolders "artifacts/" $targetFolder "*.binlog"
CopyWithRelativeFolders "artifacts/" $targetFolder "*.log"
CopyWithRelativeFolders "src/" $targetFolder "*.binlog"
CopyWithRelativeFolders "src/" $targetFolder "*.log"
CopyWithRelativeFolders "test/" $targetFolder "*.binlog"
CopyWithRelativeFolders "test/" $targetFolder "Updated*.diff"
CopyWithRelativeFolders "test/" $targetFolder "Updated*.txt"
# check if we have assets to publish
if (Test-Path "artifacts/assets/Release/*") {
echo "##vso[task.setvariable variable=hasAssets]true"
}
displayName: Prepare BuildLogs staging directory and check assets
continueOnError: true
condition: succeededOrFailed()
- ${{ else }}:
# Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph.
- script: |
set -x
@ -309,15 +380,22 @@ jobs:
mkdir -p ${targetFolder}
cd "$(sourcesPath)"
find artifacts/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
find artifacts/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \;
find artifacts/prebuilt-report/ -exec cp {} --parents -t ${targetFolder} \;
find src/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
find src/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \;
find test/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \;
find test/ -type f -name "Updated*.diff" -exec cp {} --parents -t ${targetFolder} \;
find test/ -type f -name "Updated*.txt" -exec cp {} --parents -t ${targetFolder} \;
displayName: Prepare BuildLogs staging directory
find artifacts/ -type f -name "*.binlog" -exec rsync -R {} -t ${targetFolder} \;
find artifacts/ -type f -name "*.log" -exec rsync -R {} -t ${targetFolder} \;
if [[ "${{ parameters.buildSourceOnly }}" == "True" ]]; then
find artifacts/prebuilt-report/ -exec rsync -R {} -t ${targetFolder} \;
fi
find src/ -type f -name "*.binlog" -exec rsync -R {} -t ${targetFolder} \;
find src/ -type f -name "*.log" -exec rsync -R {} -t ${targetFolder} \;
find test/ -type f -name "*.binlog" -exec rsync -R {} -t ${targetFolder} \;
find test/ -type f -name "Updated*.diff" -exec rsync -R {} -t ${targetFolder} \;
find test/ -type f -name "Updated*.txt" -exec rsync -R {} -t ${targetFolder} \;
# check if we have assets to publish
if [ -n "$(ls -A 'artifacts/assets/Release/')" ]; then
echo "##vso[task.setvariable variable=hasAssets]true"
fi
displayName: Prepare BuildLogs staging directory and check assets
continueOnError: true
condition: succeededOrFailed()
@ -327,6 +405,8 @@ jobs:
continueOnError: true
condition: succeededOrFailed()
# Only upload test results if enabled
- ${{ if eq(parameters.runTests, 'True') }}:
- task: PublishTestResults@2
displayName: Publish Test Results
condition: succeededOrFailed()
@ -334,13 +414,19 @@ jobs:
inputs:
testRunner: vSTest
testResultsFiles: 'test/**/*.trx'
searchFolder: ${{ variables.sourcesPath }}
searchFolder: $(sourcesPath)
mergeTestResults: true
publishRunAttachments: true
testRunTitle: SourceBuild_SmokeTests_$(Agent.JobName)
- publish: '${{ variables.sourcesPath }}/artifacts/${{ parameters.architecture }}/Release/'
- publish: '$(sourcesPath)/artifacts/assets/Release/'
artifact: $(Agent.JobName)_Artifacts
displayName: Publish Artifacts
condition: succeededOrFailed()
condition: and(succeededOrFailed(), eq(variables['hasAssets'], 'true'))
continueOnError: true
# When building from source, the Private.SourceBuilt.Artifacts archive already contains the nuget packages
- ${{ if ne(parameters.buildSourceOnly, 'true') }}:
- publish: '$(sourcesPath)/artifacts/packages/Release/'
artifact: $(Agent.JobName)_Packages
displayName: Publish Packages

View file

@ -53,7 +53,14 @@ jobs:
- template: ../steps/vmr-prepare.yml
parameters:
vmrBranch: ${{ parameters.vmrBranch }}
isBuiltFromVmr: false
# TODO (https://github.com/dotnet/arcade/issues/11332): Allow full CG?
# Currently, we ignore dirs of individual repos - they have been scanned before
- ${{ if and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['System.TeamProject'], 'internal')) }}:
- task: ComponentGovernanceComponentDetection@0
inputs:
sourceScanPath: $(Agent.BuildDirectory)/vmr
ignoreDirectories: $(Agent.BuildDirectory)/vmr/src
- template: ../steps/vmr-pull-updates.yml
parameters:

View file

@ -1,75 +1,46 @@
### This stage source-builds https://github.com/dotnet/dotnet with varying parameters
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested
### This stage builds https://github.com/dotnet/dotnet with varying parameters
### If run in a PR, new changes are applied to a local copy of the VMR, then it is built and tested
parameters:
dependsOn: []
condition: always()
# Branch of the VMR to use (to push to for internal builds)
vmrBranch: $(Build.SourceBranch)
- name: vmrBranch
type: string
default: $(Build.SourceBranch)
# True when the build is a lite build
isLiteBuild:
# Scope of jobs which are executed
- name: scope
type: string
values:
# run 1 leg for smoke tests
- ultralite
# run several legs e.g. win/linux/mac for basic testing
- lite
# run everything
- full
# True when build is running from dotnet/dotnet directly
isBuiltFromVmr:
- name: isBuiltFromVmr
type: boolean
default: false
# The following parameters aren't expected to be passed in rather they are used for encapsulation
# -----------------------------------------------------------------------------------------------
alpine319Container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode
centOSStream8Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
centOSStream9Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
fedora39Container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-39
ubuntu2204Container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04
ubuntu2204ArmContainer: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-arm64
# Internal builds
poolInternalAmd64:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalAmd64PR:
name: NetCore1ESPool-Internal-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalArm64:
name: Docker-Linux-Arm-Internal
# Public builds / PRs
poolPublicAmd64:
name: NetCore-Public-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
# True when building the VMR in source-only mode
- name: isSourceOnlyBuild
type: boolean
default: false
#### SOURCE-ONLY BUILD ####
stages:
- stage: VMR_Source_Build
displayName: VMR Source-Build
dependsOn: ${{ parameters.dependsOn }}
condition: ${{ parameters.condition }}
- ${{ if parameters.isSourceOnlyBuild }}:
- stage: VMR_SourceOnly_Build
displayName: VMR Source-Only Build
dependsOn: []
variables:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- name: defaultPoolName
value: ${{ parameters.poolPublicAmd64.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolPublicAmd64.demands }}
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64PR.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64PR.demands }}
- ${{ else }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64.demands }}
- ${{ if ne(parameters.vmrBranch, '') }}:
- name: VmrBranch
value: ${{ parameters.vmrBranch }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
- template: ../variables/vmr-stage.yml
parameters:
vmrBranch: ${{ parameters.vmrBranch }}
jobs:
### Jobs for ultralite builds ###
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
@ -79,16 +50,19 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.centOSStream8Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
### Additional jobs for lite/full builds ###
- ${{ if in(parameters.scope, 'lite', 'full') }}:
- template: ../jobs/vmr-build.yml
parameters:
@ -99,12 +73,14 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.centOSStream8Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
reuseBuildArtifactsFrom: CentOSStream8_Online_MsftSdk
@ -119,16 +95,19 @@ stages:
artifactsRid: alpine.3.19-x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.alpine319Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.alpine319Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: true # ✅
excludeOmniSharpTests: true # ✅
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: true # ✅
- ${{ if eq(parameters.isLiteBuild, false) }}:
### Additional jobs for full build ###
- ${{ if in(parameters.scope, 'full') }}:
- template: ../jobs/vmr-build.yml
parameters:
@ -139,12 +118,14 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.alpine319Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.alpine319Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
@ -157,12 +138,14 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.centOSStream8Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.centOSStream8Container }}
buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
@ -176,12 +159,14 @@ stages:
artifactsRid: centos.8-x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.centOSStream8Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: true # ✅
@ -195,12 +180,14 @@ stages:
artifactsRid: centos.8-x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.centOSStream8Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: true # ✅
@ -213,12 +200,14 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.centOSStream8Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.centOSStream8Container }}
buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
@ -231,12 +220,14 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.centOSStream9Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.centOSStream9Container }}
buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
@ -249,12 +240,14 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.fedora39Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.fedora39Container }}
buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
@ -267,12 +260,14 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.ubuntu2204Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.ubuntu2204Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
@ -283,12 +278,14 @@ stages:
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool: ${{ parameters.poolInternalArm64 }}
container: ${{ parameters.ubuntu2204ArmContainer }}
pool: ${{ variables.defaultPoolNameLinuxArm64 }}
container: ${{ variables.ubuntu2204ArmContainer }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
@ -301,12 +298,544 @@ stages:
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.fedora39Container }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.fedora39Container }}
buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫
runTests: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
reuseBuildArtifactsFrom: Fedora39_Offline_MsftSdk
#### VERTICAL BUILD ####
- ${{ if not(parameters.isSourceOnlyBuild) }}:
- stage: VMR_Vertical_Build
displayName: VMR Vertical Build
dependsOn: []
variables:
- template: ../variables/vmr-stage.yml
parameters:
vmrBranch: ${{ parameters.vmrBranch }}
jobs:
- template: ../jobs/vmr-build.yml
parameters:
buildName: Ubuntu2204
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.ubuntu2204Container }}
targetOS: linux
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsWindows }}
targetOS: windows
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Android_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
targetOS: android
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Browser_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: wasm
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.browserCrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: browser
targetArchitecture: wasm
- template: ../jobs/vmr-build.yml
parameters:
buildName: iOSSimulator_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: iossimulator
targetArchitecture: arm64
### Additional jobs for full build ###
- ${{ if in(parameters.scope, 'full') }}:
- template: ../jobs/vmr-build.yml
parameters:
buildName: Android_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
targetOS: android
targetArchitecture: arm
- template: ../jobs/vmr-build.yml
parameters:
buildName: Android_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
targetOS: android
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Android_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x86
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
targetOS: android
targetArchitecture: x86
- template: ../jobs/vmr-build.yml
parameters:
buildName: Browser_Multithreaded_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: wasm
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.browserCrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: browser
targetArchitecture: wasm
extraProperties: /p:DotNetBuildRuntimeWasmEnableThreads=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: LinuxBionic_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: linux-bionic
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: LinuxBionic_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: linux-bionic
targetArchitecture: arm64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: LinuxBionic_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: linux-bionic
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: LinuxBionic_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.androidCrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: linux-bionic
targetArchitecture: x64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: iOS_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: ios
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: iOS_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: ios
targetArchitecture: arm64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: iOSSimulator_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: iossimulator
targetArchitecture: arm64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: iOSSimulator_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: iossimulator
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: iOSSimulator_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: iossimulator
targetArchitecture: x64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: MacCatalyst_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: maccatalyst
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: MacCatalyst_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: maccatalyst
targetArchitecture: arm64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: MacCatalyst_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: maccatalyst
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: MacCatalyst_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: maccatalyst
targetArchitecture: x64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: tvOS_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: tvos
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: tvOS_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: tvos
targetArchitecture: arm64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: tvOSSimulator_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: tvossimulator
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: tvOSSimulator_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: tvossimulator
targetArchitecture: arm64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: tvOSSimulator_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: tvossimulator
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: tvOSSimulator_NativeAOT_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: tvossimulator
targetArchitecture: x64
extraProperties: /p:DotNetBuildRuntimeNativeAOTRuntimePack=true
- template: ../jobs/vmr-build.yml
parameters:
buildName: Wasi_Shortstack
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: wasm
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.wasiCrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: wasi
targetArchitecture: wasm
- template: ../jobs/vmr-build.yml
parameters:
buildName: OSX
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: osx
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: OSX_Mono
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
useMonoRuntime: true
targetOS: osx
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Mariner_x64_Cross
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.marinerX64CrossContainer }}
crossRootFs: '/crossrootfs/x64'
targetOS: linux
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Mariner_x64_Cross_Mono
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.marinerX64CrossContainer }}
crossRootFs: '/crossrootfs/x64'
useMonoRuntime: true
targetOS: linux
targetArchitecture: x64
# Mariner x64->non-x64 builds are currently broken, see https://github.com/dotnet/source-build/issues/3698
# - template: ../jobs/vmr-build.yml
# parameters:
# buildName: Mariner_x64_Cross
# isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
# vmrBranch: ${{ variables.VmrBranch }}
# architecture: arm64
# pool:
# name: ${{ variables.defaultPoolName }}
# demands: ${{ variables.defaultPoolDemandsLinux }}
# container: ${{ variables.marinerArm64CrossContainer }}
# crossRootFs: '/crossrootfs/arm64'
# targetOS: linux
# targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: OSX
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
targetOS: osx
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: OSX_Mono
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
useMonoRuntime: true
targetOS: osx
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsWindows }}
targetOS: windows
targetArchitecture: arm64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows_Mono
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsWindows }}
useMonoRuntime: true
targetOS: windows
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x86
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsWindows }}
targetOS: windows
targetArchitecture: x86
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows_Mono
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x86
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsWindows }}
useMonoRuntime: true
targetOS: windows
targetArchitecture: x86
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows_Pgo
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsWindows }}
targetOS: windows
targetArchitecture: x64
extraProperties: /p:PgoInstrument=true

View file

@ -1,167 +0,0 @@
### This stage source-builds https://github.com/dotnet/dotnet with varying parameters
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested
parameters:
dependsOn: []
condition: always()
# Branch of the VMR to use (to push to for internal builds)
vmrBranch: $(Build.SourceBranch)
# True when the build is a lite build
isLiteBuild:
# True when build is running from dotnet/dotnet directly
isBuiltFromVmr:
# The following parameters aren't expected to be passed in rather they are used for encapsulation
# -----------------------------------------------------------------------------------------------
marinerX64CrossContainer: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-amd64
marinerArm64CrossContainer: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-arm64
# Internal builds
poolInternalAmd64:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalAmd64PR:
name: NetCore1ESPool-Internal-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalArm64:
name: Docker-Linux-Arm-Internal
# Public builds / PRs
poolPublicAmd64:
name: NetCore-Public-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
# Mac
poolMac:
vmImage: 'macos-12'
stages:
- stage: VMR_PoC_Build
displayName: VMR PoC-Build
dependsOn: ${{ parameters.dependsOn }}
condition: ${{ parameters.condition }}
variables:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- name: defaultPoolName
value: ${{ parameters.poolPublicAmd64.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolPublicAmd64.demands }}
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64PR.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64PR.demands }}
- ${{ else }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64.demands }}
- ${{ if ne(parameters.vmrBranch, '') }}:
- name: VmrBranch
value: ${{ parameters.vmrBranch }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
jobs:
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: MarinerCrossX64_Online_MsftSdk
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.marinerx64CrossContainer }}
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
crossRootFs: '/crossrootfs/x64' # 📝
targetRid: 'linux-x64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: MarinerCrossArm64_Online_MsftSdk_Mono
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.marinerArm64CrossContainer }}
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
crossRootFs: '/crossrootfs/arm64' # 📝
targetRid: 'linux-arm64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: OSXCrossX64_Online_MsftSdk
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ parameters.poolMac.vmImage }}
container: ''
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
targetRid: 'osx-x64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: OSXCrossArm64_Online_MsftSdk
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ parameters.poolMac.vmImage }}
container: ''
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
targetRid: 'osx-arm64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: MarinerCrossArm64_Online_MsftSdk_CoreCLR
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.marinerArm64CrossContainer }}
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
crossRootFs: '/crossrootfs/arm64' # 📝
targetRid: 'linux-arm64' # 📝

View file

@ -1,28 +1,11 @@
### These steps clone the VMR (https://github.com/dotnet/dotnet) into $(Agent.BuildDirectory)/vmr
### Component Governance scan is also triggered over the VMR's non-repo sources
### These steps clone the VMR (https://github.com/dotnet/dotnet) into $(Agent.BuildDirectory)/vmr for installer
parameters:
- name: isBuiltFromVmr
displayName: True when build is running from dotnet/dotnet directly
type: boolean
- name: vmrBranch
displayName: dotnet/dotnet branch to use
type: string
default: $(Build.SourceBranch)
- name: skipComponentGovernanceDetection
type: boolean
default: false
steps:
- ${{ if parameters.isBuiltFromVmr }}:
- checkout: self
displayName: Clone dotnet/dotnet
path: vmr
clean: true
- ${{ else }}:
- checkout: vmr
displayName: Clone dotnet/dotnet
path: vmr
@ -33,11 +16,3 @@ steps:
echo "##vso[task.setvariable variable=vmrBranch]${{ parameters.vmrBranch }}"
displayName: Check out ${{ parameters.vmrBranch }}
workingDirectory: $(Agent.BuildDirectory)/vmr
# TODO (https://github.com/dotnet/arcade/issues/11332): Allow full CG?
# Currently, we ignore dirs of individual repos - they have been scanned before
- ${{ if and(not(parameters.skipComponentGovernanceDetection), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['System.TeamProject'], 'internal')) }}:
- task: ComponentGovernanceComponentDetection@0
inputs:
sourceScanPath: $(Agent.BuildDirectory)/vmr
ignoreDirectories: $(Agent.BuildDirectory)/vmr/src

View file

@ -33,7 +33,6 @@ steps:
- script: |
git checkout -B ${{ parameters.vmrBranch }}
echo "##vso[task.setvariable variable=vmrBranch]${{ parameters.vmrBranch }}"
mkdir -p ${{ parameters.vmrPath }}/artifacts/x64/Release
displayName: Prepare branch ${{ parameters.vmrBranch }}
workingDirectory: ${{ parameters.vmrPath }}
@ -57,13 +56,36 @@ steps:
--branch ${{ parameters.vmrBranch }}
--repository "installer:${{ parameters.targetRef }}"
--recursive
--remote "installer:$(pwd)"
--remote "installer:$(Agent.BuildDirectory)/installer"
--component-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/Component.template.md
--tpn-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt
--debug
||
(echo "##vso[task.logissue type=error]Failed to synchronize the VMR" && exit 1)
displayName: Synchronize dotnet/dotnet
displayName: Synchronize dotnet/dotnet (Unix)
condition: ne(variables['Agent.OS'], 'Windows_NT')
workingDirectory: $(Agent.BuildDirectory)/installer
- powershell: >
./eng/vmr-sync.ps1 `
-vmr ${{ parameters.vmrPath }} `
-tmp $(Agent.TempDirectory) `
-azdevPat '$(dn-bot-all-orgs-code-r)' `
-branch ${{ parameters.vmrBranch }} `
-repository "installer:${{ parameters.targetRef }}" `
-recursive `
# passing remote fails for some reason, but it is the default anyway
# -remote "installer:$(Agent.BuildDirectory)/installer"
-componentTemplate $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/Component.template.md `
-tpnTemplate $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt `
-debugOutput
if ($LASTEXITCODE -ne 0) {
echo "##vso[task.logissue type=error]Failed to synchronize the VMR"
exit 1
}
displayName: Synchronize dotnet/dotnet (Windows)
condition: eq(variables['Agent.OS'], 'Windows_NT')
workingDirectory: $(Agent.BuildDirectory)/installer
- publish: $(Agent.TempDirectory)

View file

@ -0,0 +1,61 @@
parameters:
- name: vmrBranch
type: string
variables:
- ${{ if ne(parameters.vmrBranch, '') }}:
- name: VmrBranch
value: ${{ parameters.vmrBranch }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
- name: alpine319Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode
- name: centOSStream8Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
- name: centOSStream9Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
- name: fedora39Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-39
- name: ubuntu2204Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04
- name: ubuntu2204ArmContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-arm64
- name: marinerX64CrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-amd64
- name: marinerArm64CrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-arm64
- name: androidCrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-android-amd64
- name: browserCrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-webassembly-20230917141449-2aaa02c
- name: wasiCrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-webassembly
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- name: defaultPoolName
value: NetCore-Public-XL
- name: defaultPoolNameLinuxArm64
value: Docker-Linux-Arm-Public
- name: defaultPoolNameMac
value: macos-12
- name: defaultPoolDemandsLinux
value: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open
- name: defaultPoolDemandsWindows
value: ImageOverride -equals windows.vs2022.amd64.open
- ${{ elseif eq(variables['System.TeamProject'], 'internal') }}:
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
- name: defaultPoolName
value: NetCore1ESPool-Internal-XL
- ${{ else }}:
- name: defaultPoolName
value: NetCore1ESPool-Svc-Internal
- name: defaultPoolNameLinuxArm64
value: Docker-Linux-Arm-Internal
- name: defaultPoolNameMac
value: macos-13-arm64
- name: defaultPoolDemandsLinux
value: ImageOverride -equals Build.Ubuntu.2204.Amd64
- name: defaultPoolDemandsWindows
value: ImageOverride -equals windows.vs2022.amd64

View file

@ -1,53 +0,0 @@
trigger: none
pr:
branches:
include:
- main
- release/*
- internal/release/*
parameters:
- name: vmrBranch
displayName: dotnet/dotnet branch to use
type: string
default: ' '
- name: disableVmrBuild
displayName: Skip source-building the VMR
type: boolean
default: false
variables:
- ${{ if ne(parameters.vmrBranch, ' ') }}:
- name: VmrBranch
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
resources:
repositories:
- repository: vmr
type: git
name: dotnet-dotnet
ref: ${{ variables.VmrBranch }}
stages:
# You can temporarily disable the VMR Build stage by changing the default of disableVmrBuild
- ${{ if not(parameters.disableVmrBuild) }}:
- template: templates/stages/vmr-build.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
isBuiltFromVmr: false
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
# that the PR can be merged and later synchronized into the VMR without problems.
- ${{ else }}:
- stage: Synchronize_VMR
displayName: Synchronize VMR
dependsOn: []
jobs:
- template: templates/jobs/vmr-synchronization.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
noPush: true

View file

@ -1,3 +1,10 @@
# This yml is used by these pipelines and triggers:
#
# - installer-source-build (public)
# - PR: release/* and main, ultralite build
# - installer-unified-build (public)
# - PR: main, lite build
trigger: none
pr:
branches:
@ -15,8 +22,8 @@ parameters:
type: string
default: ' '
- name: disableVmrBuild
displayName: Skip source-building the VMR
- name: disableBuild
displayName: Skip the VMR Build stage
type: boolean
default: false
@ -28,6 +35,10 @@ variables:
- name: VmrBranch
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
# enable source-only build for pipelines with the -source-build suffix
- name: isSourceOnlyBuild
value: ${{ contains(variables['Build.DefinitionName'], '-source-build') }}
resources:
repositories:
- repository: vmr
@ -37,12 +48,19 @@ resources:
ref: ${{ variables.VmrBranch }}
stages:
# You can temporarily disable the VMR Build stage by setting the disableVmrBuild variable
- ${{ if not(parameters.disableVmrBuild) }}:
# You can temporarily disable the VMR Build stage by setting the disableBuild variable
- ${{ if not(parameters.disableBuild) }}:
- template: templates/stages/vmr-build.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
isBuiltFromVmr: false
isSourceOnlyBuild: ${{ variables.isSourceOnlyBuild }}
${{ if contains(variables['Build.DefinitionName'], '-full') }}:
scope: full
${{ elseif eq(variables.isSourceOnlyBuild, 'true') }}:
scope: ultralite
${{ else }}:
scope: lite
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
# that the PR can be merged and later synchronized into the VMR without problems.

View file

@ -1,52 +0,0 @@
trigger: none
pr:
branches:
include:
- main
parameters:
- name: vmrBranch
displayName: dotnet/dotnet branch to push to
type: string
default: ' '
- name: disableVmrBuild
displayName: Skip source-building the VMR
type: boolean
default: false
variables:
- ${{ if ne(parameters.vmrBranch, ' ') }}:
- name: VmrBranch
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
resources:
repositories:
- repository: vmr
type: github
name: dotnet/dotnet
endpoint: dotnet
ref: ${{ variables.VmrBranch }}
stages:
- ${{ if not(parameters.disableVmrBuild) }}:
- template: templates/stages/vmr-cross-build.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
isBuiltFromVmr: false
isLiteBuild: true
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
# that the PR can be merged and later synchronized into the VMR without problems.
- ${{ else }}:
- stage: Synchronize_VMR
displayName: Synchronize VMR
dependsOn: []
jobs:
- template: templates/jobs/vmr-synchronization.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
noPush: true

View file

@ -5,7 +5,7 @@ function InitializeCustomSDKToolset {
# The following frameworks and tools are used only for testing.
# Do not attempt to install them in source build.
if ($env:DotNetBuildFromSource -eq "true") {
if ($productBuild -or $properties -like "*DotNetBuildRepo=true*") {
return
}

View file

@ -5,7 +5,7 @@ function InitializeCustomSDKToolset {
# The following frameworks and tools are used only for testing.
# Do not attempt to install them in source build.
if [[ "${DotNetBuildFromSource:-}" == "true" ]]; then
if [[ $product_build == true || $properties == *"DotNetBuildRepo=true"* ]]; then
return
fi

216
eng/vmr-sync.ps1 Normal file
View file

@ -0,0 +1,216 @@
<#
.SYNOPSIS
This script is used for synchronizing the dotnet/dotnet VMR locally. This means pulling new
code from various repositories into the 'dotnet/dotnet' repository.
.DESCRIPTION
The script is used during CI to ingest new code based on dotnet/installer but it can also help
for reproducing potential failures during installer's PRs, namely to fix the Source-Build.
Another usecase is to try manually synchronizing a given commit of some repo into the VMR and
trying to Source-Build the VMR. This can help when fixing the Source-Build but using a commit
from a not-yet merged branch (or fork) to test the fix will help.
The tooling that synchronizes the VMR will need to clone the various repositories into a temporary
folder. These clones can be re-used in future synchronizations so it is advised you dedicate a
folder to this to speed up your re-runs.
.EXAMPLE
Synchronize current installer and all dependencies into a local VMR:
./vmr-sync.ps1 -vmrDir "$HOME/repos/dotnet" -tmpDir "$HOME/repos/tmp"
Synchronize the VMR to a specific commit of dotnet/runtime using custom fork:
./vmr-sync.ps1 `
-repository runtime:e7e71da303af8dc97df99b098f21f526398c3943 `
-remote runtime:https://github.com/yourfork/runtime `
-tmpDir "$HOME/repos/tmp"
.PARAMETER tmpDir
Required. Path to the temporary folder where repositories will be cloned
.PARAMETER vmrBranch
Optional. Branch of the 'dotnet/dotnet' repo to synchronize. The VMR will be checked out to this branch
.PARAMETER component-template
Optional. Template for VMRs Component.md used for regenerating the file to list the newest versions of
components.
Defaults to src/VirtualMonoRepo/Component.template.md
.PARAMETER recursive
Optional. Recursively synchronize all the source build dependencies (declared in Version.Details.xml)
This is used when performing the full synchronization during installer's CI and the final VMR sync.
Defaults to false unless no repository is supplied in which case a recursive sync of installer is performed.
.PARAMETER remote
Optional. Additional remote to use during the synchronization
This can be used to synchronize to a commit from a fork of the repository
Example: 'runtime:https://github.com/yourfork/runtime'
.PARAMETER repository
Optional. Repository + git ref separated by colon to synchronize to.
This can be a specific commit, branch, tag.
If not supplied, the revision of the parent installer repository of this script will be used (recursively).
Example: 'runtime:my-branch-name'
.PARAMETER tpnTemplate
Optional. Template for the header of VMRs THIRD-PARTY-NOTICES file.
Defaults to src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt
.PARAMETER azdevPat
Optional. Azure DevOps PAT to use for cloning private repositories.
.PARAMETER vmrDir
Optional. Path to the dotnet/dotnet repository. When null, gets cloned to the temporary folder
.PARAMETER debugOutput
Optional. Enables debug logging in the darc vmr command.
#>
param (
[Parameter(Mandatory=$true, HelpMessage="Path to the temporary folder where repositories will be cloned")]
[string][Alias('t', 'tmp')]$tmpDir,
[string][Alias('b', 'branch')]$vmrBranch,
[string]$componentTemplate = "src/VirtualMonoRepo/Component.template.md",
[switch]$recursive,
[string]$remote,
[string][Alias('r')]$repository,
[string]$tpnTemplate = "src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt",
[string]$azdevPat,
[string][Alias('v', 'vmr')]$vmrDir,
[switch]$debugOutput
)
$scriptRoot = $PSScriptRoot
function Fail {
Write-Host "> $($args[0])" -ForegroundColor 'Red'
}
function Highlight {
Write-Host "> $($args[0])" -ForegroundColor 'Cyan'
}
$installerDir = (Split-Path -Parent $scriptRoot)
# If installer is a repo, we're in an installer and not in the dotnet/dotnet repo
if (Test-Path -Path "$installerDir/.git" -PathType Container) {
$additionalRemotes = "installer:$installerDir"
}
if ($remote) {
$additionalRemotes = "$additionalRemotes $remote"
}
$verbosity = 'verbose'
if ($debugOutput) {
$verbosity = 'debug'
}
# Validation
if (-not (Test-Path -Path $installerDir -PathType Container)) {
Fail "Directory '$installerDir' does not exist. Please specify the path to the dotnet/installer repo"
exit 1
}
if (-not $tmpDir) {
Fail "Missing -tmpDir argument. Please specify the path to the temporary folder where the repositories will be cloned"
exit 1
}
if (-not (Test-Path -Path $componentTemplate -PathType Leaf)) {
Fail "File '$componentTemplate' does not exist. Please specify a valid path to the component template"
exit 1
}
if (-not (Test-Path -Path $tpnTemplate -PathType Leaf)) {
Fail "File '$tpnTemplate' does not exist. Please specify a valid path to the THIRD-PARTY-NOTICES template"
exit 1
}
# Sanitize the input
# Default when no repository is provided
if (-not $repository) {
$repository = "installer:$(git -C $installerDir rev-parse HEAD)"
$recursive = $true
}
if (-not $vmrDir) {
$vmrDir = Join-Path $tmpDir 'dotnet'
}
if (-not (Test-Path -Path $tmpDir -PathType Container)) {
New-Item -ItemType Directory -Path $tmpDir | Out-Null
}
# Prepare the VMR
if (-not (Test-Path -Path $vmrDir -PathType Container)) {
Highlight "Cloning 'dotnet/dotnet' into $vmrDir.."
git clone https://github.com/dotnet/dotnet $vmrDir
if ($vmrBranch) {
git -C $vmrDir switch -c $vmrBranch
}
}
else {
if ((git -C $vmrDir diff --quiet) -eq $false) {
Fail "There are changes in the working tree of $vmrDir. Please commit or stash your changes"
exit 1
}
if ($vmrBranch) {
Highlight "Preparing $vmrDir"
git -C $vmrDir checkout $vmrBranch
git -C $vmrDir pull
}
}
Set-StrictMode -Version Latest
# Prepare darc
Highlight 'Installing .NET, preparing the tooling..'
. $scriptRoot\common\tools.ps1
$dotnetRoot = InitializeDotNetCli -install:$true
$dotnet = "$dotnetRoot\dotnet.exe"
& "$dotnet" tool restore
Highlight "Starting the synchronization of '$repository'.."
# Synchronize the VMR
$darcArgs = (
"darc", "vmr", "update",
"--vmr", $vmrDir,
"--tmp", $tmpDir,
"--$verbosity",
"--component-template", $componentTemplate,
"--tpn-template", $tpnTemplate,
"--discard-patches",
$repository
)
if ($recursive) {
$darcArgs += ("--recursive")
}
if ($additionalRemotes) {
$darcArgs += ("--additional-remotes", $additionalRemotes)
}
if ($azdevPat) {
$darcArgs += ("--azdev-pat", $azdevPat)
}
& "$dotnet" $darcArgs
if ($LASTEXITCODE -eq 0) {
Highlight "Synchronization succeeded"
}
else {
Fail "Synchronization of dotnet/dotnet to '$repository' failed!"
Fail "'$vmrDir' is left in its last state (re-run of this script will reset it)."
Fail "Please inspect the logs which contain path to the failing patch file (use -debugOutput to get all the details)."
Fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script."
exit 1
}

View file

@ -104,7 +104,7 @@ repository=''
additional_remotes=''
recursive=false
verbosity=verbose
readme_template="$installer_dir/src/VirtualMonoRepo/Component.template.md"
component_template="$installer_dir/src/VirtualMonoRepo/Component.template.md"
tpn_template="$installer_dir/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt"
azdev_pat=''
@ -180,8 +180,8 @@ if [[ -z "$tmp_dir" ]]; then
exit 1
fi
if [[ ! -f "$readme_template" ]]; then
fail "File '$readme_template' does not exist. Please specify a valid path to the README template"
if [[ ! -f "$component_template" ]]; then
fail "File '$component_template' does not exist. Please specify a valid path to the Component.md template"
exit 1
fi

View file

@ -8,11 +8,11 @@
}
},
"native-tools": {
"cmake": "3.21.0"
"cmake": "latest"
},
"msbuild-sdks": {
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24075.2",
"Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24075.2"
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24114.1",
"Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24114.1"
}
}

View file

@ -29,7 +29,7 @@ if ($Sign) {
$Parameters = "$Parameters -WarnAsError `$$WarnAsError"
try {
$ExpressionToInvoke = "$RepoRoot\eng\common\build.ps1 -restore -build $Parameters $ExtraParameters"
$ExpressionToInvoke = "$RepoRoot\eng\common\build.ps1 -restore -build -nativeToolsOnMachine $Parameters $ExtraParameters"
Write-Host "Invoking expression: $ExpressionToInvoke"
Invoke-Expression $ExpressionToInvoke
}

View file

@ -10,14 +10,21 @@
This Codespace can help you debug the source build of .NET. This build takes about
45 minutes and, after completion, produces an archived .NET SDK located in
`/workspaces/dotnet/artifacts/x64/Release`. In case you selected the `prebuilt-sdk`
Codespace, the SDK will already be there.
`/workspaces/dotnet/artifacts/assets/Release`. In case you selected the `prebuilt-sdk`
Codespace, the built-from-source SDK will already be there.
## Build the SDK
To build the VMR, run following:
To build the repository, run one of the following:
```bash
./prep.sh && ./build.sh --online
# Microsoft based build
./build.sh
```
or
```bash
# Building from source only
./prep.sh && ./build.sh -sb
```
> Please note that, at this time, the build modifies some of the checked-in sources so it might

View file

@ -1,9 +1,7 @@
/.dotnet
/.packages
/artifacts
/eng/tools/**/bin
/eng/tools/**/obj
/prereqs/packages
/src/linker/src/ILLink.Tasks/ILLink.Tasks.nuspec
/src/nuget-client/NuGet.config
/test/Microsoft.DotNet.SourceBuild.SmokeTests/bin
/test/Microsoft.DotNet.SourceBuild.SmokeTests/obj

View file

@ -1,9 +1,9 @@
<Project>
<PropertyGroup>
<_SuppressSdkImports Condition="'$(DotNetBuildSourceOnly)' == 'true'">true</_SuppressSdkImports>
<Configuration Condition="$(Configuration) == ''">Release</Configuration>
<DotNetBuildOrchestrator>true</DotNetBuildOrchestrator>
<RootRepo>dotnet</RootRepo>
</PropertyGroup>
<PropertyGroup Label="CalculateTargetOS">
@ -19,24 +19,31 @@
<TargetOS Condition="'$(TargetOS)' == ''">$(BuildOS)</TargetOS>
</PropertyGroup>
<!-- This is a list of cases where we aren't producing a whole SDK, just a runtime. This list should be kept in sync with https://github.com/dotnet/runtime/blob/main/eng/SourceBuild.props#L26 -->
<PropertyGroup Label="ShortStacks">
<ShortStack Condition="'$(TargetOS)' == 'wasi'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'browser'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'ios'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'iossimulator'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'tvos'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'tvossimulator'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'maccatalyst'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'android'">true</ShortStack>
<ShortStack Condition="'$(TargetOS)' == 'linux-bionic'">true</ShortStack>
<!-- Short stack builds stop at runtime, not the whole SDK -->
<RootRepo Condition="'$(ShortStack)' == 'true'">runtime</RootRepo>
</PropertyGroup>
<!-- See https://github.com/dotnet/arcade/blob/main/Documentation/UnifiedBuild/Unified-Build-Controls.md#output-controls for
control set definition. -->
<PropertyGroup Label="CalculateArch">
<!-- Build architecture is what we are building on. -->
<BuildArchitecture>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant)</BuildArchitecture>
<HostArchitecture Condition="'$(HostArchitecture)' == ''">$(BuildArchitecture)</HostArchitecture>
<!-- The target architecture is the what the customer is targeting their outputs to run on. -->
<TargetArchitecture Condition="'$(TargetArchitecture)' == ''">$(BuildArchitecture)</TargetArchitecture>
<!-- The host architecture is the what the customer will build on. Much of the time, Host==Target. -->
<HostArchitecture Condition="'$(HostArchitecture)' == ''">$(TargetArchitecture)</HostArchitecture>
<!-- When building on non-x64 architectures, there may be no cross-compilation available, select a target architecture that is the same as the build. -->
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'arm'">arm</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'armv6'">armv6</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'armel'">armel</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'arm64'">arm64</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'riscv64'">riscv64</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'loongarch64'">loongarch64</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 's390x'">s390x</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'ppc64le'">ppc64le</TargetArchitecture>
<TargetArchitecture Condition="'$(OverrideTargetRid)' != ''">$(OverrideTargetRid.Substring($(OverrideTargetRid.LastIndexOf('-'))).TrimStart('-'))</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture>
<Platform Condition="'$(Platform)' == '' and '$(InferPlatformFromTargetArchitecture)' == 'true'">$(TargetArchitecture)</Platform>
<Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
</PropertyGroup>
@ -46,7 +53,12 @@
<BuildRid Condition="'$(BuildRid)' == ''">$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)</BuildRid>
<HostRid Condition="'$(HostRid)' == ''">$(BuildRid)</HostRid>
<TargetRid Condition="'$(TargetRid)' == ''">$(BuildRid)</TargetRid>
<TargetRid Condition="'$(TargetRid)' == ''">$(BuildRid.Substring(0, $(BuildRid.LastIndexOf('-'))))-$(TargetArchitecture)</TargetRid>
<!-- Source-only builds are non portable, except for cross-builds.
Source-only cross-builds default to the portable configuration so the resulting SDK works on a wider range of distros. -->
<PortableBuild Condition="'$(PortableBuild)' == '' and '$(DotNetBuildSourceOnly)' == 'true' and '$(HostArchitecture)' == '$(TargetArchitecture)'">false</PortableBuild>
<PortableBuild Condition="'$(PortableBuild)' == ''">true</PortableBuild>
<PortableRid Condition="'$(__PortableTargetOS)' != ''">$(__PortableTargetOS)-$(TargetArchitecture)</PortableRid>
<PortableRid Condition="'$(PortableRid)' == '' and '$(TargetOS)' == 'freebsd'">freebsd-$(TargetArchitecture)</PortableRid>
@ -56,13 +68,15 @@
<PortableRid Condition="'$(PortableRid)' == '' and '$(TargetOS)' == 'windows'">win-$(TargetArchitecture)</PortableRid>
<TargetRid Condition="'$(PortableBuild)' == 'true' and '$(PortableRid)' != ''">$(PortableRid)</TargetRid>
<TargetRid Condition="'$(ShortStack)' == 'true' and '$(TargetOS)' != 'windows'">$(TargetOS)-$(TargetArchitecture)</TargetRid>
<TargetRid Condition="'$(ShortStack)' == 'true' and '$(TargetOS)' == 'windows'">win-$(TargetArchitecture)</TargetRid>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" Condition="'$(SkipArcadeSdkImport)' != 'true'" />
<!-- Init basic Arcade props, if the project importing this file doesn't use Arcade.
Keep in sync with props/targets in the Arcade.Sdk. -->
<PropertyGroup Condition="'$(_SuppressSdkImports)' == 'true' or '$(SkipArcadeSdkImport)' == 'true'">
<PropertyGroup Condition="'$(SkipArcadeSdkImport)' == 'true'">
<!-- RepoLayout.props -->
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' != ''">$([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)'))</NuGetPackageRoot>
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == '' and '$(NUGET_PACKAGES)' != ''">$([MSBuild]::NormalizeDirectory('$(NUGET_PACKAGES)'))</NuGetPackageRoot>
@ -84,6 +98,9 @@
<ArtifactsObjDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'obj'))</ArtifactsObjDir>
<ArtifactsBinDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin'))</ArtifactsBinDir>
<ArtifactsLogDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'log', '$(Configuration)'))</ArtifactsLogDir>
<ArtifactsPackagesDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'packages', '$(Configuration)'))</ArtifactsPackagesDir>
<ArtifactsNonShippingPackagesDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsPackagesDir)', 'NonShipping'))</ArtifactsNonShippingPackagesDir>
<ArtifactsShippingPackagesDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsPackagesDir)', 'Shipping'))</ArtifactsShippingPackagesDir>
<RepositoryEngineeringDir>$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'eng'))</RepositoryEngineeringDir>
<!-- ProjectLayout.props -->
@ -108,8 +125,7 @@
</PropertyGroup>
<!-- Manually import the Versions.props file when the Arcade SDK isn't used. -->
<Import Project="$(RepositoryEngineeringDir)Versions.props"
Condition="'$(_SuppressSdkImports)' == 'true' or '$(SkipArcadeSdkImport)' == 'true'" />
<Import Project="$(RepositoryEngineeringDir)Versions.props" Condition="'$(SkipArcadeSdkImport)' == 'true'" />
<PropertyGroup>
<!-- We have no projects targeting multiple frameworks, so don't include in output path. -->
@ -119,9 +135,7 @@
<!-- It's not unusual to build with a preview SDK -->
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
<!-- By default, the VMR builds with online sources when not building source-only. -->
<DotNetBuildWithOnlineSources Condition="'$(DotNetBuildWithOnlineSources)' == '' and '$(DotNetBuildSourceOnly)' != 'true'">true</DotNetBuildWithOnlineSources>
<!-- By default, skip building tests when building the VMR. -->
<DotNetBuildSkipTests Condition="'$(DotNetBuildSkipTests)' == ''">true</DotNetBuildSkipTests>
<DotNetBuildWithOnlineFeeds Condition="'$(DotNetBuildWithOnlineFeeds)' == '' and '$(DotNetBuildSourceOnly)' != 'true'">true</DotNetBuildWithOnlineFeeds>
</PropertyGroup>
<PropertyGroup>
@ -144,8 +158,6 @@
</PropertyGroup>
<PropertyGroup>
<RootRepo>dotnet</RootRepo>
<SrcDir>$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src'))</SrcDir>
<ToolsDir>$([MSBuild]::NormalizeDirectory('$(RepositoryEngineeringDir)', 'tools'))</ToolsDir>
<TasksDir>$([MSBuild]::NormalizeDirectory('$(ToolsDir)', 'tasks'))</TasksDir>
@ -155,18 +167,14 @@
<KeysDir>$([MSBuild]::NormalizeDirectory('$(PrereqsDir)', 'keys'))</KeysDir>
<PrereqsPackagesDir>$([MSBuild]::NormalizeDirectory('$(PrereqsDir)', 'packages'))</PrereqsPackagesDir>
<!-- When SB mode, the initial arcade is unzipped to a the "ArcadeBootStrap" dir.
<!-- When SB mode, the initial arcade is unzipped to the "ArcadeBootstrapPackage" dir.
When running in VBPOC, the bootstrap package is the arcade restored at the beginning of the build. -->
<ArcadeBootstrapPackageDir Condition="'$(DotNetBuildSourceOnly)' == 'true'">$([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)', 'ArcadeBootstrapPackage'))</ArcadeBootstrapPackageDir>
<ArcadeBootstrapPackageDir Condition="'$(DotNetBuildSourceOnly)' != 'true'">$(NuGetPackageRoot)</ArcadeBootstrapPackageDir>
<!-- Shared output and intermediate output path folders that are architecture and configuration specific. -->
<SharedOutputPath>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', '$(TargetArchitecture)', '$(Configuration)'))</SharedOutputPath>
<SharedIntermediateOutputPath>$([MSBuild]::NormalizeDirectory('$(ArtifactsObjDir)', '$(TargetArchitecture)', '$(Configuration)'))</SharedIntermediateOutputPath>
<SourceBuiltBlobFeedDir>$([MSBuild]::NormalizeDirectory('$(SharedIntermediateOutputPath)', 'blob-feed'))</SourceBuiltBlobFeedDir>
<SourceBuiltPackagesPath>$([MSBuild]::NormalizeDirectory('$(SourceBuiltBlobFeedDir)', 'packages'))</SourceBuiltPackagesPath>
<SourceBuiltAssetsDir>$([MSBuild]::NormalizeDirectory('$(SourceBuiltBlobFeedDir)', 'assets'))</SourceBuiltAssetsDir>
<VSMSBuildSdkResolversDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'toolset', 'VSSdkResolvers'))</VSMSBuildSdkResolversDir>
<IntermediateSymbolsRootDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsObjDir)', 'Symbols'))</IntermediateSymbolsRootDir>
<ArtifactsAssetsDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'assets', '$(Configuration)'))</ArtifactsAssetsDir>
<PrebuiltPackagesPath>$([MSBuild]::NormalizeDirectory('$(PrereqsPackagesDir)', 'prebuilt'))</PrebuiltPackagesPath>
<PreviouslyRestoredPackagesPath>$([MSBuild]::NormalizeDirectory('$(PrereqsPackagesDir)', 'previouslyRestored'))</PreviouslyRestoredPackagesPath>
@ -184,6 +192,7 @@
<NonShippingPackagesListPrefix>NonShipping.Packages.</NonShippingPackagesListPrefix>
<ReferencePackagesDir>$([MSBuild]::NormalizeDirectory('$(PrereqsPackagesDir)', 'reference'))</ReferencePackagesDir>
<ReferenceAssetsDir>$([MSBuild]::NormalizeDirectory('$(PrereqsPackagesDir)', 'reference-assets'))</ReferenceAssetsDir>
<SourceBuiltArtifactsTarballName>Private.SourceBuilt.Artifacts</SourceBuiltArtifactsTarballName>
<SourceBuiltPrebuiltsTarballName>Private.SourceBuilt.Prebuilts</SourceBuiltPrebuiltsTarballName>

View file

@ -7,7 +7,7 @@
<SdkFilenamePrefix>dotnet-sdk-</SdkFilenamePrefix>
</PropertyGroup>
<ItemGroup>
<SdkTarballItem Include="$(SourceBuiltAssetsDir)$(SdkFilenamePrefix)*$(ArchiveExtension)" />
<SdkTarballItem Include="$(ArtifactsAssetsDir)$(SdkFilenamePrefix)*$(ArchiveExtension)" />
</ItemGroup>
<!--

View file

@ -39,15 +39,14 @@ See the [Unified Build roadmap](src/arcade/Documentation/UnifiedBuild/Roadmap.md
### Supported platforms
The VMR only supports .NET 8.0 and higher. Additionally, source-build currently supports Linux only.
It is expected that Mac and Windows will be supported in the .NET 9.0.
* 8.0
* source-build configuration on Linux
* 9.0+ (WIP)
* source-build configuration on Linux
* non-source-build configuration on Linux, Mac, and Windows
For the latest information about Source-Build support for new .NET versions, please check our [GitHub Discussions page](https://github.com/dotnet/source-build/discussions) for announcements.
### Online build only
Building the product offline is not fully working at the moment. The `--online` switch is needed when building the VMR as not all dependencies are currently built from source.
### Code flow
For the time being, the source code only flows one way - from the development repos into the VMR.
More details on this process:
@ -72,53 +71,71 @@ For the latest information about Source-Build support, please watch for announce
### Prerequisites
The dependencies for building .NET from source can be found [here](https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/linux-requirements.md).
The dependencies for building can be found [here](https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/).
In case you don't want to / cannot prepare your environment per the requirements, consider [using Docker](#building-using-docker).
### Building
1. **Clone the VMR**
1. **Clone the repository**
```bash
git clone https://github.com/dotnet/dotnet dotnet-dotnet
```
2. **Prep the source to build on your distro**
This downloads a .NET SDK and a number of .NET packages needed to build .NET from source.
```bash
cd dotnet-dotnet
./prep.sh
```
3. **Build the .NET SDK**
2. **Build the .NET SDK**
Choose one of the following build modes:
- **Microsoft based build**
For Unix:
```bash
./build.sh --clean-while-building --online
./build.sh --clean-while-building
```
This builds the entire .NET SDK from source.
The resulting SDK is placed at `artifacts/x64/Release/dotnet-sdk-9.0.100-your-RID.tar.gz`.
For Windows:
```cmd
.\build.cmd -cleanWhileBuilding
```
Currently, the `--online` flag is required to allow NuGet restore from online sources during the build.
This is useful for testing unsupported releases that don't yet build without downloading pre-built binaries from the internet.
- **Building from source**
```bash
# Prep the source to build on your distro.
# This downloads a .NET SDK and a number of .NET packages needed to build .NET from source.
./prep.sh
Run `./build.sh --help` to see more information about supported build options.
# Build the .NET SDK
./build.sh -sb --clean-while-building
```
The resulting SDK is placed at `artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].tar.gz` (for Unix) or `artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].zip` (for Windows).
4. *(Optional)* **Unpack and install the .NET SDK**
For Unix:
```bash
mkdir -p $HOME/dotnet
tar zxf artifacts/[your-arch]/Release/dotnet-sdk-9.0.100-[your-RID].tar.gz -C $HOME/dotnet
tar zxf artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].tar.gz -C $HOME/dotnet
ln -s $HOME/dotnet/dotnet /usr/bin/dotnet
```
To test your source-built SDK, run the following:
For Windows:
```cmd
mkdir %userprofile%\dotnet
tar -xf artifacts/assets/Release/dotnet-sdk-9.0.100-[your RID].zip -C %userprofile%\dotnet
set "PATH=%userprofile%\dotnet;%PATH%"
```
To test your built SDK, run the following:
```bash
dotnet --info
```
> [!NOTE]
> Run `./build.sh --help` (for Unix) or `.\build.cmd -help` (for Windows) to see more information about supported build options.
### Building using Docker
You can also build the repository using a Docker image which has the required prerequisites inside.
@ -127,9 +144,15 @@ The example below creates a Docker volume named `vmr` and clones and builds the
```sh
docker run --rm -it -v vmr:/vmr -w /vmr mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
git clone https://github.com/dotnet/dotnet .
./prep.sh && ./build.sh --online
# - Microsoft based build
./build.sh --clean-while-building
# - Building from source
./prep.sh && ./build.sh -sb --clean-while-building
mkdir -p $HOME/.dotnet
tar -zxf artifacts/x64/Release/dotnet-sdk-9.0.100-centos.8-x64.tar.gz -C $HOME/.dotnet
tar -zxf artifacts/assets/Release/dotnet-sdk-9.0.100-centos.8-x64.tar.gz -C $HOME/.dotnet
ln -s $HOME/.dotnet/dotnet /usr/bin/dotnet
```
@ -150,7 +173,7 @@ Alternatively, you can also provide a manifest file where this information can b
Sometimes you want to make a change in a repository and test that change in the VMR. You could of course make the change in the VMR directly (locally, as the VMR is read-only for now) but in case it's already available in your repository, you can synchronize it into the VMR (again locally).
To do this, you can either start a [dotnet/dotnet](https://github.com/dotnet/dotnet) Codespace - you will see instructions right after it starts. Alternatively, you can clone the repository locally and use the [eng/vmr-sync.sh](../../eng/vmr-sync.sh) script to pull your changes in. Please refer to the documentation in the script for more details.
To do this, you can either start a [dotnet/dotnet](https://github.com/dotnet/dotnet) Codespace - you will see instructions right after it starts. Alternatively, you can clone the repository locally and use the [vmr-sync.sh](src/installer/eng/vmr-sync.sh) or [vmr-sync.ps1](src/installer/eng/vmr-sync.ps1) script to pull your changes in. Please refer to the documentation in the script for more details.
## List of components

View file

@ -22,7 +22,7 @@ usage()
echo ""
echo "Source-only settings:"
echo " --source-only Source-build the solution (short: -so)"
echo " --source-only, --source-build Source-build the solution (short: -so, -sb)"
echo " --online Build using online sources"
echo " --poison Build with poisoning checks"
echo " --release-manifest <FILE> A JSON file, an alternative source of Source Link metadata"
@ -57,8 +57,7 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
# Set the NUGET_PACKAGES dir so that we don't accidentally pull some packages from the global location,
# They should be pulled from the local feeds.
packagesDir="$scriptroot/prereqs/packages/"
packagesRestoredDir="${packagesDir}restored/"
packagesRestoredDir="$scriptroot/.packages/"
export NUGET_PACKAGES=$packagesRestoredDir/
# Common settings
@ -77,6 +76,7 @@ sourceRepository=''
sourceVersion=''
CUSTOM_PACKAGES_DIR=''
CUSTOM_SDK_DIR=''
packagesDir="$scriptroot/prereqs/packages/"
packagesArchiveDir="${packagesDir}archive/"
packagesPreviouslySourceBuiltDir="${packagesDir}previously-source-built/"
@ -117,12 +117,12 @@ while [[ $# > 0 ]]; do
;;
# Source-only settings
-source-only|-so)
-source-only|-source-build|-so|-sb)
sourceOnly=true
properties="$properties /p:DotNetBuildSourceOnly=true"
;;
-online)
properties="$properties /p:DotNetBuildWithOnlineSources=true"
properties="$properties /p:DotNetBuildWithOnlineFeeds=true"
;;
-poison)
properties="$properties /p:EnablePoison=true"
@ -185,6 +185,12 @@ while [[ $# > 0 ]]; do
shift
done
if [[ "$ci" == true ]]; then
if [[ "$exclude_ci_binary_log" == false ]]; then
binary_log=true
fi
fi
. "$scriptroot/eng/common/tools.sh"
function Build {
@ -206,6 +212,10 @@ function Build {
else
if [ "$ci" == "true" ]; then
properties="$properties /p:ContinuousIntegrationBuild=true"
fi
"$CLI_ROOT/dotnet" build-server shutdown
if [ "$test" == "true" ]; then
@ -216,6 +226,9 @@ function Build {
# kill off the MSBuild server so that on future invocations we pick up our custom SDK Resolver
"$CLI_ROOT/dotnet" build-server shutdown
# Point MSBuild to the custom SDK resolvers folder, so it will pick up our custom SDK Resolver
export MSBUILDADDITIONALSDKRESOLVERSFOLDER="$scriptroot/artifacts/toolset/VSSdkResolvers/"
"$CLI_ROOT/dotnet" msbuild "$scriptroot/build.proj" -bl:"$scriptroot/artifacts/log/$configuration/Build.binlog" -flp:"LogFile=$scriptroot/artifacts/log/$configuration/Build.log" $properties
fi

View file

@ -3,9 +3,9 @@
<ProductDependencies>
</ProductDependencies>
<ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24075.2">
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24102.4">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>1d8f27f89c3b167f63e28e73a3d9ab345e81d310</Sha>
<Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha>
</Dependency>
</ToolsetDependencies>
</Dependencies>

View file

@ -22,9 +22,8 @@
of a .NET major or minor release, prebuilts may be needed. When the release is mature, prebuilts
are not necessary, and this property is removed from the file.
-->
<PrivateSourceBuiltSdkVersion>9.0.100-alpha.1.24067.1</PrivateSourceBuiltSdkVersion>
<PrivateSourceBuiltArtifactsVersion>9.0.100-alpha.1.24067.1</PrivateSourceBuiltArtifactsVersion>
<PrivateSourceBuiltPrebuiltsVersion>0.1.0-9.0.100-9</PrivateSourceBuiltPrebuiltsVersion>
<PrivateSourceBuiltSdkVersion>9.0.100-preview.2.24104.1</PrivateSourceBuiltSdkVersion>
<PrivateSourceBuiltArtifactsVersion>9.0.100-preview.2.24104.1</PrivateSourceBuiltArtifactsVersion>
<!-- msbuild -->
<MicrosoftBuildVersion>15.7.179</MicrosoftBuildVersion>
</PropertyGroup>

View file

@ -41,28 +41,24 @@ function Get-Usage() {
# Set the NUGET_PACKAGES dir so that we don't accidentally pull some packages from the global location,
# They should be pulled from the local feeds.
$env:NUGET_PACKAGES="$RepoRoot\prereqs\packages\restored\"
$env:NUGET_PACKAGES="$RepoRoot\.packages\"
if ($help) {
Get-Usage
exit 0
}
$arguments=""
if ($cleanWhileBuilding) {
$arguments += " /p:CleanWhileBuilding=true"
}
function Build {
InitializeToolset
$bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' }
$cwb = if ($cleanWhileBuilding) { '/p:CleanWhileBuilding=true' } else { '' }
$buildProj = Join-Path $RepoRoot 'build.proj'
MSBuild $buildProj `
$bl `
/p:Configuration=$configuration `
$arguments `
$cwb `
@properties
}
@ -75,6 +71,11 @@ try {
exit 0
}
if ($ci) {
if (-not $excludeCIBinarylog) {
$binaryLog = $true
}
}
Build
}

View file

@ -1,7 +1,6 @@
<Project>
<PropertyGroup>
<SkipErrorOnPrebuilts>true</SkipErrorOnPrebuilts>
<SmokeTestsDir>$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.SourceBuild.SmokeTests'))</SmokeTestsDir>
</PropertyGroup>
@ -9,20 +8,6 @@
<PoisonUsageReportFile>$(PackageReportDir)poison-usage.xml</PoisonUsageReportFile>
</PropertyGroup>
<!-- Copies the output assets of the builds to the output path. -->
<Target Name="CopyBinariesToBinFolder"
AfterTargets="Build">
<ItemGroup>
<BinariesToCopy Include="$(SourceBuiltAssetsDir)*.*"
Exclude="$(SourceBuiltAssetsDir)*.nupkg;$(SourceBuiltAssetsDir)*.requires_nupkg_signing" />
</ItemGroup>
<Copy SourceFiles="@(BinariesToCopy)"
DestinationFolder="$(SharedOutputPath)"
SkipUnchangedFiles="true"
Condition="'@(BinariesToCopy)'!=''" />
</Target>
<!-- After building, generate a prebuilt usage report. -->
<Target Name="ReportPrebuiltUsage"
AfterTargets="Build"
@ -30,45 +15,17 @@
<MSBuild Projects="$(RepoProjectsDir)$(RootRepo).proj" Targets="WritePrebuiltUsageData;ReportPrebuiltUsage" />
</Target>
<Target Name="DiscoverSymbolsTarballs"
AfterTargets="Build">
<ItemGroup>
<SymbolsTarball Include="$(SharedOutputPath)Symbols.*$(ArchiveExtension)" />
</ItemGroup>
</Target>
<Target Name="ExtractSymbolsTarballs"
AfterTargets="Build"
DependsOnTargets="DiscoverSymbolsTarballs"
Outputs="%(SymbolsTarball.Identity)">
<PropertyGroup>
<Filename>$([System.IO.Path]::GetFileName('%(SymbolsTarball.Identity)'))</Filename>
<RepositoryName>$(Filename.Split('.')[1])</RepositoryName>
<UnifiedSymbolsLayout>$(ArtifactsTmpDir)Symbols</UnifiedSymbolsLayout>
<DestinationFolder>$(UnifiedSymbolsLayout)/$(RepositoryName)</DestinationFolder>
</PropertyGroup>
<MakeDir Directories="$(DestinationFolder)" />
<Exec Command="tar -xzf %(SymbolsTarball.Identity) -C $(DestinationFolder)"
WorkingDirectory="$(SymbolsRoot)" />
<Delete Files="%(SymbolsTarball.Identity)" />
</Target>
<!-- After building, repackage symbols into a single tarball. -->
<Target Name="RepackageSymbols"
AfterTargets="Build"
DependsOnTargets="
DetermineSourceBuiltSdkVersion;
DiscoverSymbolsTarballs;
ExtractSymbolsTarballs">
DependsOnTargets="DetermineSourceBuiltSdkVersion">
<PropertyGroup>
<UnifiedSymbolsTarball>$(SharedOutputPath)dotnet-symbols-all-$(SourceBuiltSdkVersion)-$(TargetRid)$(ArchiveExtension)</UnifiedSymbolsTarball>
<UnifiedSymbolsTarball>$(ArtifactsAssetsDir)dotnet-symbols-all-$(SourceBuiltSdkVersion)-$(TargetRid)$(ArchiveExtension)</UnifiedSymbolsTarball>
</PropertyGroup>
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(UnifiedSymbolsTarball)'))" />
<Exec Command="tar --numeric-owner -czf $(UnifiedSymbolsTarball) *"
WorkingDirectory="$(UnifiedSymbolsLayout)" />
WorkingDirectory="$(IntermediateSymbolsRootDir)" />
<Message Importance="High" Text="Packaged all symbols in '$(UnifiedSymbolsTarball)'" />
</Target>
@ -79,33 +36,33 @@
AfterTargets="Build"
DependsOnTargets="RepackageSymbols">
<ItemGroup>
<SdkTarballItem Include="$(SharedOutputPath)dotnet-sdk-*$(ArchiveExtension)" />
<SdkTarballItem Include="$(ArtifactsAssetsDir)dotnet-sdk-*$(ArchiveExtension)" />
</ItemGroup>
<PropertyGroup>
<SdkSymbolsLayout>$(ArtifactsTmpDir)SdkSymbols</SdkSymbolsLayout>
<SdkSymbolsTarball>$(SharedOutputPath)dotnet-symbols-sdk-$(SourceBuiltSdkVersion)-$(TargetRid)$(ArchiveExtension)</SdkSymbolsTarball>
<SdkLayout>$(ArtifactsTmpDir)Sdk</SdkLayout>
<SdkSymbolsTarball>$(ArtifactsAssetsDir)dotnet-symbols-sdk-$(SourceBuiltSdkVersion)-$(TargetRid)$(ArchiveExtension)</SdkSymbolsTarball>
<IntermediateSdkSymbolsLayout>$(BaseIntermediateOutputPath)SdkSymbols</IntermediateSdkSymbolsLayout>
<IntermediateSdkLayout>$(BaseIntermediateOutputPath)Sdk</IntermediateSdkLayout>
<SdkTarball>%(SdkTarballItem.Identity)</SdkTarball>
</PropertyGroup>
<MakeDir Directories="$(SdkLayout)" />
<Exec Command="tar -xzf $(SdkTarball) -C $(SdkLayout)"
WorkingDirectory="$(SharedOutputPath)" />
<MakeDir Directories="$(IntermediateSdkLayout)" />
<Exec Command="tar -xzf $(SdkTarball) -C $(IntermediateSdkLayout)" />
<CreateSdkSymbolsLayout SdkLayoutPath="$(SdkLayout)"
AllSymbolsPath="$(UnifiedSymbolsLayout)"
SdkSymbolsLayoutPath="$(SdkSymbolsLayout)"
<CreateSdkSymbolsLayout SdkLayoutPath="$(IntermediateSdkLayout)"
AllSymbolsPath="$(IntermediateSymbolsRootDir)"
SdkSymbolsLayoutPath="$(IntermediateSdkSymbolsLayout)"
FailOnMissingPDBs="false" />
<Exec Command="tar --numeric-owner -czf $(SdkSymbolsTarball) *"
WorkingDirectory="$(SdkSymbolsLayout)" />
WorkingDirectory="$(IntermediateSdkSymbolsLayout)" />
<Message Importance="High" Text="Packaged sdk symbols in '$(SdkSymbolsTarball)'" />
<RemoveDir Directories="$(UnifiedSymbolsLayout)" />
<RemoveDir Directories="$(SdkSymbolsLayout)" />
<RemoveDir Directories="$(SdkLayout)" />
<RemoveDir Directories="$(IntermediateSymbolsRootDir)" />
<RemoveDir Directories="$(IntermediateSdkSymbolsLayout)" />
<RemoveDir Directories="$(IntermediateSdkLayout)" />
</Target>
<!--
@ -126,21 +83,22 @@
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)ReportPoisonUsage.complete" >
<ItemGroup>
<FinalCliTarball Include="$(SharedOutputPath)**/*$(ArchiveExtension)" />
<!-- Exclude the Private.SourceBuilt.Artifacts archive from poison usage scan. -->
<PoisonFileToCheck Include="$(ArtifactsAssetsDir)*$(ArchiveExtension)" />
<PoisonFileToCheck Remove="$(ArtifactsAssetsDir)$(SourceBuiltArtifactsTarballName)*" />
<!-- Include shipping nuget packages. -->
<PoisonFileToCheck Include="$(ArtifactsShippingPackagesDir)*.nupkg" />
<!-- Add and mark SBRP packages to validate that they have the correct poison attribute. -->
<PoisonFileToCheck Include="$(ReferencePackagesDir)**\*.nupkg" IsSourceBuildReferencePackage="true" />
</ItemGroup>
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Checking @(FinalCliTarball) for poisoned files." />
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Checking @(PoisonFileToCheck) for poisoned files." />
<ItemGroup>
<NonShippingPackagesList Include="$(PackageListsDir)**/$(NonShippingPackagesListPrefix)*" />
</ItemGroup>
<CheckForPoison FilesToCheck="@(FinalCliTarball)"
<CheckForPoison FilesToCheck="@(PoisonFileToCheck)"
ProjectDirPath="$(RepoRoot)"
HashCatalogFilePath="$(PoisonReportDataFile)"
MarkerFileName="$(PoisonMarkerFile)"
PoisonReportOutputFilePath="$(PoisonUsageReportFile)"
NonShippingPackagesListFiles="@(NonShippingPackagesList)" />
PoisonReportOutputFilePath="$(PoisonUsageReportFile)" />
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Done checking for poison." />
@ -170,8 +128,8 @@
<Target Name="RunSmokeTest">
<ItemGroup>
<SdkTarballItem Include="$(SharedOutputPath)**/dotnet-sdk*$(ArchiveExtension)" />
<SourceBuiltArtifactsItem Include="$(SharedOutputPath)**/$(SourceBuiltArtifactsTarballName).*$(ArchiveExtension)" />
<SdkTarballItem Include="$(ArtifactsAssetsDir)dotnet-sdk*$(ArchiveExtension)" />
<SourceBuiltArtifactsItem Include="$(ArtifactsAssetsDir)$(SourceBuiltArtifactsTarballName).*$(ArchiveExtension)" />
</ItemGroup>
<PropertyGroup>
@ -218,17 +176,18 @@
DependsOnTargets="DetermineSourceBuiltSdkVersion"
Condition="'@(SmokeTestsPrereqs->Count())' != '0'">
<PropertyGroup>
<SmokeTestPrereqsTarballName>$(SharedOutputPath)dotnet-smoke-test-prereqs.$(SourceBuiltSdkVersion).$(TargetRid)$(ArchiveExtension)</SmokeTestPrereqsTarballName>
<SmokeTestPrereqsTarball>$(ArtifactsAssetsDir)dotnet-smoke-test-prereqs.$(SourceBuiltSdkVersion).$(TargetRid)$(ArchiveExtension)</SmokeTestPrereqsTarball>
<SmokeTestsPrereqPackagesDir>$(SmokeTestsArtifactsDir)prereq-packages/</SmokeTestsPrereqPackagesDir>
</PropertyGroup>
<Copy SourceFiles="@(SmokeTestsPrereqs)"
DestinationFolder="$(SmokeTestsPrereqPackagesDir)" />
<Exec Command="tar --numeric-owner -czf $(SmokeTestPrereqsTarballName) ."
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(SmokeTestPrereqsTarball)'))" />
<Exec Command="tar --numeric-owner -czf $(SmokeTestPrereqsTarball) ."
WorkingDirectory="$(SmokeTestsPrereqPackagesDir)"/>
<Message Importance="High" Text="Packaged smoke-test prereqs in '$(SmokeTestPrereqsTarballName)'" />
<Message Importance="High" Text="Packaged smoke-test prereqs in '$(SmokeTestPrereqsTarball)'" />
</Target>
<Target Name="CreatePrebuiltsTarball"
@ -251,13 +210,14 @@
DependsOnTargets="DetermineSourceBuiltSdkVersion"
Condition="'@(PrebuiltFile->Count())' != '0'">
<PropertyGroup>
<TarballFilePath>$(SharedOutputPath)$(SourceBuiltPrebuiltsTarballName).$(SourceBuiltSdkVersion).$(TargetRid)$(ArchiveExtension)</TarballFilePath>
<TarballWorkingDir>$(ResultingPrebuiltPackagesDir)</TarballWorkingDir>
<PrebuiltsTarball>$(ArtifactsAssetsDir)$(SourceBuiltPrebuiltsTarballName).$(SourceBuiltSdkVersion).$(TargetRid)$(ArchiveExtension)</PrebuiltsTarball>
<PrebuiltsTarballWorkingDir>$(ResultingPrebuiltPackagesDir)</PrebuiltsTarballWorkingDir>
</PropertyGroup>
<Exec Command="tar --numeric-owner -zcf $(TarballFilePath) -C $(TarballWorkingDir) ." />
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(PrebuiltsTarball)'))" />
<Exec Command="tar --numeric-owner -zcf $(PrebuiltsTarball) -C $(PrebuiltsTarballWorkingDir) ." />
<Message Text="Tarball '$(TarballFilePath)' was successfully created from '$(TarballWorkingDir)'" Importance="High" />
<Message Text="Tarball '$(PrebuiltsTarball)' was successfully created from '$(PrebuiltsTarballWorkingDir)'" Importance="High" />
</Target>
<Target Name="ErrorOnPrebuilts"

View file

@ -1,27 +0,0 @@
# This is the dotnet/dotnet pipeline that is triggered every weekday at midnight PST (08:00 UTC) for "main" and when changes are pushed to release/* and internal/release/* branches.
schedules:
- cron: '0 8 * * Mon-Fri'
displayName: Weekday midnight build
branches:
include:
- main
batch: true
trigger:
batch: true
branches:
include:
- release/*
- internal/release/*
pr: none
stages:
- ${{ if ne(variables['Build.Reason'], 'Schedule') }}:
- template: templates/stages/vmr-scan.yml
- template: /src/installer/eng/pipelines/templates/stages/vmr-cross-build.yml
parameters:
isBuiltFromVmr: true
isLiteBuild: false

View file

@ -1,22 +0,0 @@
# This is the dotnet/dotnet-lite pipeline that is triggered by pushes to main and PRs targetting main and release/*.
trigger:
batch: true
branches:
include:
- main
pr:
branches:
include:
- main
- release/*
stages:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: templates/stages/vmr-scan.yml
- template: /src/installer/eng/pipelines/templates/stages/vmr-build.yml
parameters:
isBuiltFromVmr: true
isLiteBuild: true

View file

@ -1,26 +1,58 @@
# This is the dotnet/dotnet pipeline that is triggered every weekday at midnight PST (08:00 UTC) for "main" and when changes are pushed to release/* and internal/release/* branches.
# This yml is used by these pipelines and triggers:
# NOTE: the triggers are defined in the Azure DevOps UI as they are too complex
#
# - dotnet-source-build (public)
# - PR: ultralite build
# - CI: release/* only, every batched commit, full build
# - Schedule: main only, full build
#
# - dotnet-unified-build (public)
# - PR: lite build
# - CI: release/* only, every batched commit, full build
# - Schedule: main only, full build
#
# - dotnet-source-build (internal)
# - PR: ultralite build
# - CI: release/* and internal/release/* only, every batched commit, full build
# - Schedule: main only, full build
#
# - dotnet-source-build-lite (internal)
# - PR: release/* and main, lite build, on-demand trigger
# - CI: main only, every batched commit, lite build
#
# - dotnet-unified-build (internal)
# - PR: lite build
# - CI: release/*, internal/release/* and main, every batched commit, full build
schedules:
- cron: '0 8 * * Mon-Fri'
displayName: Weekday midnight build
branches:
include:
- main
batch: true
variables:
# enable source-only build for pipelines that contain the -source-build string
- name: isSourceOnlyBuild
value: ${{ contains(variables['Build.DefinitionName'], '-source-build') }}
trigger:
batch: true
branches:
include:
- release/*
- internal/release/*
- name: isSourceOnlyBuildLite
value: ${{ contains(variables['Build.DefinitionName'], '-source-build-lite') }}
pr: none
- name: isScheduleTrigger
value: ${{ eq(variables['Build.Reason'], 'Schedule') }}
- name: isPRTrigger
value: ${{ eq(variables['Build.Reason'], 'PullRequest') }}
stages:
- ${{ if and(ne(variables.isPRTrigger, 'true'), eq(variables['System.TeamProject'], 'internal')) }}:
- template: templates/stages/vmr-scan.yml
- template: /src/installer/eng/pipelines/templates/stages/vmr-build.yml
parameters:
isBuiltFromVmr: true
isLiteBuild: false
isSourceOnlyBuild: ${{ variables.isSourceOnlyBuild }}
${{ if eq(variables.isScheduleTrigger, 'true') }}:
scope: full
${{ elseif eq(variables.isSourceOnlyBuildLite, 'true') }}:
scope: lite
${{ elseif and(eq(variables.isPRTrigger, 'true'), eq(variables.isSourceOnlyBuild, 'true')) }}:
scope: ultralite
${{ elseif and(eq(variables.isPRTrigger, 'true'), ne(variables.isSourceOnlyBuild, 'true')) }}:
scope: lite
${{ else }}:
scope: full

View file

@ -1,49 +0,0 @@
<Project Sdk="Microsoft.Build.NoTargets">
<PropertyGroup>
<TargetFramework>$(NetCurrent)</TargetFramework>
</PropertyGroup>
<Target Name="GenerateGraphViz"
AfterTargets="Build">
<ItemGroup>
<RepoProject Include="$(RepoProjectsDir)*.proj"
Exclude="$(RepoProjectsDir)dotnet.proj;
$(RepoProjectsDir)package-source-build.proj" />
</ItemGroup>
<MSBuild Projects="@(RepoProject)"
Targets="GetRepositoryReferences">
<Output TaskParameter="TargetOutputs" ItemName="RepoReference" />
</MSBuild>
<ItemGroup>
<RepoLink Include="%(RepoReference.MSBuildSourceProjectFile)" SourceRepo="%(RepoReference.Identity)" />
<RepoLink TargetRepo="%(Filename)" />
<RepoLink Text="&quot;%(SourceRepo)&quot; -> &quot;%(TargetRepo)&quot;" />
</ItemGroup>
<PropertyGroup>
<GraphVizFile>$(BaseIntermediateOutputPath)graphviz.dot</GraphVizFile>
<GraphVizPngFile>$(BaseIntermediateOutputPath)graphviz.png</GraphVizPngFile>
<GraphVizContent>digraph {
graph [ dpi = 150 ]
@(RepoLink -> '%(Text)')
}</GraphVizContent>
</PropertyGroup>
<WriteLinesToFile Lines="$(GraphVizContent)"
File="$(GraphVizFile)"
Overwrite="True" />
<Message Text="$(MSBuildProjectName) -> $(GraphVizFile)" Importance="High" />
<Exec Command="$([MSBuild]::NormalizePath('$(GraphVizDir)', 'dot')) $(GraphVizFile) -Tpng:cairo -o $(GraphVizPngFile)"
Condition="'$(GraphVizDir)' != ''" />
<Message Text="$(MSBuildProjectName) -> $(GraphVizPngFile)"
Importance="High"
Condition="'$(GraphVizDir)' != ''" />
</Target>
</Project>

View file

@ -67,7 +67,7 @@
Properties="MSBuildRestoreSessionId=$([System.Guid]::NewGuid())" />
<MSBuild Projects="tasks\SourceBuild.MSBuildSdkResolver\SourceBuild.MSBuildSdkResolver.csproj"
Targets="Build;InstallResolver" />
Targets="Build" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)BuildMSBuildSdkResolver.complete" AlwaysCreate="true">
@ -75,6 +75,10 @@
</Touch>
</Target>
<PropertyGroup>
<SourceBuildMSBuildSdkResolverManifestPath>$([MSBuild]::NormalizePath('$(VSMSBuildSdkResolversDir)', 'SourceBuild.MSBuildSdkResolver', 'SourceBuild.MSBuildSdkResolver.xml'))</SourceBuildMSBuildSdkResolverManifestPath>
</PropertyGroup>
<!-- Build msbuild tasks. -->
<Target Name="BuildXPlatTasks"
DependsOnTargets="UnpackTarballs;BuildMSBuildSdkResolver"

View file

@ -28,6 +28,8 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
/// The files to check for poison and/or hash matches. Zips and
/// nupkgs will be extracted and checked recursively.
/// %(Identity): Path to the initial set of files.
/// Add SourceBuildReferencePackage metadata and set to true to
/// indicate that the file comes from SBRP.
/// </summary>
[Required]
public ITaskItem[] FilesToCheck { get; set; }
@ -66,11 +68,6 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
/// </summary>
public string OverrideTempPath { get; set; }
/// <summary>
/// Array of files containing lists of non-shipping packages
/// </summary>
public ITaskItem[] NonShippingPackagesListFiles { get; set; }
private static readonly string[] ZipFileExtensions =
{
".zip",
@ -152,11 +149,13 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
private const string SbrpAttributeType = "System.Reflection.AssemblyMetadataAttribute";
private record CandidateFileEntry(string ExtractedPath, string DisplayPath);
private const string SbrpMetadataName = "IsSourceBuildReferencePackage";
private record CandidateFileEntry(string ExtractedPath, string DisplayPath, bool IsSourceBuildReferencePackage);
public override bool Execute()
{
IEnumerable<PoisonedFileEntry> poisons = GetPoisonedFiles(FilesToCheck.Select(f => f.ItemSpec), HashCatalogFilePath, MarkerFileName);
IEnumerable<PoisonedFileEntry> poisons = GetPoisonedFiles(FilesToCheck, HashCatalogFilePath, MarkerFileName);
// if we should write out the poison report, do that
if (!string.IsNullOrWhiteSpace(PoisonReportOutputFilePath))
@ -184,13 +183,14 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
/// <param name="catalogedPackagesFilePath">File path to the file hash catalog</param>
/// <param name="markerFileName">Marker file name to check for in poisoned nupkgs</param>
/// <returns>List of poisoned packages and files found and reasons for each</returns>
internal IEnumerable<PoisonedFileEntry> GetPoisonedFiles(IEnumerable<string> initialCandidates, string catalogedPackagesFilePath, string markerFileName)
internal IEnumerable<PoisonedFileEntry> GetPoisonedFiles(IEnumerable<ITaskItem> initialCandidates, string catalogedPackagesFilePath, string markerFileName)
{
IEnumerable<string> nonShippingPackages = GetAllNonShippingPackages();
IEnumerable<CatalogPackageEntry> catalogedPackages = ReadCatalog(catalogedPackagesFilePath);
var poisons = new List<PoisonedFileEntry>();
var candidateQueue = new Queue<CandidateFileEntry>(initialCandidates.Select(candidate =>
new CandidateFileEntry(candidate, Utility.MakeRelativePath(candidate, ProjectDirPath))));
new CandidateFileEntry(candidate.ItemSpec,
Utility.MakeRelativePath(candidate.ItemSpec, ProjectDirPath),
candidate.GetMetadata(SbrpMetadataName) == "true")));
if (!string.IsNullOrWhiteSpace(OverrideTempPath))
{
@ -209,12 +209,6 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
{
Log.LogMessage($"Zip or NuPkg file to check: {candidate.ExtractedPath}");
// Skip non-shipping packages
if (nonShippingPackages.Contains(Path.GetFileName(candidate.ExtractedPath), StringComparer.OrdinalIgnoreCase))
{
continue;
}
var tempCheckingDir = Path.Combine(tempDir.FullName, Path.GetFileNameWithoutExtension(candidate.ExtractedPath));
PoisonedFileEntry result = ExtractAndCheckZipFileOnly(catalogedPackages, candidate, markerFileName, tempCheckingDir, candidateQueue);
if (result != null)
@ -237,21 +231,6 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
return poisons;
}
private IEnumerable<string> GetAllNonShippingPackages()
{
if (NonShippingPackagesListFiles != null)
{
return NonShippingPackagesListFiles
.SelectMany(item => File.ReadAllLines(item.ItemSpec))
.Distinct()
.ToList();
}
else
{
return Enumerable.Empty<string>();
}
}
private static PoisonedFileEntry CheckSingleFile(IEnumerable<CatalogPackageEntry> catalogedPackages, CandidateFileEntry candidate)
{
// skip some common files that get copied verbatim from nupkgs - LICENSE, _._, etc as well as
@ -303,7 +282,7 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
try
{
AssemblyName asm = AssemblyName.GetAssemblyName(fileToCheck);
if (!candidate.DisplayPath.Contains("SourceBuildReferencePackages") && IsAssemblyFromSbrp(fileToCheck))
if (!candidate.IsSourceBuildReferencePackage && IsAssemblyFromSbrp(fileToCheck))
{
poisonEntry.Type |= PoisonType.SourceBuildReferenceAssembly;
}
@ -451,7 +430,7 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection
{
string displayPath = $"{candidate.DisplayPath}/{child.Replace(tempDir, string.Empty).TrimStart(Path.DirectorySeparatorChar)}";
futureFilesToCheck.Enqueue(new CandidateFileEntry(child, displayPath));
futureFilesToCheck.Enqueue(new CandidateFileEntry(child, displayPath, candidate.IsSourceBuildReferencePackage));
}
return poisonEntry.Type != PoisonType.None ? poisonEntry : null;

View file

@ -26,7 +26,7 @@ namespace Microsoft.DotNet.Build.Tasks
/// <summary>
/// Whether to work in offline mode (remove all internet sources) or online mode (remove only authenticated sources)
/// </summary>
public bool BuildWithOnlineSources { get; set; }
public bool BuildWithOnlineFeeds { get; set; }
/// <summary>
/// A list of prefix strings that make the task keep a package source unconditionally. For
@ -56,7 +56,7 @@ namespace Microsoft.DotNet.Build.Tasks
}
string feedUrl = e.Attribute("value").Value;
if (BuildWithOnlineSources)
if (BuildWithOnlineFeeds)
{
return !( feedUrl.StartsWith("https://pkgs.dev.azure.com/dnceng/_packaging", StringComparison.OrdinalIgnoreCase) ||
feedUrl.StartsWith("https://pkgs.dev.azure.com/dnceng/internal/_packaging", StringComparison.OrdinalIgnoreCase) );

View file

@ -27,7 +27,7 @@ namespace Microsoft.DotNet.Build.Tasks
/// <summary>
/// Whether to work in offline mode (remove all internet sources) or online mode (remove only authenticated sources)
/// </summary>
public bool BuildWithOnlineSources { get; set; }
public bool BuildWithOnlineFeeds { get; set; }
/// <summary>
/// A list of all source-build specific NuGet sources.
@ -54,7 +54,7 @@ namespace Microsoft.DotNet.Build.Tasks
.Distinct()
.ToArray();
if (!BuildWithOnlineSources)
if (!BuildWithOnlineFeeds)
{
// When building offline remove all packageSourceMappings.
pkgSrcMappingElement?.ReplaceNodes(new XElement("clear"));

View file

@ -4,20 +4,23 @@
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<Target Name="InstallResolver">
<PropertyGroup>
<SourceBuildMSBuildSdkResolverPath>$([MSBuild]::NormalizePath('$(DotNetRoot)', 'sdk', '$(NETCoreSdkVersion)', 'SdkResolvers', '$(MSBuildProjectName)', '$(MSBuildProjectName).dll'))</SourceBuildMSBuildSdkResolverPath>
</PropertyGroup>
<Copy SourceFiles="$(TargetPath)" DestinationFiles="$(SourceBuildMSBuildSdkResolverPath)" />
<Message Text="Adding resolver to SDK: $(MSBuildProjectName) -> $(SourceBuildMSBuildSdkResolverPath)" Importance="High" />
</Target>
<ItemGroup>
<PackageReference Include="Microsoft.Build" Version="$(MicrosoftBuildVersion)" />
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildVersion)" />
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildVersion)" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildVersion)" />
<PackageReference Include="Microsoft.Build" Version="$(MicrosoftBuildVersion)" ExcludeAssets="runtime"/>
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildVersion)" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildVersion)" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildVersion)" ExcludeAssets="runtime" />
</ItemGroup>
<PropertyGroup>
<SourceBuildMSBuildSdkResolverManifestPath>$([MSBuild]::NormalizePath('$(VSMSBuildSdkResolversDir)', '$(MSBuildProjectName)', '$(MSBuildProjectName).xml'))</SourceBuildMSBuildSdkResolverManifestPath>
</PropertyGroup>
<Target Name="InstallResolver" BeforeTargets="PrepareForRun">
<WriteLinesToFile
File="$(SourceBuildMSBuildSdkResolverManifestPath)"
Lines="&lt;SdkResolver&gt;&lt;Path&gt;$(TargetPath)&lt;/Path&gt;&lt;/SdkResolver&gt;"
Overwrite="true"
WriteOnlyWhenDifferent="true" />
</Target>
</Project>

View file

@ -12,17 +12,17 @@ using System.Linq;
namespace Microsoft.DotNet.SourceBuild.Tasks
{
/// <summary>
/// Extends the SDK to handle "SOURCE_BUILD_SDK_*" override environment variables. Each override
/// Extends the SDK to handle "SOURCE_BUILT_SDK_*" override environment variables. Each override
/// should provide a set of 3 environment variables:
///
/// SOURCE_BUILD_SDK_ID_EXAMPLE=Your.Sdk.Example
/// SOURCE_BUILT_SDK_ID_EXAMPLE=Your.Sdk.Example
/// ID of the SDK nuget package to override.
///
/// SOURCE_BUILD_SDK_DIR_EXAMPLE=/git/repo/bin/extracted/Your.Sdk.Example/
/// SOURCE_BUILT_SDK_DIR_EXAMPLE=/git/repo/bin/extracted/Your.Sdk.Example/
/// Directory where the sdk/Sdk.props and/or sdk/Sdk.targets files are located. This should be
/// the directory where the override SDK package is extracted.
///
/// SOURCE_BUILD_SDK_VERSION_EXAMPLE=1.0.0-source-built
/// SOURCE_BUILT_SDK_VERSION_EXAMPLE=1.0.0-source-built
/// (Optional) Version of the SDK package to use. This is informational.
/// </summary>
public class SourceBuiltSdkResolver : SdkResolver
@ -54,7 +54,7 @@ namespace Microsoft.DotNet.SourceBuild.Tasks
void LogMessage(string message)
{
resolverContext.Logger.LogMessage($"[{Name}] {message}", MessageImportance.High);
resolverContext.Logger.LogMessage($"[{Name}] {message}", MessageImportance.Low);
}
if (overrides.Any())

View file

@ -1,9 +1,10 @@
{
"tools": {
"dotnet": "9.0.100-alpha.1.24067.4"
"dotnet": "9.0.100-preview.2.24103.2"
},
"msbuild-sdks": {
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24075.2"
"Microsoft.Build.Traversal": "3.4.0",
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24102.4"
}
}

View file

@ -15,25 +15,41 @@
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<ProjectDirectory>$([MSBuild]::NormalizeDirectory('$(SrcDir)', '$(RepositoryName)'))</ProjectDirectory>
<PackagesOutput>$([MSBuild]::NormalizeDirectory('$(ProjectDirectory)', 'artifacts', 'packages', '$(Configuration)', 'NonShipping'))</PackagesOutput>
<!-- Paths to the version props files -->
<PackageVersionPropsPath>$(SharedIntermediateOutputPath)PackageVersions.$(RepositoryName).props</PackageVersionPropsPath>
<CurrentSourceBuiltPackageVersionPropsPath>$(SharedIntermediateOutputPath)PackageVersions.$(RepositoryName).Current.props</CurrentSourceBuiltPackageVersionPropsPath>
<PreviouslySourceBuiltPackageVersionPropsPath>$(SharedIntermediateOutputPath)PackageVersions.$(RepositoryName).Previous.props</PreviouslySourceBuiltPackageVersionPropsPath>
<SnapshotPackageVersionPropsPath>$(SharedIntermediateOutputPath)PackageVersions.$(RepositoryName).Snapshot.props</SnapshotPackageVersionPropsPath>
<PackageVersionsDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsObjDir)', 'PackageVersions'))</PackageVersionsDir>
<PackageVersionPropsPath>$(PackageVersionsDir)PackageVersions.$(RepositoryName).props</PackageVersionPropsPath>
<CurrentSourceBuiltPackageVersionPropsPath>$(PackageVersionsDir)PackageVersions.$(RepositoryName).Current.props</CurrentSourceBuiltPackageVersionPropsPath>
<PreviouslySourceBuiltPackageVersionPropsPath>$(PackageVersionsDir)PackageVersions.$(RepositoryName).Previous.props</PreviouslySourceBuiltPackageVersionPropsPath>
<SnapshotPackageVersionPropsPath>$(PackageVersionsDir)PackageVersions.$(RepositoryName).Snapshot.props</SnapshotPackageVersionPropsPath>
<PackageVersionPropsFlowType>DependenciesOnly</PackageVersionPropsFlowType>
<GlobalJsonFile Condition="'$(GlobalJsonFile)' == '' and Exists('$(ProjectDirectory)global.json')">$(ProjectDirectory)global.json</GlobalJsonFile>
<NuGetConfigFile Condition="'$(NuGetConfigFile)' == '' and Exists('$(ProjectDirectory)NuGet.config')">$(ProjectDirectory)NuGet.config</NuGetConfigFile>
<NuGetConfigFile Condition="'$(NuGetConfigFile)' == '' and Exists('$(ProjectDirectory)NuGet.Config')">$(ProjectDirectory)NuGet.Config</NuGetConfigFile>
<OriginalNuGetConfigFile>$(NuGetConfigFile)</OriginalNuGetConfigFile>
<!-- Update nuget.config property to point to modified file that will be created/updated during build. -->
<NuGetConfigFile Condition="'$(OriginalNuGetConfigFile)' != ''">$(BaseIntermediateOutputPath)$([System.IO.Path]::GetFileName('$(OriginalNuGetConfigFile)'))</NuGetConfigFile>
<SourceBuiltSdksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'source-built-sdks'))</SourceBuiltSdksDir>
<RepoArtifactsShippingPackagesDir Condition="'$(RepositoryName)' != 'source-build-reference-packages'">$([MSBuild]::NormalizeDirectory('$(ArtifactsShippingPackagesDir)', '$(RepositoryName)'))</RepoArtifactsShippingPackagesDir>
<RepoArtifactsShippingPackagesDir Condition="'$(RepositoryName)' == 'source-build-reference-packages'">$(ReferencePackagesDir)</RepoArtifactsShippingPackagesDir>
<RepoArtifactsNonShippingPackagesDir Condition="'$(RepositoryName)' != 'source-build-reference-packages'">$([MSBuild]::NormalizeDirectory('$(ArtifactsNonShippingPackagesDir)', '$(RepositoryName)'))</RepoArtifactsNonShippingPackagesDir>
<RepoArtifactsNonShippingPackagesDir Condition="'$(RepositoryName)' == 'source-build-reference-packages'">$(ReferencePackagesDir)</RepoArtifactsNonShippingPackagesDir>
<!-- Set the bootstrap version to the VMR's version if empty. (no bootstrap set). -->
<ArcadeBootstrapVersion>$([MSBuild]::ValueOrDefault('$(ARCADE_BOOTSTRAP_VERSION)', '$(ArcadeSdkVersion)'))</ArcadeBootstrapVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<!-- Get Microsoft.Build.NoTargets and Microsoft.Build.Traversal versions from VMR's global.json -->
<VMRGlobalJsonContents>$([System.IO.File]::ReadAllText($(RepoRoot)global.json))</VMRGlobalJsonContents>
<NoTargetsSdkVersion>$([System.Text.RegularExpressions.Regex]::Match($(VMRGlobalJsonContents), '"Microsoft.Build.NoTargets": "([^"]*)"').Groups.get_Item(1))</NoTargetsSdkVersion>
<TraversalSdkVersion>$([System.Text.RegularExpressions.Regex]::Match($(VMRGlobalJsonContents), '"Microsoft.Build.Traversal": "([^"]*)"').Groups.get_Item(1))</TraversalSdkVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(BuildOS)' == 'windows'">
<FlagParameterPrefix>-</FlagParameterPrefix>
<ArcadeFalseBoolBuildArg>0</ArcadeFalseBoolBuildArg>
@ -59,7 +75,9 @@
<!-- Indicate that the build is being run from the orchestrator -->
<BuildArgs>$(BuildArgs) /p:DotNetBuildOrchestrator=true</BuildArgs>
<BuildArgs Condition="'$(CrossBuild)' == 'true'">$(BuildArgs) /p:CrossBuild=true</BuildArgs>
<BuildArgs Condition="'$(DotNetBuildSkipTests)' == 'true'">$(BuildArgs) /p:DotNetBuildSkipTests=true</BuildArgs>
<!-- Only pass when enabled to reduce command line noise. -->
<BuildArgs Condition="'$(DotNetBuildTests)' == 'true'">$(BuildArgs) /p:DotNetBuildTests=true</BuildArgs>
<BuildArgs Condition="'$(NuGetConfigFile)' != ''">$(BuildArgs) /p:RestoreConfigFile=$(NuGetConfigFile)</BuildArgs>
</PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' != 'true'">
@ -68,6 +86,7 @@
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<BuildArgs>$(BuildArgs) /p:ArcadeBuildFromSource=true</BuildArgs>
<BuildArgs>$(BuildArgs) /p:DotNetBuildSourceOnly=true</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PreviouslySourceBuiltNupkgCacheDir="$(PrebuiltSourceBuiltPackagesPath)"</BuildArgs>
<BuildArgs>$(BuildArgs) /p:ReferencePackageNupkgCacheDir="$(ReferencePackagesDir)"</BuildArgs>
<BuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(BuildArgs) /p:SourceBuildUseMonoRuntime=$(SourceBuildUseMonoRuntime)</BuildArgs>
@ -81,12 +100,6 @@
<AspNetRazorBuildServerLogFile>$(AspNetRazorBuildServerLogDir)razor-build-server.log</AspNetRazorBuildServerLogFile>
</PropertyGroup>
<!-- Cross-build property setting from OverrideTargetRid -->
<PropertyGroup Condition="'$(OverrideTargetRid)' != ''">
<OverrideTargetOS>$(OverrideTargetRid.Substring(0, $(OverrideTargetRid.LastIndexOf('-'))))</OverrideTargetOS>
<OverrideTargetArch>$(OverrideTargetRid.Substring($(OverrideTargetRid.LastIndexOf('-'))).TrimStart('-'))</OverrideTargetArch>
</PropertyGroup>
<ItemGroup>
<!-- Arcade tools.sh picks up DotNetCoreSdkDir, but we can pass DOTNET_INSTALL_DIR directly. -->
<EnvironmentVariables Include="DOTNET_INSTALL_DIR=$(DotNetRoot)" />
@ -138,11 +151,13 @@
<!-- Need to be passed in as an env var so that custom Exec tasks in the repo's SourceBuild.props receive this setting. -->
<EnvironmentVariables Include="DotNetPackageVersionPropsPath=$(PackageVersionPropsPath)" />
<!-- Needed for miscellanous projects in various repos - see https://github.com/dotnet/source-build/issues/4081-->
<EnvironmentVariables Include="RestoreConfigFile=$(NuGetConfigFile)" Condition="'$(NuGetConfigFile)' != ''" />
</ItemGroup>
<ItemGroup>
<EnvironmentVariables Include="DotNetBuildFromSource=true" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<EnvironmentVariables Include="DotNetBuildVertical=true" Condition="'$(DotNetBuildSourceOnly)' != 'true'" />
</ItemGroup>
<ItemGroup Condition="'$(EnableExtraDebugging)' == 'true'">
@ -168,14 +183,35 @@
<ItemGroup>
<!-- The Arcade SDK is automatically registered while the others are opt-in for the repo projects. -->
<ArcadeSdkOverride Include="Microsoft.DotNet.Arcade.Sdk" Group="ARCADE" Version="$(arcadeOutputPackageVersion)" />
<SourceBuiltSdkOverride Include="@(ArcadeSdkOverride)" Condition="'$(UseBootstrapArcade)' != 'true'" />
<ArcadeSharedFrameworkSdkOverride Include="Microsoft.DotNet.SharedFramework.Sdk" Group="ARCADE_SHARED_FX_SDK" Version="$(arcadeOutputPackageVersion)" />
<ArcadeCMakeSdkOverride Include="Microsoft.DotNet.CMake.Sdk" Group="ARCADE_CMAKE_SDK" Version="$(arcadeOutputPackageVersion)" />
<SourceBuiltSdkOverride Include="@(ArcadeSdkOverride)"
Version="$(ArcadeBootstrapVersion)"
Location="$(ArcadeBootstrapPackageDir)microsoft.dotnet.arcade.sdk/$(ArcadeBootstrapVersion)"
Condition="'$(UseBootstrapArcade)' == 'true'" />
<ArcadeSharedFrameworkSdkOverride Include="Microsoft.DotNet.SharedFramework.Sdk" Group="ARCADE_SHARED_FX_SDK" Version="$(arcadeOutputPackageVersion)" />
<!-- When not bootstrapping, use the just-built versions. -->
<SourceBuiltSdkOverride Include="@(ArcadeSdkOverride)" Condition="'$(UseBootstrapArcade)' != 'true'" />
<SourceBuiltSdkOverride Include="@(ArcadeCMakeSdkOverride)" Condition="'$(UseBootstrapArcade)' != 'true'" />
<SourceBuiltSdkOverride Include="@(ArcadeSharedFrameworkSdkOverride)" Condition="'$(UseBootstrapArcade)' != 'true'" />
<WindowsDesktopSdkOverride Include="Microsoft.Net.Sdk.WindowsDesktop" Group="WINDOWS_DESKTOP" Location="$(ToolsDir)EmptySdk" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<!--
Add Microsoft.Build.NoTargets and Microsoft.Build.Traversal SDK overrides, for all repos,
except source-build-reference-packages repo, that builds these packages and utility projects.
We need to override all SDK packages that are used by repos, to prevent NuGet SDK Resolver from trying to
restore these packages from online feeds. In offline build we only want to use local source-build feeds.
Therefore, we create a copy of repo's NuGet.config file, modify it, and pass it into repo build using
RestoreConfigFile property. MSBuild uses NuGetSdkResolver to restore missing SDKs, which doesn't honor
RestoreConfigFile property and uses NuGet.config file from repo's root which has online feeds.
-->
<NoTargetsSdkOverride Include="Microsoft.Build.NoTargets" Group="NOTARGETS" Version="$(NoTargetsSdkVersion)" />
<TraversalSdkOverride Include="Microsoft.Build.Traversal" Group="TRAVERSAL" Version="$(TraversalSdkVersion)" />
<SourceBuiltSdkOverride Include="@(NoTargetsSdkOverride)" Condition="'$(DotNetBuildSourceOnly)' == 'true' and '$(RepositoryName)' != 'source-build-reference-packages'" />
<SourceBuiltSdkOverride Include="@(TraversalSdkOverride)" Condition="'$(DotNetBuildSourceOnly)' == 'true' and '$(RepositoryName)' != 'source-build-reference-packages'" />
</ItemGroup>
<!-- CLI internal version is statically set by us to a version that will never show up in the wild.
@ -204,8 +240,8 @@
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftNETCoreAppRuntimePackageVersion" Version="%24(MicrosoftNETCoreAppRefPackageVersion)" />
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftNETCoreAppRuntimeVersion" Version="%24(MicrosoftNETCoreAppRefPackageVersion)" />
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftNETCoreAppHostPackageVersion" Version="%24(MicrosoftNETCoreAppRefPackageVersion)" />
<!-- core-sdk uses this property for ASP.NET blob directory -->
<ExtraPackageVersionPropsPackageInfo Include="VSRedistCommonAspNetCoreTargetingPackx6430PackageVersion" Version="$(aspnetcoreOutputPackageVersion)" />
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion" Version="$(windowsdesktopOutputPackageVersion)" />
<!-- Used by installer to determine sdk version -->
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftDotnetToolsetInternalPackageVersion" Version="%24(MicrosoftNETSdkPackageVersion)" />
@ -213,11 +249,6 @@
<!-- Used by sdk to determine msbuild version for fsharp -->
<ExtraPackageVersionPropsPackageInfo Include="FSharpBuildVersion" Version="%24(MicrosoftBuildPackageVersion)" />
<!-- property used by Arcade to determine what version of SourceLink to use -->
<!-- if MicrosoftSourceLinkCommonPackageVersion is non-empty, then we've already built SourceLink, regardless of whether
this is the production or offline build, so we should use that version. -->
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftSourceLinkVersion" Version="%24(MicrosoftSourceLinkCommonPackageVersion)" />
<!-- non-rid-specific versions of RID-specific version variables to use for bootstrapping -->
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftAspNetCoreAppRuntimeVersion" Version="%24(MicrosoftAspNetCoreAppRefPackageVersion)" />
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftNETCoreAppCrossgen2Version" Version="%24(MicrosoftNETCoreAppRefPackageVersion)" />

View file

@ -9,11 +9,12 @@
</PropertyGroup>
<PropertyGroup>
<BuildCommand Condition="'$(BuildCommand)' == '' and '$(IsUtilityProject)' != 'true'">$(BuildScript) $(BuildActions) $(BuildArgs)</BuildCommand>
<!-- Force use of dotnet msbuild (ignoring global.json contents) unless BuildWithDesktopMSBuild is explicitly set in the repo project. -->
<BuildArgs Condition="'$(BuildOS)' == 'windows' and '$(BuildWithDesktopMSBuild)' != 'true'">$(BuildArgs) $(FlagParameterPrefix)msbuildEngine dotnet</BuildArgs>
</PropertyGroup>
<!-- The default PackageVersionPropsFlowType behavior (DependenciesOnly) triggers logic that looks for a
Version.Details.xml file. Setting the type to AllPackages will skip that logic. -->
<PackageVersionPropsFlowType Condition="'$(IsUtilityProject)' == 'true'">AllPackages</PackageVersionPropsFlowType>
<PropertyGroup>
<BuildCommand Condition="'$(BuildCommand)' == '' and '$(IsUtilityProject)' != 'true'">$(BuildScript) $(BuildActions) $(BuildArgs)</BuildCommand>
<!-- MinimalConsoleLogOutput determines if the repository build should be logged to a separate file or directly to the console. -->
<RepoConsoleLogFile>$(ArtifactsLogDir)$(RepositoryName).log</RepoConsoleLogFile>
@ -23,30 +24,11 @@
<ProjectAssetsJsonArchiveFile>$(PackageReportDir)all-project-assets-json-files.zip</ProjectAssetsJsonArchiveFile>
<ProdConManifestFile>$(PackageReportDir)prodcon-build.xml</ProdConManifestFile>
<RepoManifestFile>$([MSBuild]::NormalizePath('$(ProjectDirectory)', 'artifacts', 'RepoManifest.xml'))</RepoManifestFile>
<IntermediateSymbolsRepoDir>$(IntermediateSymbolsRootDir)$(RepositoryName)</IntermediateSymbolsRepoDir>
</PropertyGroup>
<!-- Exclude repositories that currently don't build when not building source-only. -->
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' != 'true'">
<RepositoryReference Remove="roslyn" />
<RepositoryReference Remove="wpf" />
<RepositoryReference Remove="msbuild" />
<RepositoryReference Remove="roslyn-analyzers" />
<RepositoryReference Remove="aspnetcore" />
<RepositoryReference Remove="razor" />
<RepositoryReference Remove="deployment-tools" />
<RepositoryReference Remove="format" />
<RepositoryReference Remove="nuget-client" />
<RepositoryReference Remove="templating" />
<RepositoryReference Remove="test-templates" />
<RepositoryReference Remove="fsharp" />
<RepositoryReference Remove="vstest" />
<RepositoryReference Remove="sdk" />
<RepositoryReference Remove="aspire" />
<RepositoryReference Remove="installer" />
</ItemGroup>
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="AddSourceToNuGetConfig" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="ReadNuGetPackageInfos" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="RemoveInternetSourcesFromNuGetConfig" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="UpdateJson" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="UpdateNuGetConfigPackageSourcesMappings" />
@ -55,76 +37,147 @@
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="WritePackageUsageData" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="WriteUsageReports" />
<!-- Update NuGet feeds in the repo -->
<!-- Wraps the transitive repo references with additional metadata -->
<Target Name="GetRepositoryReferenceInfo"
DependsOnTargets="GetTransitiveRepositoryReferences">
<!-- SBRP is explicitly excluded since it is output to its own special directory, $(ReferencePackagesDir). -->
<ItemGroup Condition="'@(TransitiveRepositoryReference)' != ''">
<RepositoryReferenceInfo Include="@(TransitiveRepositoryReference)"
Exclude="source-build-reference-packages">
<ShippingSourceName>source-built-%(Identity)</ShippingSourceName>
<NonShippingSourceName>source-built-transport-%(Identity)</NonShippingSourceName>
<ShippingPackagesPath>$(ArtifactsShippingPackagesDir)/%(Identity)/</ShippingPackagesPath>
<NonShippingPackagesPath>$(ArtifactsNonShippingPackagesDir)/%(Identity)/</NonShippingPackagesPath>
</RepositoryReferenceInfo>
</ItemGroup>
<ItemGroup Condition="'@(RepositoryReferenceInfo)' != ''">
<DependentRepoSourceName Include="@(RepositoryReferenceInfo->'%(ShippingSourceName)')" />
<DependentRepoSourceName Include="@(RepositoryReferenceInfo->'%(NonShippingSourceName)')" />
<DependentRepoPackageFile Include="%(RepositoryReferenceInfo.ShippingPackagesPath)**" />
<DependentRepoPackageFile Include="%(RepositoryReferenceInfo.NonShippingPackagesPath)**" />
</ItemGroup>
</Target>
<Target Name="CopyNuGetConfig"
Condition="'$(NuGetConfigFile)' != ''"
Inputs="$(MSBuildProjectFullPath);$(OriginalNuGetConfigFile)"
Outputs="$(NuGetConfigFile)">
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(NuGetConfigFile)'))" />
<Copy
SourceFiles="$(OriginalNuGetConfigFile)"
DestinationFiles="$(NuGetConfigFile)">
<Output TaskParameter="CopiedFiles" ItemName="FileWrites" />
</Copy>
</Target>
<Target Name="UpdateNuGetConfig"
BeforeTargets="Build"
Condition="'$(NuGetConfigFile)' != '' or '@(NuGetConfigFiles)' != ''"
DependsOnTargets="CopyNuGetConfig;GetRepositoryReferenceInfo"
Condition="'$(NuGetConfigFile)' != ''"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)UpdateNuGetConfig.complete">
<PropertyGroup>
<SourceBuiltNuGetSourceName>source-built</SourceBuiltNuGetSourceName>
<!-- Dev innerloop opt-in feed: /p:ExtraRestoreSourcePath=... -->
<ExtraSourcesNuGetSourceName>ExtraSources</ExtraSourcesNuGetSourceName>
<SourceBuildSources>$(SourceBuiltNuGetSourceName)</SourceBuildSources>
<SourceBuildSources Condition="'$(ExtraRestoreSourcePath)' != ''">$(SourceBuildSources);$(ExtraSourcesNuGetSourceName)</SourceBuildSources>
</PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<PrebuiltNuGetSourceName>prebuilt</PrebuiltNuGetSourceName>
<PreviouslySourceBuiltNuGetSourceName>previously-source-built</PreviouslySourceBuiltNuGetSourceName>
<ReferencePackagesNuGetSourceName>reference-packages</ReferencePackagesNuGetSourceName>
<SourceBuildSources>$(SourceBuildSources);$(PrebuiltNuGetSourceName);$(PreviouslySourceBuiltNuGetSourceName);$(ReferencePackagesNuGetSourceName)</SourceBuildSources>
</PropertyGroup>
<!-- Update the detected or manually specified NuGetConfigFile, but also allow multiple. -->
<ItemGroup>
<NuGetConfigFiles Include="$(NuGetConfigFile)" />
<_CommonBuildSources Include="@(DependentRepoSourceName)" />
<_CommonBuildSources Include="$(ExtraSourcesNuGetSourceName)" Condition="'$(ExtraRestoreSourcePath)' != ''" />
</ItemGroup>
<ItemGroup>
<_BuildSources Condition="'$(DotNetBuildSourceOnly)' == 'true'"
Include="$(PrebuiltNuGetSourceName);$(PreviouslySourceBuiltNuGetSourceName);$(ReferencePackagesNuGetSourceName)" />
<_BuildSources Include="@(_CommonBuildSources)" />
</ItemGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' != 'true'">
<!-- When not building source-only, repositories lagging behind on the .NET SDK (e.g. tooling repos)
that need to utilize a VS-aligned version for development purposes may not have the latest product
daily build feed in their NuGet.config. This means that when a newer globally-specified .NET SDK
attempts to restore shared framework packages, they will not be found. Work around this by
ensuring that repos have the supporting SDK feed. Note that this is not required when the SDK
in use is a released SDK.
Currently we are using a preview .NET 9 SDK and not all repos are using the Net 9 SDK
If either of these are not true, set below to false.
-->
<AddNetSdkSupportingFeed>true</AddNetSdkSupportingFeed>
<NetSdkSupportingFeedName>net-sdk-supporting-feed</NetSdkSupportingFeedName>
<NetSdkSupportingFeed>https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9/nuget/v3/index.json</NetSdkSupportingFeed>
</PropertyGroup>
<RemoveInternetSourcesFromNuGetConfig
NuGetConfigFile="%(NuGetConfigFiles.Identity)"
BuildWithOnlineSources="$(DotNetBuildWithOnlineSources)"
NuGetConfigFile="$(NuGetConfigFile)"
BuildWithOnlineFeeds="$(DotNetBuildWithOnlineFeeds)"
KeepFeedPrefixes="@(KeepFeedPrefixes)"
Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
<AddSourceToNuGetConfig NuGetConfigFile="$(NuGetConfigFile)"
SourceName="$(PrebuiltNuGetSourceName)"
SourcePath="$(PrebuiltPackagesPath)"
Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
<AddSourceToNuGetConfig NuGetConfigFile="$(NuGetConfigFile)"
SourceName="$(PreviouslySourceBuiltNuGetSourceName)"
SourcePath="$(PrebuiltSourceBuiltPackagesPath)"
Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
<AddSourceToNuGetConfig NuGetConfigFile="$(NuGetConfigFile)"
SourceName="$(ReferencePackagesNuGetSourceName)"
SourcePath="$(ReferencePackagesDir)"
Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
SourceName="$(SourceBuiltNuGetSourceName)"
SourcePath="$(SourceBuiltPackagesPath)" />
<AddSourceToNuGetConfig NuGetConfigFile="$(NuGetConfigFile)"
SourceName="%(RepositoryReferenceInfo.ShippingSourceName)"
SourcePath="%(RepositoryReferenceInfo.ShippingPackagesPath)"
Condition="Exists('%(RepositoryReferenceInfo.ShippingPackagesPath)')" />
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
<AddSourceToNuGetConfig NuGetConfigFile="$(NuGetConfigFile)"
SourceName="%(RepositoryReferenceInfo.NonShippingSourceName)"
SourcePath="%(RepositoryReferenceInfo.NonShippingPackagesPath)"
Condition="Exists('%(RepositoryReferenceInfo.NonShippingPackagesPath)')" />
<AddSourceToNuGetConfig NuGetConfigFile="$(NuGetConfigFile)"
SourceName="$(ExtraSourcesNuGetSourceName)"
SourcePath="$(ExtraRestoreSourcePath)"
Condition="'$(ExtraRestoreSourcePath)' != ''" />
<!-- See root Directory.Build.props for value. -->
<AddSourceToNuGetConfig NuGetConfigFile="$(NuGetConfigFile)"
SourceName="$(NetSdkSupportingFeedName)"
SourcePath="$(NetSdkSupportingFeed)"
Condition="'$(AddNetSdkSupportingFeed)' == 'true'" />
<UpdateNuGetConfigPackageSourcesMappings
NuGetConfigFile="%(NuGetConfigFiles.Identity)"
BuildWithOnlineSources="$(DotNetBuildWithOnlineSources)"
SourceBuildSources="$(SourceBuildSources)" />
NuGetConfigFile="$(NuGetConfigFile)"
BuildWithOnlineFeeds="$(DotNetBuildWithOnlineFeeds)"
SourceBuildSources="@(_BuildSources)" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)UpdateNuGetConfig.complete" AlwaysCreate="true">
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
</Touch>
<ItemGroup>
<!-- This is defined in this target to ensure the NuGet.config file is updated before it gets embedded. If this item
was define globally, it would immediately get embedded with the original, unmodified version of the file. -->
<EmbedInBinlog Include="$(NuGetConfigFile)" />
</ItemGroup>
</Target>
<!-- Update the SDK version in the repo's global.json file.
This guarantees that all repositories build with the VMR's SDK version. -->
<Target Name="UpdateGlobalJsonVersions"
BeforeTargets="Build"
Condition="'$(GlobalJsonFile)' != ''"
Inputs="$(MSBuildProjectFullPath);$(MSBuildThisFileFullPath)"
Outputs="$(BaseIntermediateOutputPath)UpdateGlobalJsonVersions.complete">
@ -151,8 +204,7 @@
<!-- TODO: Remove when all repos use a consistent set of eng/common files: https://github.com/dotnet/source-build/issues/3710. -->
<Target Name="UpdateEngCommonFiles"
Condition="'$(UpdateEngCommonFiles)' == 'true' or '$(DotNetBuildSourceOnly)' != 'true'"
BeforeTargets="Build">
Condition="'$(UpdateEngCommonFiles)' == 'true' or '$(DotNetBuildSourceOnly)' != 'true'">
<ItemGroup>
<OrchestratorEngCommonFile Include="$(RepositoryEngineeringDir)common\**\*" />
</ItemGroup>
@ -165,12 +217,13 @@
<!-- Before a repository builds, set up the version property files that override the repo's defaults.
There are 3 files generated -->
<Target Name="CreateBuildInputProps"
BeforeTargets="Build"
DependsOnTargets="GetRepositoryReferenceInfo"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)CreateBuildInputProps.complete">
<ItemGroup>
<_CurrentSourceBuiltPackages Include="$(SourceBuiltPackagesPath)*.nupkg"
Exclude="$(SourceBuiltPackagesPath)*.symbols.nupkg" />
<!-- Collect all the NuGet packages from dependent repos except for the symbols -->
<_CurrentSourceBuiltPackages Include="@(DependentRepoPackageFile)"
Condition="!$([System.String]::Copy('%(Identity)').EndsWith('.symbols.nupkg'))" />
<_PreviouslyBuiltSourceBuiltPackages Include="$(PrebuiltSourceBuiltPackagesPath)*.nupkg" />
</ItemGroup>
@ -233,11 +286,12 @@
<!-- SkipRepoReferences is a developer innerloop switch to skip building dependencies. -->
<Target Name="BuildRepoReferences"
DependsOnTargets="GetTransitiveRepositoryReferences"
Condition="'@(RepositoryReference)' != '' and '$(SkipRepoReferences)' != 'true'">
<Message Importance="High" Text="Building dependencies [@(RepositoryReference)] needed by '$(RepositoryName)'." />
<Message Importance="High" Text="Building dependencies [@(TransitiveRepositoryReference)] needed by '$(RepositoryName)'." />
<ItemGroup>
<_DependentProject Include="@(RepositoryReference -> '%(Identity).proj')" />
<_DependentProject Include="@(TransitiveRepositoryReference -> '%(Identity).proj')" />
</ItemGroup>
<MSBuild Projects="@(_DependentProject)"
@ -246,31 +300,37 @@
StopOnFirstFailure="true" />
</Target>
<Target Name="Build"
DependsOnTargets="BuildRepoReferences"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)Build.complete">
<Exec Command="$(DotnetTool) build-server shutdown" />
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Building $(RepositoryName)" />
<Message Importance="High" Text="Running command:" Condition="'$(BuildCommand)' != ''" />
<Message Importance="High" Text=" $(BuildCommand)" Condition="'$(BuildCommand)' != ''" />
<Message Importance="High" Text=" Log: $(RepoConsoleLogFile)" Condition="'$(BuildCommand)' != '' and '$(MinimalConsoleLogOutput)' == 'true'" />
<Message Importance="High" Text=" With Environment Variables:" Condition="'$(BuildCommand)' != ''" />
<Message Importance="High" Text=" %(EnvironmentVariables.Identity)" Condition="'$(BuildCommand)' != ''" />
<CallTarget Targets="RepoBuild" />
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Building $(RepositoryName)...done" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)Build.complete" AlwaysCreate="true">
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
</Touch>
<OnError ExecuteTargets="ReportRepoError" />
<Target Name="SetSourceBuiltSdkOverrides"
Condition="'@(SourceBuiltSdkOverride)' != ''">
<ItemGroup>
<!-- Set the environment variables for MSBuild to look for our additional SDK Resolvers and or our resolver to find our source-built SDKs. -->
<EnvironmentVariables Include="MSBUILDADDITIONALSDKRESOLVERSFOLDER=$(VSMSBuildSdkResolversDir)" />
<EnvironmentVariables Include="SOURCE_BUILT_SDK_ID_%(SourceBuiltSdkOverride.Group)=%(SourceBuiltSdkOverride.Identity)" />
<EnvironmentVariables Include="SOURCE_BUILT_SDK_VERSION_%(SourceBuiltSdkOverride.Group)=%(SourceBuiltSdkOverride.Version)" />
<EnvironmentVariables Condition="'%(SourceBuiltSdkOverride.Location)' != ''" Include="SOURCE_BUILT_SDK_DIR_%(SourceBuiltSdkOverride.Group)=%(SourceBuiltSdkOverride.Location)/" />
<EnvironmentVariables Condition="'%(SourceBuiltSdkOverride.Location)' == ''" Include="SOURCE_BUILT_SDK_DIR_%(SourceBuiltSdkOverride.Group)=$(SourceBuiltSdksDir)%(SourceBuiltSdkOverride.Identity)/" />
</ItemGroup>
</Target>
<Target Name="RepoBuild"
Condition="'$(BuildCommand)' != ''">
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)Build.complete"
Condition="'$(BuildCommand)' != ''"
DependsOnTargets="BuildRepoReferences;
UpdateNuGetConfig;
UpdateGlobalJsonVersions;
UpdateEngCommonFiles;
CreateBuildInputProps;
SetSourceBuiltSdkOverrides">
<Exec Command="$(DotnetTool) build-server shutdown" />
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Building $(RepositoryName)" />
<Message Importance="High" Text="Running command:" />
<Message Importance="High" Text=" $(BuildCommand)" />
<Message Importance="High" Text=" Log: $(RepoConsoleLogFile)" Condition="'$(MinimalConsoleLogOutput)' == 'true'" />
<Message Importance="High" Text=" With Environment Variables:"/>
<Message Importance="High" Text=" %(EnvironmentVariables.Identity)" />
<Message Text="DirSize Before Building $(RepositoryName)" Importance="High"
Condition=" '$(CleanWhileBuilding)' == 'true' and '$(BuildOS)' != 'windows'" />
<Exec Command="df -h $(RepoRoot)"
@ -279,11 +339,11 @@
<PropertyGroup>
<FullCommand>$(BuildCommand)</FullCommand>
<FullCommand Condition="'$(LogVerbosityOptOut)' != 'true'">$(FullCommand) /v:$(LogVerbosity)</FullCommand>
<FullCommand Condition="'$(MinimalConsoleLogOutput)' == 'true'">$(FullCommand) &gt;&gt; $(RepoConsoleLogFile) 2&gt;&amp;1</FullCommand>
<FullCommand Condition="'$(MinimalConsoleLogOutput)' == 'true'">$(FullCommand) &gt; $(RepoConsoleLogFile) 2&gt;&amp;1</FullCommand>
</PropertyGroup>
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(RepoConsoleLogFile)'));
$(SourceBuiltPackagesPath)" />
$(ArtifactsAssetsDir)" />
<!-- Create directories for extra debugging. -->
<MakeDir Directories="$(MSBuildDebugPathTargetDir);
@ -293,154 +353,100 @@
<Exec Command="$(FullCommand)"
WorkingDirectory="$(ProjectDirectory)"
EnvironmentVariables="@(EnvironmentVariables)"
IgnoreStandardErrorWarningFormat="true" />
EnvironmentVariables="@(EnvironmentVariables)" />
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Building $(RepositoryName)...done" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)Build.complete" AlwaysCreate="true">
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
</Touch>
<!-- Propagate errors to the output when using the minimal console log feature. -->
<OnError ExecuteTargets="LogRepoBuildError" Condition="'$(MinimalConsoleLogOutput)' == 'true'" />
</Target>
<Target Name="ReportRepoError">
<Target Name="LogRepoBuildError">
<Message Importance="High" Text="$([System.IO.File]::ReadAllText('$(RepoConsoleLogFile)'))" Condition="Exists('$(RepoConsoleLogFile)') and '$(MinimalConsoleLogOutput)' == 'true'" />
<Message Importance="High" Text="'$(RepositoryName)' failed during build." />
<Message Importance="High" Text="See '$(RepoConsoleLogFile)' for more information." Condition="Exists('$(RepoConsoleLogFile)') and '$(MinimalConsoleLogOutput)' == 'true'" />
</Target>
<Target Name="Package" AfterTargets="Build" />
<Target Name="GatherBuiltPackages">
<ItemGroup>
<!-- Filter out packages for WriteVersions -->
<_BuiltPackages Condition="'$(PackagesOutput)' != ''" Include="$(PackagesOutput)/*.nupkg" Exclude="$(PackagesOutput)/*.symbols.nupkg"/>
<_BuiltPackages Condition="'@(PackagesOutputList)' != ''" Include="%(PackagesOutputList.Identity)/*.nupkg" Exclude="%(PackagesOutputList.Identity)/*.symbols.nupkg"/>
</ItemGroup>
</Target>
<!--
Condition should be removed after source-build picks up version of Arcade that has
source-build infra changes for removal od inner-clone in VMR build. Until then some
repos will produce intermediate packages instead of repo manifest file.
https://github.com/dotnet/source-build/issues/3930
-->
<Target Name="CopyRepoArtifacts"
AfterTargets="Package"
Condition="Exists($(RepoManifestFile))"
DependsOnTargets="RepoBuild"
Condition="'$(IsUtilityProject)' != 'true'"
Inputs="$(RepoManifestFile)"
Outputs="$(BaseIntermediateOutputPath)ArtifactsCopy.complete">
Outputs="$(BaseIntermediateOutputPath)CopyRepoArtifacts.complete">
<Error Text="Repo manifest file doesn't exist." Condition="!Exists('$(RepoManifestFile)')" />
<XmlPeek XmlInputPath="$(RepoManifestFile)"
Query="Build/Artifact/@Path">
<Output TaskParameter="Result" ItemName="RepoManifestArtifact" />
</XmlPeek>
<ItemGroup>
<RepoManifestAsset Include="@(RepoManifestArtifact)" Condition="'%(Extension)' != '.nupkg'"/>
<RepoManifestPackage Include="@(RepoManifestArtifact)" Condition="'%(Extension)' == '.nupkg'"/>
<RepoManifestNonShippingPackage Include="@(RepoManifestPackage)" Condition="$([System.String]::Copy('%(Identity)').Contains('$([System.IO.Path]::DirectorySeparatorChar)NonShipping$([System.IO.Path]::DirectorySeparatorChar)'))"/>
<!-- Error if a repository doesn't produce any shipping or non-shipping artifacts. -->
<ItemGroup Condition="'@(RepoManifestArtifact)' == ''">
<_ArtifactsNotCreatedReason Include="^ There may have been a silent failure in the repo build." />
<_ArtifactsNotCreatedReason Include="^ To confirm, check the build log file for undetected errors that may have prevented package creation: $(RepoConsoleLogFile)" Condition="'$(MinimalConsoleLogOutput)' == 'true'" />
<_ArtifactsNotCreatedReason Include="^ The packages may have been written to an unexpected directory. For example, some repos used bin/ and changed to artifacts/ to match Arcade. Check RepoManifestFile in $(MSBuildProjectFullPath) (currently '$(RepoManifestFile)')" />
</ItemGroup>
<PropertyGroup>
<_NupkgsDestination>$(SourceBuiltPackagesPath)</_NupkgsDestination>
<_NupkgsDestination Condition="'$(RepositoryName)' == 'source-build-reference-packages'">$(ReferencePackagesDir)</_NupkgsDestination>
</PropertyGroup>
<Error Text="$(RepositoryName) produced no new source-built package identities. Known possible causes:%0A@(_ArtifactsNotCreatedReason, '%0A')"
Condition="'@(RepoManifestArtifact)' == ''" />
<!-- Building SBRP: At this point the References directory contains the previously-source-built SBRPs,
clear it before copying the current SBRPs. This ensures n-1 SBRPs aren't required to build the product repos. -->
<RemoveDir
Condition="'$(RepositoryName)' == 'source-build-reference-packages'"
Directories="$(ReferencePackagesDir)" />
<!-- The repo symbol archive shouldn't be copied. -->
<ItemGroup>
<RepoSymbolsArchive Include="@(RepoManifestArtifact)"
Condition="$([System.String]::Copy('%(Identity)').EndsWith('Symbols.$(RepositoryName)$(ArchiveExtension)'))" />
<RepoManifestArtifact Remove="@(RepoSymbolsArchive)" />
</ItemGroup>
<!-- Copy nupkgs -->
<Copy
Condition="'@(RepoManifestPackage)' != ''"
SourceFiles="@(RepoManifestPackage)"
DestinationFolder="$(_NupkgsDestination)" />
<!-- Log the new repo artifacts -->
<Message Importance="High" Text="New artifact(s) after building $(RepositoryName):" />
<Message Importance="High" Text=" -> %(RepoManifestArtifact.Filename)%(RepoManifestArtifact.Extension)" />
<ItemGroup>
<RepoManifestPackage Include="@(RepoManifestArtifact->WithMetadataValue('Extension', '.nupkg'))" />
<RepoManifestAsset Include="@(RepoManifestArtifact)" Exclude="@(RepoManifestPackage)" />
</ItemGroup>
<!-- Prepare the repo manifest packages and group them by shipping and non-shipping. -->
<ItemGroup>
<RepoManifestNonShippingPackage Include="@(RepoManifestPackage)"
Condition="$([System.String]::Copy('%(Identity)').Contains('$([System.IO.Path]::DirectorySeparatorChar)NonShipping$([System.IO.Path]::DirectorySeparatorChar)'))">
<DestinationFolder Condition="'$(ReferenceOnlyRepoArtifacts)' != 'true'">$(RepoArtifactsNonShippingPackagesDir)</DestinationFolder>
<DestinationFolder Condition="'$(ReferenceOnlyRepoArtifacts)' == 'true'">$(ReferencePackagesDir)</DestinationFolder>
</RepoManifestNonShippingPackage>
<RepoManifestShippingPackage Include="@(RepoManifestPackage)"
Exclude="@(RepoManifestNonShippingPackage)">
<DestinationFolder Condition="'$(ReferenceOnlyRepoArtifacts)' != 'true'">$(RepoArtifactsShippingPackagesDir)</DestinationFolder>
<DestinationFolder Condition="'$(ReferenceOnlyRepoArtifacts)' == 'true'">$(ReferencePackagesDir)</DestinationFolder>
</RepoManifestShippingPackage>
<RepoManifestAsset>
<DestinationFolder Condition="'$(ReferenceOnlyRepoArtifacts)' != 'true'">$(ArtifactsAssetsDir)</DestinationFolder>
<DestinationFolder Condition="'$(ReferenceOnlyRepoArtifacts)' == 'true'">$(ReferenceAssetsDir)</DestinationFolder>
</RepoManifestAsset>
</ItemGroup>
<!-- Copy shipping packages -->
<Copy SourceFiles="@(RepoManifestShippingPackage)"
DestinationFolder="%(RepoManifestShippingPackage.DestinationFolder)"
Condition="'@(RepoManifestShippingPackage)' != ''" />
<!-- Copy non-shipping packages -->
<Copy SourceFiles="@(RepoManifestNonShippingPackage)"
DestinationFolder="%(RepoManifestNonShippingPackage.DestinationFolder)"
Condition="'@(RepoManifestNonShippingPackage)' != ''" />
<!-- Copy assets -->
<Copy
Condition="'@(RepoManifestAsset)' != ''"
SourceFiles="@(RepoManifestAsset)"
DestinationFolder="$(SourceBuiltAssetsDir)" />
<!-- Generate non-shipping package list -->
<PropertyGroup>
<NonShippingPackagesList Condition="'@(RepoManifestNonShippingPackage)' != ''">$(PackageListsDir)$(NonShippingPackagesListPrefix)$(RepositoryName).lst</NonShippingPackagesList>
</PropertyGroup>
<WriteLinesToFile
Condition="'$(NonShippingPackagesList)' != ''"
File="$(NonShippingPackagesList)"
Lines="@(RepoManifestNonShippingPackage->'%(Filename)%(Extension)')"
Overwrite="true" />
<Copy SourceFiles="@(RepoManifestAsset)"
DestinationFolder="%(RepoManifestAsset.DestinationFolder)"
Condition="'@(RepoManifestAsset)' != ''" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)ArtifactsCopy.complete" AlwaysCreate="true">
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
</Touch>
</Target>
<!--
This target can be removed after source-build picks up version of Arcade that has
source-build infra changes for removal od inner-clone in VMR build. Until then the target
is needed for building source-build-reference-packages and arcade repos.
https://github.com/dotnet/source-build/issues/3930
-->
<Target Name="ExtractIntermediatePackages"
AfterTargets="Package"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)IntermediateExtraction.complete">
<ItemGroup>
<_BuiltIntermediatePackages Condition="'$(PackagesOutput)' != ''" Include="$(PackagesOutput)/Microsoft.SourceBuild.Intermediate.*.nupkg" Exclude="$(PackagesOutput)/*.symbols.nupkg"/>
<_BuiltIntermediatePackages Condition="'@(PackagesOutputList)' != ''" Include="%(PackagesOutputList.Identity)/Microsoft.SourceBuild.Intermediate.*.nupkg" Exclude="%(PackagesOutputList.Identity)/*.symbols.nupkg"/>
</ItemGroup>
<PropertyGroup Condition="'@(_BuiltIntermediatePackages)' != ''">
<_NupkgDestinationPath>$(SourceBuiltPackagesPath)</_NupkgDestinationPath>
<!-- SBRP packages unpack into the Reference packages directory instead of into blob-feed packages -->
<_NupkgDestinationPath Condition="$([System.String]::Copy(%(_BuiltIntermediatePackages.Identity)).Contains('source-build-reference-packages'))">$(ReferencePackagesDir)</_NupkgDestinationPath>
</PropertyGroup>
<Unzip SourceFiles="@(_BuiltIntermediatePackages)"
DestinationFolder="$(SourceBuiltPackagesPath)extractArtifacts/%(_BuiltIntermediatePackages.FileName)/"
SkipUnchangedFiles="true"
Condition="'@(_BuiltIntermediatePackages)' != ''" />
<ItemGroup Condition="'@(_BuiltIntermediatePackages)' != ''">
<SourceBuiltNupkgFiles Include="$(SourceBuiltPackagesPath)extractArtifacts/**/artifacts/*.nupkg" />
</ItemGroup>
<ItemGroup Condition="'@(_BuiltIntermediatePackages)' != ''">
<NonShippingPackageLists Include="$(SourceBuiltPackagesPath)extractArtifacts/**/$(NonShippingPackagesListPrefix)*" />
</ItemGroup>
<!-- Copy lists of NonShipping packages to prebuilt-report dir -->
<Copy SourceFiles="@(NonShippingPackageLists)" DestinationFolder="$(PackageListsDir)" />
<!-- Building SBRP: At this point the References directory contains the previously-source-built SBRPs,
clear it before moving the current SBRPs. This ensures n-1 SBRPs aren't required to build the product repos. -->
<RemoveDir
Condition="'$(_NupkgDestinationPath)' == '$(ReferencePackagesDir)'"
Directories="$(ReferencePackagesDir)" />
<Move
Condition="'@(SourceBuiltNupkgFiles)' != ''"
SourceFiles="@(SourceBuiltNupkgFiles)"
DestinationFiles="@(SourceBuiltNupkgFiles -> '$(_NupkgDestinationPath)%(Filename)%(Extension)')" />
<ItemGroup Condition="'@(_BuiltIntermediatePackages)' != ''">
<SourceBuiltAssetFiles Include="$(SourceBuiltPackagesPath)extractArtifacts/**/artifacts/*.*" />
<SourceBuiltAssetFiles Remove="$(SourceBuiltPackagesPath)extractArtifacts/**/artifacts/*.nupkg" />
</ItemGroup>
<Move
Condition="'@(SourceBuiltAssetFiles)' != ''"
SourceFiles="@(SourceBuiltAssetFiles)"
DestinationFiles="@(SourceBuiltAssetFiles -> '$(SourceBuiltAssetsDir)%(Filename)%(Extension)')" />
<RemoveDir
Condition="Exists('$(SourceBuiltPackagesPath)extractArtifacts/')"
Directories="$(SourceBuiltPackagesPath)extractArtifacts/" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)IntermediateExtraction.complete" AlwaysCreate="true">
<Touch Files="$(BaseIntermediateOutputPath)CopyRepoArtifacts.complete" AlwaysCreate="true">
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
</Touch>
</Target>
@ -448,62 +454,29 @@
<!-- Copy restored packages from inner build to ensure they're included in the
main build prebuilt check -->
<Target Name="CopyInnerBuildRestoredPackages"
AfterTargets="Package">
Condition="'$(IsUtilityProject)' != 'true'">
<ItemGroup>
<_InnerPackageCacheFiles Include="$(ProjectDirectory)artifacts/sb/package-cache/**/*" />
</ItemGroup>
<Copy SourceFiles="@(_InnerPackageCacheFiles)"
DestinationFiles="$(NuGetPackageRoot)%(RecursiveDir)%(Filename)%(Extension)"
SkipUnchangedFiles="true"
Condition="'@(_InnerPackageCacheFiles)' != ''" />
</Target>
<Target Name="CopyPackage"
AfterTargets="Package"
Condition="'$(PackagesOutput)' != '' OR '@(PackagesOutputList)' != ''"
DependsOnTargets="GatherBuiltPackages">
<Copy SourceFiles="@(_BuiltPackages)"
DestinationFolder="$(SourceBuiltPackagesPath)"
Condition="'@(_BuiltPackages)'!=''"
SkipUnchangedFiles="true" />
</Target>
<Target Name="RemoveBuiltPackagesFromCache"
AfterTargets="Package"
Condition="'@(_BuiltPackages)'!=''"
DependsOnTargets="GatherBuiltPackages"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)RemoveBuiltPackagesFromCache.complete">
<ItemGroup>
<!-- Excluding Arcade here will keep it in the cache, because that's where we're running from.
Subsequent projects will get Arcade from eng/source-built-sdks. -->
<PackagePaths Include="@(_BuiltPackages)" Exclude="$(PackagesOutput)/Microsoft.DotNet.Arcade.Sdk.*.nupkg" />
</ItemGroup>
<ReadNuGetPackageInfos PackagePaths="@(PackagePaths)">
<Output TaskParameter="PackageInfoItems" ItemName="_BuiltPackageInfos" />
</ReadNuGetPackageInfos>
<!-- Copy built nupkgs from nuget packages cache directory to the previouslyRestored directory
and then delete all expanded files and the nupkg from the package cache so the next time
the package is used, it will reload the source-built version -->
<ItemGroup>
<_FilesToCopy Include="$(NuGetPackageRoot)$([System.String]::copy('%(_BuiltPackageInfos.PackageId)').ToLowerInvariant())/%(_BuiltPackageInfos.PackageVersion)/**/*.nupkg" />
<_FilesToDelete Include="$(NuGetPackageRoot)$([System.String]::copy('%(_BuiltPackageInfos.PackageId)').ToLowerInvariant())/%(_BuiltPackageInfos.PackageVersion)/**/*.*" />
</ItemGroup>
<Copy SourceFiles="@(_FilesToCopy)" DestinationFolder="$(PreviouslyRestoredPackagesPath)$(RepositoryName)/" />
<Delete Files="@(_FilesToDelete)" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)RemoveBuiltPackagesFromCache.complete" AlwaysCreate="true">
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
</Touch>
</Target>
<Target Name="CleanupRepo"
AfterTargets="RemoveBuiltPackagesFromCache"
Condition="'$(CleanWhileBuilding)' == 'true' and Exists('$(ProjectDirectory)artifacts')">
Condition="'$(IsUtilityProject)' != 'true' and
'$(CleanWhileBuilding)' == 'true' and
Exists('$(ProjectDirectory)artifacts')">
<!--
Some repositories (WinForms) use source generators that open files manually and keep file handles open on the compiler server (CsWin32).
These source generators are written incorrectly (a source generator should never do IO itself),
but the required features to read in binary files as input to a source generator don't exist.
To work around these source generators, shut down the compiler server so we can delete the obj directories.
-->
<Exec Command="$(DotnetTool) build-server shutdown --vbcscompiler" />
<PropertyGroup>
<BuildLogsDir>$([MSBuild]::NormalizeDirectory('$(ProjectDirectory)', 'artifacts', 'buildLogs'))</BuildLogsDir>
<BuildObjDir>$([MSBuild]::NormalizeDirectory('$(ProjectDirectory)', 'artifacts', 'buildObj'))</BuildObjDir>
@ -544,21 +517,25 @@
</Target>
<Target Name="ExtractToolPackage"
DependsOnTargets="GatherBuiltPackages"
AfterTargets="Build"
DependsOnTargets="CopyRepoArtifacts"
Condition="'@(BuiltSdkPackageOverride)' != ''"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)ExtractToolPackage.complete">
<PropertyGroup>
<_ToolPackagesRoot Condition="'$(ReferenceOnlyRepoArtifacts)' != 'true'">$(RepoArtifactsNonShippingPackagesDir)</_ToolPackagesRoot>
<_ToolPackagesRoot Condition="'$(ReferenceOnlyRepoArtifacts)' == 'true'">$(ReferencePackagesDir)</_ToolPackagesRoot>
</PropertyGroup>
<ItemGroup>
<_ToolPackage
Condition="'%(BuiltSdkPackageOverride.Version)' == ''"
Include="$(SourceBuiltPackagesPath)%(BuiltSdkPackageOverride.Identity)*.nupkg"
Exclude="$(SourceBuiltPackagesPath)%(BuiltSdkPackageOverride.Identity)*.symbols.nupkg"
Include="$(_ToolPackagesRoot)%(BuiltSdkPackageOverride.Identity)*.nupkg"
Exclude="$(_ToolPackagesRoot)%(BuiltSdkPackageOverride.Identity)*.symbols.nupkg"
Id="%(BuiltSdkPackageOverride.Identity)" />
<_ToolPackage
Condition="'%(BuiltSdkPackageOverride.Version)' != ''"
Include="$(SourceBuiltPackagesPath)%(BuiltSdkPackageOverride.Identity).%(BuiltSdkPackageOverride.Version).nupkg"
Exclude="$(SourceBuiltPackagesPath)%(BuiltSdkPackageOverride.Identity).%(BuiltSdkPackageOverride.Version).symbols.nupkg"
Include="$(_ToolPackagesRoot)%(BuiltSdkPackageOverride.Identity).%(BuiltSdkPackageOverride.Version).nupkg"
Exclude="$(_ToolPackagesRoot)%(BuiltSdkPackageOverride.Identity).%(BuiltSdkPackageOverride.Version).symbols.nupkg"
Id="%(BuiltSdkPackageOverride.Identity)" />
</ItemGroup>
@ -584,52 +561,31 @@
</Touch>
</Target>
<Target Name="EnsurePackagesCreated"
AfterTargets="CopyPackage"
Condition="'$(SkipEnsurePackagesCreated)' != 'true' and '$(IsUtilityProject)' != 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(BaseIntermediateOutputPath)EnsurePackagesCreated.complete">
<ItemGroup>
<JustSourceBuiltPackages
Include="$(SourceBuiltPackagesPath)*.nupkg"
Exclude="
$(SourceBuiltPackagesPath)*.symbols.nupkg;
@(PreviouslySourceBuiltPackages)" />
</ItemGroup>
<Target Name="ExtractSymbolsArchiveFile"
DependsOnTargets="CopyRepoArtifacts"
Condition="'$(DotNetBuildSourceOnly)' == 'true' and
'$(IsUtilityProject)' != 'true' and
'@(RepoSymbolsArchive)' != ''"
Inputs="@(RepoSymbolsArchive)"
Outputs="$(IntermediateSymbolsRepoDir)">
<ItemGroup>
<_PackagesNotCreatedReason Include="^ There may have been a silent failure in the submodule build. To confirm, check the build log file for undetected errors that may have prevented package creation: $(RepoConsoleLogFile)" />
<_PackagesNotCreatedReason Include="^ This error might be a false positive if $(RepositoryName) intentionally builds no nuget packages. If so, set the SkipEnsurePackagesCreated property to true in $(MSBuildProjectFullPath)" />
<_PackagesNotCreatedReason Include="^ The 'bin' directory might be dirty from a previous build and the package files already existed. If so, perform a clean build, or check which packages were already in 'bin' by opening $(CurrentSourceBuiltPackageVersionPropsPath)" />
<_PackagesNotCreatedReason Include="^ The packages may have been written to an unexpected directory. For example, some repos used bin/ and changed to artifacts/ to match Arcade. Check PackagesOutput in $(MSBuildProjectFullPath) (currently '$(PackagesOutput)')" />
</ItemGroup>
<Error Text="There must only be a single repository symbols archive file. Found: @(RepoSymbolsArchive)"
Condition="@(RepoSymbolsArchive->Count()) &gt; 1" />
<Error Condition="'@(JustSourceBuiltPackages)' == ''"
Text="$(RepositoryName) produced no new source-built package identities. Known possible causes:%0A@(_PackagesNotCreatedReason, '%0A')" />
<ReadNuGetPackageInfos PackagePaths="@(JustSourceBuiltPackages)">
<Output TaskParameter="PackageInfoItems" ItemName="_JustSourceBuiltPackageInfos" />
</ReadNuGetPackageInfos>
<Message Importance="High" Text="New NuGet package(s) after building $(RepositoryName):" />
<Message Importance="High" Text=" -> %(_JustSourceBuiltPackageInfos.PackageId) %(_JustSourceBuiltPackageInfos.PackageVersion)" />
<MakeDir Directories="$(BaseIntermediateOutputPath)" />
<Touch Files="$(BaseIntermediateOutputPath)EnsurePackagesCreated.complete" AlwaysCreate="true">
<Output TaskParameter="TouchedFiles" ItemName="FileWrites" />
</Touch>
<!-- Extract repo symbols tarball -->
<MakeDir Directories="$(IntermediateSymbolsRepoDir)" />
<Exec Command="tar -xzf %(RepoSymbolsArchive.Identity) -C $(IntermediateSymbolsRepoDir)" />
</Target>
<Target Name="SetSourceBuiltSdkOverrides"
BeforeTargets="Build"
Condition="'@(SourceBuiltSdkOverride)' != ''">
<ItemGroup>
<EnvironmentVariables Include="SOURCE_BUILT_SDK_ID_%(SourceBuiltSdkOverride.Group)=%(SourceBuiltSdkOverride.Identity)" />
<EnvironmentVariables Include="SOURCE_BUILT_SDK_VERSION_%(SourceBuiltSdkOverride.Group)=%(SourceBuiltSdkOverride.Version)" />
<EnvironmentVariables Condition="'%(SourceBuiltSdkOverride.Location)' != ''" Include="SOURCE_BUILT_SDK_DIR_%(SourceBuiltSdkOverride.Group)=%(SourceBuiltSdkOverride.Location)/" />
<EnvironmentVariables Condition="'%(SourceBuiltSdkOverride.Location)' == ''" Include="SOURCE_BUILT_SDK_DIR_%(SourceBuiltSdkOverride.Group)=$(SourceBuiltSdksDir)%(SourceBuiltSdkOverride.Identity)/" />
</ItemGroup>
</Target>
<Target Name="Build"
DependsOnTargets="
BuildRepoReferences;
RepoBuild;
CopyRepoArtifacts;
CopyInnerBuildRestoredPackages;
ExtractToolPackage;
ExtractSymbolsArchiveFile;
CleanupRepo" />
<Target Name="WritePrebuiltUsageData"
DependsOnTargets="GetAllProjectDirectories"
@ -637,7 +593,7 @@
Outputs="$(BaseIntermediateOutputPath)WritePrebuiltUsageData.complete">
<!-- Save the PVP snapshot of each build step to be evaluated while building the report. -->
<ItemGroup>
<PackageVersionPropsSnapshotFiles Include="$(SharedIntermediateOutputPath)PackageVersions.*.Snapshot.props" />
<PackageVersionPropsSnapshotFiles Include="$(PackageVersionsDir)PackageVersions.*.Snapshot.props" />
</ItemGroup>
<Copy SourceFiles="@(PackageVersionPropsSnapshotFiles)" DestinationFolder="$(PackageReportDir)snapshots/" />
@ -647,7 +603,7 @@
<!-- Only contains packages when building. -->
<TarballPrebuiltPackageFiles Include="$(PrebuiltPackagesPath)*.nupkg" />
<SourceBuiltPackageFiles Include="$(SourceBuiltBlobFeedDir)**/*.nupkg" />
<SourceBuiltPackageFiles Include="$(ArtifactsPackagesDir)**/*.nupkg" />
<SourceBuiltPackageFiles Include="$(PrebuiltSourceBuiltPackagesPath)*.nupkg" />
<ReferencePackageFiles Include="$(ReferencePackagesDir)**/*.nupkg" />
@ -754,4 +710,76 @@
<Target Name="GetProjectDirectory" Outputs="$(ProjectDirectory)" />
<Target Name="GetRepositoryReferences" Outputs="@(RepositoryReference)" />
<!-- Returns the repository references of this project and all the projects this project references, recursively -->
<Target Name="GetTransitiveRepositoryReferences" Outputs="@(TransitiveRepositoryReference)">
<ItemGroup>
<_TransitiveRepositoryReference Include="@(RepositoryReference)" />
</ItemGroup>
<MSBuild Projects="@(RepositoryReference->'%(Identity).proj')"
Targets="GetTransitiveRepositoryReferences"
BuildInParallel="true">
<Output TaskParameter="TargetOutputs" ItemName="_DependencyTransitiveRepositoryReference" />
</MSBuild>
<!-- When items are transferred between projects, they get metadata indicating their source (e.g. MSBuildSourceProjectFile).
This is problematic because it causes introduces distinctness on the items. For example, an arcade RepositoryReference
that comes from both msbuild and source-build-externals will be treated as two separate items. But we only want one arcade
reference. To prevent this from happening, we need to remove the extra metadata so the two references can be seen as duplicates. -->
<ItemGroup>
<_TransitiveRepositoryReference Include="@(_DependencyTransitiveRepositoryReference)"
RemoveMetadata="MSBuildSourceProjectFile;MSBuildSourceTargetName;OriginalItemSpec" />
<TransitiveRepositoryReference Include="@(_TransitiveRepositoryReference)" KeepDuplicates="false" />
</ItemGroup>
<!-- Exclude repositories that currently don't build when not building source-only. -->
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' != 'true'">
<TransitiveRepositoryReference Remove="roslyn" />
<TransitiveRepositoryReference Remove="msbuild" />
<TransitiveRepositoryReference Remove="aspnetcore" />
<TransitiveRepositoryReference Remove="razor" />
<TransitiveRepositoryReference Remove="nuget-client" />
<TransitiveRepositoryReference Remove="fsharp" />
<TransitiveRepositoryReference Remove="vstest" />
</ItemGroup>
</Target>
<!-- Outputs a dependency graph of the repos, in YAML form, to the console. -->
<Target Name="ShowDependencyGraph">
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="GetDependencyGraphString"
Properties="DependencyGraphIndent=">
<Output TaskParameter="TargetOutputs" PropertyName="DependencyGraphString" />
</MSBuild>
<!-- Replace the '_' placeholder with spaces -->
<Message Importance="High" Text="$(DependencyGraphString.Replace('_', ' ').Trim())" />
</Target>
<!-- Recursively walks the repo dependency graph gathering each repo's dependencies which are returned as a YAML string representation -->
<Target Name="GetDependencyGraphString"
DependsOnTargets="GetTransitiveRepositoryReferences"
Outputs="$(DependencyGraphString)">
<PropertyGroup>
<!-- Each step deeper in the graph builds up the indentation used for the YAML representation.
Use '_' as a placeholder for the space ' ' character since trailing spaces aren't handled well as property values. -->
<_NextIndent>$(DependencyGraphIndent)__</_NextIndent>
</PropertyGroup>
<!-- For each of the current project's direct repo dependencies, recursively call the target to get each of there dependency graphs -->
<MSBuild Projects="@(RepositoryReference->'%(Identity).proj')"
Targets="GetDependencyGraphString"
Properties="DependencyGraphIndent=$(_NextIndent)">
<Output TaskParameter="TargetOutputs" ItemName="_DependencyGraphString" />
</MSBuild>
<!-- Append all the separate dependency graph snippets together -->
<PropertyGroup>
<!-- Ensure the item `;` separators are removed from the the target output -->
<_DependencyGraphString>@(_DependencyGraphString, '')</_DependencyGraphString>
<_LineBreak>%0a</_LineBreak>
<DependencyGraphString>$(DependencyGraphIndent)-_$(RepositoryName)$(_LineBreak)$(_DependencyGraphString)</DependencyGraphString>
</PropertyGroup>
</Target>
</Project>

View file

@ -12,6 +12,7 @@
<ItemGroup>
<BuiltSdkPackageOverride Include="@(ArcadeSdkOverride)" />
<BuiltSdkPackageOverride Include="@(ArcadeSharedFrameworkSdkOverride)" />
<BuiltSdkPackageOverride Include="@(ArcadeCMakeSdkOverride)" />
</ItemGroup>
<ItemGroup>

View file

@ -9,33 +9,29 @@
<!-- On Windows, build all for the VB PoC -->
<BuildActions Condition="'$(DotNetBuildSourceOnly)' != 'true' and '$(BuildOS)' == 'windows'">$(FlagParameterPrefix)restore $(FlagParameterPrefix)all $(FlagParameterPrefix)pack</BuildActions>
<BuildArgs Condition="'$(OverrideTargetArch)' == ''">$(BuildArgs) $(FlagParameterPrefix)arch $(TargetArchitecture)</BuildArgs>
<BuildArgs Condition="'$(OverrideTargetArch)' != ''">$(BuildArgs) $(FlagParameterPrefix)arch $(OverrideTargetArch)</BuildArgs>
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)arch $(TargetArchitecture)</BuildArgs>
<BuildArgs Condition="'$(DotNetBuildSourceOnly)' == 'true' or '$(BuildOS)' != 'windows'">$(BuildArgs) $(FlagParameterPrefix)no-build-repo-tasks</BuildArgs>
<BuildArgs Condition="'$(DotNetBuildSourceOnly)' == 'true' or '$(BuildOS)' != 'windows'">$(BuildArgs) $(FlagParameterPrefix)no-build-nodejs</BuildArgs>
<LogVerbosityOptOut>true</LogVerbosityOptOut>
</PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'osx'">osx-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'freebsd'">freebsd-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'windows'">win-$(TargetArchitecture)</OverrideTargetRid>
<_portableRidOverridden Condition="'$(TargetRid)' != '$(OverrideTargetRid)'">true</_portableRidOverridden>
<_portableRidOverridden Condition="'$(TargetRid)' == '$(OverrideTargetRid)'">false</_portableRidOverridden>
<BuildArgs>$(BuildArgs) /p:PortableBuild=$(_portableRidOverridden)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:TargetRuntimeIdentifier=$(OverrideTargetRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PortableBuild=$(PortableBuild)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:TargetRuntimeIdentifier=$(TargetRid)</BuildArgs>
</PropertyGroup>
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="roslyn" />
<RepositoryReference Include="roslyn-analyzers" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="xdt" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="nuget-client" />
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
<RepositoryReference Include="symreader" />
</ItemGroup>
<ItemGroup>

View file

@ -4,4 +4,8 @@
<RepositoryReference Include="arcade" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -10,4 +10,8 @@
<RepositoryReference Include="arcade" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -2,11 +2,18 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="runtime" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
<ItemGroup>
<EnvironmentVariables Include="LatestCommit=$(GitCommitHash)" />
<!-- https://github.com/dotnet/source-build/issues/4115. -->
<EnvironmentVariables Include="PublishWindowsPdb=false" />
</ItemGroup>
</Project>

View file

@ -4,4 +4,8 @@
<RepositoryReference Include="arcade" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -11,41 +11,7 @@
- If we have a repo that is not in sdk's dependency tree, we can still build it by including it here. -->
<ItemGroup>
<!-- Toolsets -->
<RepositoryReference Include="source-build-reference-packages" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="arcade" />
<!-- Product Repos -->
<RepositoryReference Include="command-line-api" />
<RepositoryReference Include="sourcelink" />
<RepositoryReference Include="diagnostics" />
<RepositoryReference Include="emsdk" />
<RepositoryReference Include="cecil" />
<RepositoryReference Include="symreader" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="roslyn" />
<RepositoryReference Include="windowsdesktop" Condition="'$(TargetOS)' == 'windows'" />
<RepositoryReference Include="xdt" />
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="roslyn-analyzers" />
<RepositoryReference Include="aspnetcore" />
<RepositoryReference Include="razor" />
<RepositoryReference Include="deployment-tools" />
<RepositoryReference Include="format" />
<RepositoryReference Include="nuget-client" />
<RepositoryReference Include="templating" />
<RepositoryReference Include="test-templates" />
<RepositoryReference Include="fsharp" />
<RepositoryReference Include="vstest" />
<RepositoryReference Include="sdk" />
<RepositoryReference Include="aspire" />
<RepositoryReference Include="installer" />
<!-- Package source-build artifacts -->
<RepositoryReference Include="package-source-build" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<!-- Testing. -->
<RepositoryReference Include="scenario-tests" />
</ItemGroup>

View file

@ -1,19 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'osx'">osx-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'freebsd'">freebsd-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'windows'">win-$(TargetArchitecture)</OverrideTargetRid>
<_platformIndex>$(OverrideTargetRid.LastIndexOf('-'))</_platformIndex>
<TargetOS>$(OverrideTargetRid.Substring(0, $(_platformIndex)))</TargetOS>
<TargetArch>$(OverrideTargetRid.Substring($(_platformIndex)))</TargetArch>
<!-- Use the repo root build script -->
<BuildScript>$(ProjectDirectory)build$(ShellExtension)</BuildScript>
<BuildArgs>$(BuildArgs) /p:PackageRid=$(OverrideTargetRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PackageRid=$(TargetRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:AssetManifestOS=$(TargetOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PlatformName=$(TargetArch)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:ForceBuildManifestOnly=true</BuildArgs>
@ -23,4 +14,8 @@
<RepositoryReference Include="arcade" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -2,9 +2,17 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="command-line-api" />
<RepositoryReference Include="roslyn" />
<RepositoryReference Include="runtime" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="roslyn-analyzers" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
<RepositoryReference Include="symreader" />
</ItemGroup>
</Project>

View file

@ -20,8 +20,12 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -1,15 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'osx'">osx-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'freebsd'">freebsd-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'windows'">win-$(TargetArchitecture)</OverrideTargetRid>
<OSNameOverride>$(OverrideTargetRid.Substring(0, $(OverrideTargetRid.IndexOf("-"))))</OSNameOverride>
<!-- Determine target portable rid based on bootstrap SDK's portable rid -->
<_platformIndex>$(NETCoreSdkPortableRuntimeIdentifier.LastIndexOf('-'))</_platformIndex>
<PortableOS>$(NETCoreSdkPortableRuntimeIdentifier.Substring(0, $(_platformIndex)))</PortableOS>
<!-- Need to set to false to calculate RepositoryCommit. -->
<EnableSourceControlManagerQueries>false</EnableSourceControlManagerQueries>
<!-- Use the repo root build script -->
<BuildScript>$(ProjectDirectory)build$(ShellExtension)</BuildScript>
@ -17,42 +10,57 @@
<!-- Restore and Build actions are already passed in by the root script. -->
<BuildActions>$(FlagParameterPrefix)pack $(FlagParameterPrefix)publish</BuildActions>
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)runtime-id $(OverrideTargetRid)</BuildArgs>
<!--
Setting NETCoreAppMaximumVersion to a high version so that the sdk doesn't complain if we're restoring/publishing for a higher version than the sdk.
See https://github.com/dotnet/sdk/issues/1512#issuecomment-377082883
-->
<BuildArgs>$(BuildArgs) /p:NETCoreAppMaximumVersion=99.9</BuildArgs>
<BuildArgs>$(BuildArgs) /p:OSName=$(OSNameOverride)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PortableOSName=$(PortableOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:Rid=$(OverrideTargetRid)</BuildArgs>
<!-- We need to extract the non-portable OS name from the non-portable RID and pass that to installer build script.
This should not happen except when building non-portable. installer generally extracts the OSName from the host OS,
or from the Rid if supplied. -->
<BuildArgs Condition="$(PortableBuild) != 'true'">$(BuildArgs) /p:OSName=$(TargetRid.Substring(0, $(TargetRid.IndexOf("-"))))</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PortableOSName=$(__PortableTargetOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:Rid=$(TargetRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:Architecture=$(TargetArchitecture)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:DOTNET_INSTALL_DIR=$(DotNetRoot)</BuildArgs>
<BuildArgs Condition="'$(TargetOS)' != 'windows'">$(BuildArgs) /p:AspNetCoreInstallerRid=$(OverrideTargetRid)</BuildArgs>
<BuildArgs Condition="'$(TargetOS)' != 'windows'">$(BuildArgs) /p:AspNetCoreInstallerRid=$(TargetRid)</BuildArgs>
<!-- installer always wants to build portable on FreeBSD -->
<BuildArgs Condition="'$(TargetOS)' == 'freebsd' and '$(DotNetBuildSourceOnly)' == 'true'">$(BuildArgs) /p:PortableBuild=true</BuildArgs>
<BuildArgs Condition="'$(TargetOS)' != 'windows'">$(BuildArgs) /p:CoreSetupRid=$(OverrideTargetRid)</BuildArgs>
<!-- Consume the source-built Core-Setup and toolset. This line must be removed to source-build CLI without source-building Core-Setup first. -->
<BuildArgs>$(BuildArgs) /p:PublicBaseURL=file:%2F%2F$(SourceBuiltAssetsDir)</BuildArgs>
<BuildArgs Condition="'$(TargetOS)' != 'windows'">$(BuildArgs) /p:NetRuntimeRid=$(TargetRid)</BuildArgs>
<!-- https://github.com/dotnet/source-build/issues/4138 -->
<BuildArgs Condition="'$(TargetOS)' != 'windows' and '$(TargetOS)' != 'osx'">$(BuildArgs) /p:SkipBuildingInstallers=true</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PublicBaseURL=file:%2F%2F$(ArtifactsAssetsDir)</BuildArgs>
<!-- In non-source-only scenarios, currently consume aspnetcore from the normal public base url -->
<BuildArgs>$(BuildArgs) /p:FallbackPublicBaseURL=https://dotnetbuilds.blob.core.windows.net/public/</BuildArgs>
<BuildArgs>$(BuildArgs) /p:UsePortableLinuxSharedFramework=false</BuildArgs>
<BuildArgs Condition="'$(PgoInstrument)' == 'true'">$(BuildArgs) /p:PgoInstrument=true</BuildArgs>
</PropertyGroup>
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="aspire" />
<RepositoryReference Include="aspnetcore" />
<RepositoryReference Include="command-line-api" />
<RepositoryReference Include="deployment-tools" />
<RepositoryReference Include="emsdk" />
<RepositoryReference Include="fsharp" />
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="nuget-client" />
<RepositoryReference Include="roslyn" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="sdk" />
<RepositoryReference Include="symreader" />
<RepositoryReference Include="test-templates" />
<RepositoryReference Include="vstest" />
<RepositoryReference Include="windowsdesktop" Condition="'$(TargetOS)' == 'windows'" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
<!--
@ -66,15 +74,67 @@
<ItemGroup>
<EnvironmentVariables Include="CLIBUILD_SKIP_TESTS=true" />
<!-- Disable bundled tools until we can figure out:
Unable to find package dotnet-dev-certs.
Unable to find package dotnet-ef.
Unable to find package dotnet-sql-cache.
Unable to find package dotnet-user-secrets.
Unable to find package dotnet-user-jwts.
Unable to find package dotnet-watch. -->
<EnvironmentVariables Include="CLIBUILD_SKIP_BUNDLEDDOTNETTOOLS=true" />
<!-- https://github.com/dotnet/source-build/issues/4115. -->
<EnvironmentVariables Include="PublishWindowsPdb=false" />
</ItemGroup>
<Target Name="GetInputsOutputForCreatePrivateSourceBuiltArtifactsArchive"
DependsOnTargets="DetermineSourceBuiltSdkVersion">
<!-- Inputs: Packages to include in the tarball -->
<ItemGroup>
<ArtifactsPackageToBundle Include="$(ArtifactsShippingPackagesDir)**;
$(ArtifactsNonShippingPackagesDir)**"
Condition="!$([System.String]::Copy('%(Identity)').EndsWith('.symbols.nupkg'))" />
<ReferencePackageToBundle Include="$(ReferencePackagesDir)**"
Condition="!$([System.String]::Copy('%(Identity)').EndsWith('.symbols.nupkg'))" />
</ItemGroup>
<PropertyGroup>
<!-- Create a layout directory for the files that are to be included in the artifacts tarball. -->
<SourceBuiltLayoutDir>$([MSBuild]::NormalizeDirectory('$(BaseIntermediateOutputPath)', 'artifacts-layout'))</SourceBuiltLayoutDir>
<!-- Outputs -->
<SourceBuiltTarballName>$(ArtifactsAssetsDir)$(SourceBuiltArtifactsTarballName).$(SourceBuiltSdkVersion).$(TargetRid)$(ArchiveExtension)</SourceBuiltTarballName>
<SourceBuiltVersionName>$(SourceBuiltLayoutDir).version</SourceBuiltVersionName>
<AllPackageVersionsPropsName>$(SourceBuiltLayoutDir)PackageVersions.props</AllPackageVersionsPropsName>
</PropertyGroup>
</Target>
<!-- Create the SourceBuilt.Private.Artifacts archive when building source-only. -->
<Target Name="CreatePrivateSourceBuiltArtifactsArchive"
AfterTargets="Build"
DependsOnTargets="GetInputsOutputForCreatePrivateSourceBuiltArtifactsArchive"
Inputs="@(ArtifactsPackageToBundle);@(ReferencePackageToBundle)"
Outputs="$(SourceBuiltTarballName);$(SourceBuiltVersionName);$(AllPackageVersionsPropsName)"
Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<!-- Copy packages to layout directory. Since there are a large number of files,
this will use symlinks instead of copying files to make this execute quickly. -->
<Copy SourceFiles="@(ArtifactsPackageToBundle)"
DestinationFolder="$(SourceBuiltLayoutDir)"
UseSymbolicLinksIfPossible="true" />
<Copy SourceFiles="@(ReferencePackageToBundle)"
DestinationFolder="$(SourceBuiltLayoutDir)SourceBuildReferencePackages"
UseSymbolicLinksIfPossible="true" />
<!-- Content of the .version file to include in the tarball -->
<ItemGroup>
<VersionFileContent Include="$(RepositoryCommit);$(SourceBuiltSdkVersion)" />
</ItemGroup>
<WriteLinesToFile File="$(SourceBuiltVersionName)"
Lines="@(VersionFileContent)"
Overwrite="true" />
<!-- Create a PackageVersions.props file that includes entries for all packages. -->
<WritePackageVersionsProps NuGetPackages="@(ArtifactsPackageToBundle)"
ExtraProperties="@(ExtraPackageVersionPropsPackageInfo)"
VersionPropsFlowType="AllPackages"
OutputPath="$(AllPackageVersionsPropsName)" />
<Exec Command="tar --numeric-owner -czhf $(SourceBuiltTarballName) $([System.IO.Path]::GetFileName('$(SourceBuiltVersionName)')) *"
WorkingDirectory="$(SourceBuiltLayoutDir)" />
<Message Importance="High" Text="Packaged source-built artifacts to $(SourceBuiltTarballName)" />
</Target>
</Project>

View file

@ -5,15 +5,16 @@
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)v $(LogVerbosity)</BuildArgs>
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)warnAsError $(ArcadeFalseBoolBuildArg)</BuildArgs>
<!-- msbuild by default builds with desktop msbuild (xcopy-msbuild) -->
<BuildArgs Condition="'$(BuildOS)' == 'windows'">$(BuildArgs) $(FlagParameterPrefix)msbuildEngine dotnet</BuildArgs>
</PropertyGroup>
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="runtime" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="roslyn" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -8,9 +8,9 @@
<BuildScript>$([MSBuild]::NormalizePath('$(ProjectDirectory)', 'eng', 'source-build', 'build$(ShellExtension)'))</BuildScript>
</PropertyGroup>
<ItemGroup>
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="xdt" />
</ItemGroup>

View file

@ -1,56 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- This is a wrapper project that doesn't build anything. -->
<IsUtilityProject>true</IsUtilityProject>
<!-- Need to set to false to calculate RepositoryCommit. -->
<EnableSourceControlManagerQueries>false</EnableSourceControlManagerQueries>
</PropertyGroup>
<ItemGroup>
<RepositoryReference Include="installer" />
</ItemGroup>
<Target Name="CustomRepoBuild"
AfterTargets="RepoBuild"
DependsOnTargets="DetermineSourceBuiltSdkVersion">
<!-- Copy PVP to packages dir in order to package them together -->
<Copy SourceFiles="$(CurrentSourceBuiltPackageVersionPropsPath)" DestinationFiles="$(SourceBuiltPackagesPath)PackageVersions.props" />
<PropertyGroup>
<SourceBuildReferencePackagesDestination>$(SourceBuiltPackagesPath)SourceBuildReferencePackages/</SourceBuildReferencePackagesDestination>
</PropertyGroup>
<ItemGroup>
<SourceBuildReferencePackagesNupkgFiles Include="$(ReferencePackagesDir)**/*.nupkg" />
</ItemGroup>
<!-- Copy reference packages from ReferencePackagesDir to blob-feed reference packages path. -->
<Copy
Condition="'@(SourceBuildReferencePackagesNupkgFiles)' != ''"
SourceFiles="@(SourceBuildReferencePackagesNupkgFiles)"
DestinationFiles="@(SourceBuildReferencePackagesNupkgFiles -> '$(SourceBuildReferencePackagesDestination)%(Filename)%(Extension)')" />
<PropertyGroup>
<SourceBuiltTarballName>$(SharedOutputPath)$(SourceBuiltArtifactsTarballName).$(SourceBuiltSdkVersion).$(TargetRid)$(ArchiveExtension)</SourceBuiltTarballName>
<SourceBuiltVersionFileName>.version</SourceBuiltVersionFileName>
</PropertyGroup>
<!-- Content of the .version file to include in the tarball -->
<ItemGroup>
<VersionFileContent Include="$(RepositoryCommit);$(SourceBuiltSdkVersion)" />
</ItemGroup>
<WriteLinesToFile
File="$(SourceBuiltPackagesPath)$(SourceBuiltVersionFileName)"
Lines="@(VersionFileContent)"
Overwrite="true" />
<MakeDir Directories="$(SharedOutputPath)" />
<Exec Command="tar --numeric-owner --exclude='Microsoft.SourceBuild.Intermediate.*.nupkg' -czf $(SourceBuiltTarballName) $(SourceBuiltVersionFileName) *.nupkg *.props SourceBuildReferencePackages/"
WorkingDirectory="$(SourceBuiltPackagesPath)" />
<Message Importance="High" Text="Packaged source-built artifacts to $(SourceBuiltTarballName)" />
</Target>
</Project>

View file

@ -2,8 +2,11 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="runtime" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="aspnetcore" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -8,8 +8,12 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="runtime" />
<RepositoryReference Include="roslyn" />
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -12,7 +12,6 @@
<BuildScript>$(ProjectDirectory)build$(ShellExtension)</BuildScript>
<!-- roslyn by default builds with desktop msbuild (xcopy-msbuild) -->
<BuildArgs Condition="'$(BuildOS)' == 'windows'">$(BuildArgs) $(FlagParameterPrefix)msbuildEngine dotnet</BuildArgs>
<BuildArgs Condition="'$(BuildOS)' == 'windows'">$(BuildArgs) $(FlagParameterPrefix)officialBuildId $(OfficialBuildId)</BuildArgs>
<BuildArgs Condition="'$(BuildOS)' == 'windows'">$(BuildArgs) $(FlagParameterPrefix)officialSkipTests true</BuildArgs>
<BuildArgs Condition="'$(BuildOS)' == 'windows'">$(BuildArgs) $(FlagParameterPrefix)officialSkipApplyOptimizationData true</BuildArgs>
@ -29,9 +28,12 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="command-line-api" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="runtime" />
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
<ItemGroup>

View file

@ -3,11 +3,6 @@
<PropertyGroup>
<LogVerbosityOptOut>true</LogVerbosityOptOut>
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'osx'">osx-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'freebsd'">freebsd-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'windows'">win-$(TargetArchitecture)</OverrideTargetRid>
<_platformIndex>$(NETCoreSdkRuntimeIdentifier.LastIndexOf('-'))</_platformIndex>
<RuntimeOS>$(NETCoreSdkRuntimeIdentifier.Substring(0, $(_platformIndex)))</RuntimeOS>
@ -17,15 +12,18 @@
<!-- Use the repo root build script -->
<BuildScript>$(ProjectDirectory)build$(ShellExtension)</BuildScript>
<BuildArgs Condition="'$(OverrideTargetArch)' != ''">$(BuildArgs) $(FlagParameterPrefix)arch $(OverrideTargetArch)</BuildArgs>
<BuildArgs Condition="'$(OverrideTargetOS)' != ''">$(BuildArgs) $(FlagParameterPrefix)os $(OverrideTargetOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:TargetRid=$(OverrideTargetRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:RuntimeOS=$(RuntimeOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:BaseOS=$(BaseOS)</BuildArgs>
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)arch $(TargetArchitecture)</BuildArgs>
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)os $(TargetOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:TargetRid=$(TargetRid)</BuildArgs>
<BuildArgs Condition="'$(ShortStack)' != 'true'">$(BuildArgs) /p:RuntimeOS=$(RuntimeOS)</BuildArgs>
<BuildArgs Condition="'$(ShortStack)' != 'true'">$(BuildArgs) /p:BaseOS=$(BaseOS)</BuildArgs>
<BuildArgs Condition="'$(DotNetBuildRuntimeWasmEnableThreads)' == 'true'">$(BuildArgs) /p:DotNetBuildRuntimeWasmEnableThreads=true</BuildArgs>
<BuildArgs Condition="'$(DotNetBuildRuntimeNativeAOTRuntimePack)' == 'true'">$(BuildArgs) /p:DotNetBuildRuntimeNativeAOTRuntimePack=true</BuildArgs>
<BuildArgs Condition="'$(PgoInstrument)' == 'true'">$(BuildArgs) $(FlagParameterPrefix)pgoinstrument</BuildArgs>
<BuildArgs Condition="'$(SourceBuildUseMonoRuntime)' != ''">$(BuildArgs) /p:SourceBuildUseMonoRuntime=$(SourceBuildUseMonoRuntime)</BuildArgs>
</PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<PortableBuild Condition="'$(PortableBuild)' == ''">false</PortableBuild>
<BuildNonPortable>true</BuildNonPortable>
<BuildNonPortable Condition="'$(PortableBuild)' == 'true'">false</BuildNonPortable>
@ -37,27 +35,20 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="cecil" />
<RepositoryReference Include="symreader" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="command-line-api" />
<RepositoryReference Include="emsdk" />
</ItemGroup>
<ItemGroup>
<SourceBuiltSdkOverride Include="@(ArcadeSharedFrameworkSdkOverride)" />
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftCodeAnalysisVersion_4_X" Version="%24(MicrosoftCodeAnalysisVersion)" />
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftCodeAnalysisVersion_4_4" Version="%24(MicrosoftCodeAnalysisVersion)" />
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftCodeAnalysisVersion_4_8" Version="%24(MicrosoftCodeAnalysisVersion)" />
<ExtraPackageVersionPropsPackageInfo Include="MicrosoftCodeAnalysisVersion_LatestVS" Version="%24(MicrosoftCodeAnalysisVersion)" />
</ItemGroup>
<Target Name="SetOutputList"
AfterTargets="Package"
BeforeTargets="GatherBuiltPackages">
<ItemGroup>
<PackagesOutputList Include="$(ShippingPackagesOutput)" />
<PackagesOutputList Include="$(NonShippingPackagesOutput)" />
</ItemGroup>
</Target>
</Project>

View file

@ -1,9 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="source-build-reference-packages" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="arcade" />
<RepositoryReference Include="command-line-api" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -3,21 +3,9 @@
<PropertyGroup>
<LogVerbosityOptOut>true</LogVerbosityOptOut>
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'osx'">osx-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'freebsd'">freebsd-$(TargetArchitecture)</OverrideTargetRid>
<OverrideTargetRid Condition="'$(TargetOS)' == 'windows'">win-$(TargetArchitecture)</OverrideTargetRid>
<!-- Propagate RID set in source-build to sdk repo -->
<_platformIndex>$(NETCoreSdkPortableRuntimeIdentifier.LastIndexOf('-'))</_platformIndex>
<_baseOS>$(NETCoreSdkPortableRuntimeIdentifier.Substring(0, $(_platformIndex)))</_baseOS>
<_baseOS Condition="'$(OverrideTargetOS)' != ''">$(OverrideTargetOS)</_baseOS>
<_targetPortableArch>$(TargetArchitecture)</_targetPortableArch>
<_targetPortableArch Condition="'$(OverrideTargetArch)' != ''">$(OverrideTargetArch)</_targetPortableArch>
<BuildArgs>$(BuildArgs) /p:PackageProjectUrl=https://github.com/dotnet/sdk</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PortableRid=$(_baseOS)-$(_targetPortableArch)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:TargetRid=$(OverrideTargetRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:PortableRid=$(PortableRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:TargetRid=$(TargetRid)</BuildArgs>
<!-- Just like mono, arm does not support NativeAot -->
<BuildArgs Condition="'$(BuildArchitecture)' == 'arm'">$(BuildArgs) /p:NativeAotSupported=false</BuildArgs>
@ -26,17 +14,28 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="nuget-client" />
<RepositoryReference Include="roslyn-analyzers" />
<RepositoryReference Include="vstest" />
<RepositoryReference Include="fsharp" />
<RepositoryReference Include="format" />
<RepositoryReference Include="aspnetcore" />
<RepositoryReference Include="command-line-api" />
<RepositoryReference Include="deployment-tools" />
<RepositoryReference Include="emsdk" />
<RepositoryReference Include="format" />
<RepositoryReference Include="fsharp" />
<RepositoryReference Include="msbuild" />
<RepositoryReference Include="nuget-client" />
<RepositoryReference Include="razor" />
<RepositoryReference Include="windowsdesktop" Condition="'$(TargetOS)' == 'windows'" />
<RepositoryReference Include="roslyn" />
<RepositoryReference Include="roslyn-analyzers" />
<RepositoryReference Include="runtime" />
<RepositoryReference Include="sourcelink" />
<RepositoryReference Include="symreader" />
<RepositoryReference Include="templating" />
<RepositoryReference Include="vstest" />
<RepositoryReference Include="xdt" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -10,4 +10,9 @@
<UseInnerClone>true</UseInnerClone>
</PropertyGroup>
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -1,14 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!--
All packages built in SBRP repo are copied to prereqs/package/reference.
Nothing gets copied to blob-feed packages cache.
This would cause an issue with validation in EnsurePackagesCreated target.
We need to skip it for SBRP repo.
-->
<SkipEnsurePackagesCreated>true</SkipEnsurePackagesCreated>
<!-- All packages built in SBRP repo are copied to prereqs/package/reference.
Nothing gets copied to the artifacts/packages folder. -->
<ReferenceOnlyRepoArtifacts>true</ReferenceOnlyRepoArtifacts>
<!-- SBRP builds before Arcade so it also needs the bootstrap Arcade version -->
<UseBootstrapArcade>true</UseBootstrapArcade>
@ -19,8 +14,14 @@
<BuildArgs>$(BuildArgs) /p:LocalNuGetPackageCacheDirectory=$(LocalNuGetPackageCacheDirectory)</BuildArgs>
</PropertyGroup>
<ItemGroup>
<BuiltSdkPackageOverride Include="@(NoTargetsSdkOverride)" />
<BuiltSdkPackageOverride Include="@(TraversalSdkOverride)" />
</ItemGroup>
<Target Name="AddLocalNuGetPackageCacheDirectory"
BeforeTargets="Build">
AfterTargets="CopyNuGetConfig"
BeforeTargets="UpdateNuGetConfig">
<MakeDir Condition="'$(LocalNuGetPackageCacheDirectory)' != ''"
Directories="$(LocalNuGetPackageCacheDirectory)" />
@ -30,4 +31,12 @@
SourcePath="$(LocalNuGetPackageCacheDirectory)" />
</Target>
<Target Name="ClearPreviousSBRP"
BeforeTargets="CopyRepoArtifacts"
DependsOnTargets="RepoBuild">
<!-- Building SBRP: At this point the References directory contains the previously-source-built SBRPs,
clear it before copying the current SBRPs. This ensures n-1 SBRPs aren't required to build the product repos. -->
<RemoveDir Directories="$(ReferencePackagesDir)" />
</Target>
</Project>

View file

@ -12,4 +12,8 @@
<RepositoryReference Include="command-line-api" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -4,4 +4,8 @@
<RepositoryReference Include="arcade" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -9,8 +9,12 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="nuget-client" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="runtime" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -6,7 +6,10 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="templating" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -9,8 +9,12 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<RepositoryReference Include="diagnostics" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
<RepositoryReference Include="runtime" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="source-build-externals" />
<RepositoryReference Include="source-build-reference-packages" />
</ItemGroup>
</Project>

View file

@ -9,12 +9,7 @@
<ItemGroup>
<RepositoryReference Include="arcade" />
<!-- https://github.com/dotnet/source-build/issues/3798 -->
<RepositoryReference Include="wpf" />
</ItemGroup>
<ItemGroup>
<SourceBuiltSdkOverride Include="@(ArcadeSharedFrameworkSdkOverride)" />
</ItemGroup>
</Project>

View file

@ -2,6 +2,7 @@
<PropertyGroup>
<LogVerbosityOptOut>true</LogVerbosityOptOut>
<BuildWithDesktopMSBuild>true</BuildWithDesktopMSBuild>
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)v $(LogVerbosity)</BuildArgs>
<BuildArgs>$(BuildArgs) $(FlagParameterPrefix)warnAsError $(ArcadeFalseBoolBuildArg)</BuildArgs>

View file

@ -59,6 +59,7 @@ public class LicenseScanTests : TestBase
"bzip2-libbzip-2010", // https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bzip2-libbzip-2010.LICENSE
"cc0-1.0", // https://creativecommons.org/publicdomain/zero/1.0/legalcode
"cc-by-3.0", // https://creativecommons.org/licenses/by/3.0/legalcode
"cc-by-4.0", // https://creativecommons.org/licenses/by/4.0/legalcode
"cc-by-sa-3.0", // https://creativecommons.org/licenses/by-sa/3.0/legalcode
"cc-by-sa-4.0", // https://creativecommons.org/licenses/by-sa/4.0/legalcode
"cc-pd", // https://creativecommons.org/publicdomain/mark/1.0/
@ -143,13 +144,16 @@ public class LicenseScanTests : TestBase
{
Assert.NotNull(Config.LicenseScanPath);
// Indicates how long until a timeout occurs for scanning a given file
const int FileScanTimeoutSeconds = 240;
string scancodeResultsPath = Path.Combine(LogsDirectory, "scancode-results.json");
// Scancode Doc: https://scancode-toolkit.readthedocs.io/en/latest/index.html
string ignoreOptions = string.Join(" ", s_ignoredFilePatterns.Select(pattern => $"--ignore {pattern}"));
ExecuteHelper.ExecuteProcessValidateExitCode(
"scancode",
$"--license --strip-root --only-findings {ignoreOptions} --json-pp {scancodeResultsPath} {Config.LicenseScanPath}",
$"--license --processes 4 --timeout {FileScanTimeoutSeconds} --strip-root --only-findings {ignoreOptions} --json-pp {scancodeResultsPath} {Config.LicenseScanPath}",
OutputHelper);
JsonDocument doc = JsonDocument.Parse(File.ReadAllText(scancodeResultsPath));

View file

@ -230,6 +230,7 @@ src/source-build-externals/src/spectre-console/README.md|unknown-license-referen
#
# False positive
src/source-build-reference-packages/src/targetPacks/ILsrc/microsoft.aspnetcore.app.ref/8.0.0/THIRD-PARTY-NOTICES.TXT|unknown
src/source-build-reference-packages/src/targetPacks/ILsrc/microsoft.netcore.app.ref/3.*/THIRD-PARTY-NOTICES.TXT|codesourcery-2004
src/source-build-reference-packages/src/targetPacks/ILsrc/netstandard.library/1.6.1/ThirdPartyNotices.txt|unknown
src/source-build-reference-packages/src/targetPacks/ILsrc/netstandard.library/2.0.*/THIRD-PARTY-NOTICES.TXT|unknown

View file

@ -52,8 +52,11 @@
./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.Build.Locator.dll
./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.CodeAnalysis.*
./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.DiaSymReader.dll
./sdk/x.y.z/DotnetTools/dotnet-format/System.CodeDom.dll
./sdk/x.y.z/DotnetTools/dotnet-format/System.Composition.*
./sdk/x.y.z/DotnetTools/dotnet-format/System.IO.Pipelines.dll
./sdk/x.y.z/DotnetTools/dotnet-format/System.Resources.Extensions.dll
./sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Cryptography.Xml.dll
./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Humanizer.dll
./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.Build.Locator.dll
./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.CodeAnalysis.AnalyzerUtilities.dll

View file

@ -61,60 +61,12 @@ msft,./sdk/x.y.z/Extensions/dump/*
# https://github.com/dotnet/msbuild/issues/9213
msft,./sdk/x.y.z/**/System.Windows.Extensions.dll
msft,./sdk/x.y.z/**/System.Security.Permissions.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Diagnostics.EventLog.dll
# netfx runtimes for dotnet-watch - https://github.com/dotnet/source-build/issues/3285
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.CodeAnalysis.Elfie.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.Win32.SystemEvents.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/*
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Configuration.ConfigurationManager.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Drawing.Common.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Security.Cryptography.ProtectedData.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Security.Permissions.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Windows.Extensions.dll
# netfx runtimes for dotnet-watch - https://github.com/dotnet/source-build/issues/3999
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/BuildHost-net472/*
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/BuildHost-netcore/System.Threading.Channels.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/*
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Configuration.ConfigurationManager.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Diagnostics.EventLog.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.IO.Pipelines.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Security.Cryptography.ProtectedData.dll
# netfx runtimes for dotnet-watch - https://github.com/dotnet/source-build/issues/4035
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/BuildHost-netcore/runtimes/*
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/BuildHost-netcore/System.Text.Encodings.Web.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/BuildHost-netcore/System.Text.Json.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.Extensions.DependencyInjection.Abstractions.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.Extensions.Logging.Abstractions.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Security.Cryptography.Pkcs.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Security.Cryptography.Xml.dll
# netfx runtimes for dotnet-format - https://github.com/dotnet/source-build/issues/3509
msft,./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.CodeAnalysis.Elfie.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/*
# netfx runtimes for dotnet-format - https://github.com/dotnet/source-build/issues/3998
msft,./sdk/x.y.z/DotnetTools/dotnet-format/BuildHost-net472/*
msft,./sdk/x.y.z/DotnetTools/dotnet-format/BuildHost-netcore/System.Threading.Channels.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.Build.Tasks.Core.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.Build.Utilities.Core.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.NET.StringTools.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Permissions.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-format/System.Windows.Extensions.dll
# netfx runtimes for dotnet-format - https://github.com/dotnet/source-build/issues/4034
sb,./sdk/x.y.z/DotnetTools/dotnet-format/BuildHost-netcore/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.deps.json
sb,./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/*
sb,./sdk/x.y.z/DotnetTools/dotnet-format/System.Collections.Immutable.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-format/System.Reflection.Metadata.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-format/System.Text.Encodings.Web.dll
sb,./sdk/x.y.z/DotnetTools/dotnet-format/System.Text.Json.dll
# version coherency issue in dotnet-format - https://github.com/dotnet/source-build/issues/4016#issuecomment-1908996093
msft,./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.CodeAnalysis.ExternalAccess.RazorCompiler.dll
# Exclude format and watch tools due to too much noise
msft,./sdk/x.y.z/DotnetTools/dotnet-format/**
sb,./sdk/x.y.z/DotnetTools/dotnet-format/**
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/**
sb,./sdk/x.y.z/DotnetTools/dotnet-watch/**
# netfx runtimes for fsharp - https://github.com/dotnet/source-build/issues/3290
msft,./sdk/x.y.z/FSharp/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
@ -129,3 +81,11 @@ msft,./sdk/x.y.z/runtimes/win/lib/netx.y/System.Drawing.Common.dll
# runtime components in roslyn layout - https://github.com/dotnet/source-build/issues/4016
sb,./sdk/x.y.z/Roslyn/bincore/System.Collections.Immutable.dll
sb,./sdk/x.y.z/Roslyn/bincore/System.Reflection.Metadata.dll
# https://github.com/dotnet/source-build/issues/4079
sb,./sdk/x.y.z/*/Microsoft.TestPlatform.Extensions.BlameDataCollector.resources.dll
sb,./sdk/x.y.z/*/Microsoft.TestPlatform.Extensions.EventLogCollector.resources.dll
sb,./sdk/x.y.z/*/Microsoft.TestPlatform.TestHostRuntimeProvider.resources.dll
sb,./sdk/x.y.z/*/Microsoft.VisualStudio.TestPlatform.Extensions.Html.TestLogger.resources.dll
sb,./sdk/x.y.z/*/Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.resources.dll
msft,./sdk/x.y.z/Extensions/*/*

View file

@ -1,68 +1 @@
<PrebuiltLeakReport>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.Win32.SystemEvents.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.CodeDom.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Configuration.ConfigurationManager.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Drawing.Common.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Reflection.MetadataLoadContext.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Resources.Extensions.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Cryptography.Pkcs.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Cryptography.ProtectedData.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Cryptography.Xml.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Permissions.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/dotnet-sdk-x.y.z/sdk/x.y.z/DotnetTools/dotnet-format/System.Windows.Extensions.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/Microsoft.Win32.SystemEvents.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.CodeDom.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Configuration.ConfigurationManager.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Drawing.Common.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Reflection.MetadataLoadContext.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Resources.Extensions.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Security.Cryptography.Pkcs.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Security.Cryptography.ProtectedData.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Security.Cryptography.Xml.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Security.Permissions.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
<File Path="artifacts/x64/Release/Private.SourceBuilt.Artifacts.x.y.z/dotnet-format.x.y.z/tools/netx.y/any/System.Windows.Extensions.dll">
<Type>SourceBuildReferenceAssembly</Type>
</File>
</PrebuiltLeakReport>
<PrebuiltLeakReport />

View file

@ -0,0 +1,22 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Matt Thalman <mthalman@microsoft.com>
Date: Thu, 22 Feb 2024 14:05:54 -0600
Subject: [PATCH] Ignore standard error warning format in SB inner command
Backport: https://github.com/dotnet/arcade/pull/14496
---
.../tools/SourceBuild/SourceBuildArcadeBuild.targets | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets
index 6ef44082..72b9c688 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets
@@ -214,6 +214,7 @@
<Exec
Command="$(BaseInnerSourceBuildCommand) $(InnerBuildArgs)"
WorkingDirectory="$(InnerSourceBuildRepoRoot)"
+ IgnoreStandardErrorWarningFormat="true"
EnvironmentVariables="@(InnerBuildEnv)" />
</Target>

View file

@ -1,37 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Matt Thalman <mthalman@microsoft.com>
Date: Fri, 19 Jan 2024 08:55:05 -0600
Subject: [PATCH] Remove RazorCompiler dependency
Backport: https://github.com/dotnet/format/issues/2075
---
Directory.Packages.props | 1 -
src/dotnet-format.csproj | 3 ---
2 files changed, 4 deletions(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 8da27dea..1b7df1ce 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -37,7 +37,6 @@
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic" Version="$(MicrosoftCodeAnalysisVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="$(MicrosoftCodeAnalysisVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis" Version="$(MicrosoftCodeAnalysisVersion)" />
- <PackageVersion Include="Microsoft.CodeAnalysis.ExternalAccess.RazorCompiler" Version="$(MicrosoftCodeAnalysisVersion)" />
<!-- runtime -->
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="$(MicrosoftExtensionsFileSystemGlobbingVersion)" />
diff --git a/src/dotnet-format.csproj b/src/dotnet-format.csproj
index a07a552b..14323f64 100644
--- a/src/dotnet-format.csproj
+++ b/src/dotnet-format.csproj
@@ -35,9 +35,6 @@
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" />
- <!-- Included with Microsoft.CodeAnalysis.dll for Razor support -->
- <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.RazorCompiler" ExcludeAssets="compile" />
-
<!-- Loaded dynamically -->
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Features" />
<PackageReference Include="Microsoft.CodeAnalysis.Features" />

View file

@ -43,7 +43,7 @@ Backport: https://github.com/dotnet/source-build/issues/3663
35 files changed, 82 insertions(+), 73 deletions(-)
diff --git a/Directory.Build.props b/Directory.Build.props
index 10c539090..824602dcb 100644
index 4682f1d8c..1da4c0161 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -34,8 +34,8 @@
@ -54,9 +54,9 @@ index 10c539090..824602dcb 100644
- <FsYaccPath>$(ArtifactsDir)/bin/fsyacc/$(Configuration)/net8.0/fsyacc.dll</FsYaccPath>
+ <FsLexPath>$(ArtifactsDir)/bin/fslex/$(Configuration)/net9.0/fslex.dll</FsLexPath>
+ <FsYaccPath>$(ArtifactsDir)/bin/fsyacc/$(Configuration)/net9.0/fsyacc.dll</FsYaccPath>
<DefineConstants>NO_CHECKNULLS;BUILDING_WITH_LKG;NO_NULLCHECKING_LIB_SUPPORT;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)/eng/Versions.props" Condition="'$(DISABLE_ARCADE)' == 'true'"/>
diff --git a/buildtools/AssemblyCheck/AssemblyCheck.fsproj b/buildtools/AssemblyCheck/AssemblyCheck.fsproj
index 46ffb722c..9d391689d 100644
--- a/buildtools/AssemblyCheck/AssemblyCheck.fsproj
@ -110,10 +110,10 @@ index fc072b7cf..4110186e5 100644
<UseAppHost Condition="'$(DotNetBuildFromSource)' == 'true'">false</UseAppHost>
<RollForward Condition="'$(BUILDING_USING_DOTNET)' == 'true'">LatestMajor</RollForward>
diff --git a/eng/build.sh b/eng/build.sh
index 3b992d6bf..3a4444081 100755
index b8915397d..4e020e84c 100755
--- a/eng/build.sh
+++ b/eng/build.sh
@@ -264,8 +264,8 @@ function BuildSolution {
@@ -269,8 +269,8 @@ function BuildSolution {
MSBuild "$repo_root/buildtools/buildtools.proj" /restore "$bltools" /p:Configuration=$bootstrap_config
mkdir -p "$bootstrap_dir"
@ -124,7 +124,7 @@ index 3b992d6bf..3a4444081 100755
fi
if [ ! -f "$bootstrap_dir/fsc.exe" ]; then
local bltools=""
@@ -274,7 +274,7 @@ function BuildSolution {
@@ -279,7 +279,7 @@ function BuildSolution {
fi
BuildMessage="Error building bootstrap"
MSBuild "$repo_root/Proto.sln" /restore "$bltools" /p:Configuration=$bootstrap_config
@ -389,7 +389,7 @@ index e3c796d0b..e4926cd6c 100644
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
<UnitTestType>xunit</UnitTestType>
diff --git a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj
index a9dd53828..a33c287be 100644
index ec4fc441f..5d2b5a0ce 100644
--- a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj
+++ b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj
@@ -3,8 +3,8 @@
@ -469,7 +469,7 @@ index 4b6c5c534..1b20371c4 100644
<AssemblyName>FSharp.Core.UnitTests</AssemblyName>
diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index 5cfcba98c..c67b8f85d 100644
index 8c1816177..81762e504 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -1,8 +1,8 @@
@ -522,7 +522,7 @@ index 9706167ff..e02746a8e 100644
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
<!-- Turn off "This function is for use by compiled F# code and should not be used directly" -->
diff --git a/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.Runner/HistoricalBenchmark.Runner.fsproj b/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.Runner/HistoricalBenchmark.Runner.fsproj
index 13add7032..4bbae272f 100644
index fe6d95f90..9f81af284 100644
--- a/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.Runner/HistoricalBenchmark.Runner.fsproj
+++ b/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.Runner/HistoricalBenchmark.Runner.fsproj
@@ -1,7 +1,7 @@
@ -533,9 +533,9 @@ index 13add7032..4bbae272f 100644
+ <TargetFramework>net9.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<RootNamespace>HistoricalBenchmark.Utilities</RootNamespace>
</PropertyGroup>
<NoWarn>$(NoWarn);NETSDK1206</NoWarn>
diff --git a/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.fsproj b/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.fsproj
index 2534ba292..feef2eaf7 100644
index 09ca5cb69..575bb32a3 100644
--- a/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.fsproj
+++ b/tests/benchmarks/FCSBenchmarks/BenchmarkComparison/HistoricalBenchmark.fsproj
@@ -2,7 +2,7 @@
@ -548,7 +548,7 @@ index 2534ba292..feef2eaf7 100644
<Configurations>Release</Configurations>
</PropertyGroup>
diff --git a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj
index 55968eddd..e62ac8b85 100644
index 043de02d3..d10a33cb6 100644
--- a/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj
+++ b/tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/FSharp.Compiler.Benchmarks.fsproj
@@ -2,7 +2,7 @@
@ -561,7 +561,7 @@ index 55968eddd..e62ac8b85 100644
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
</PropertyGroup>
diff --git a/tests/benchmarks/FCSBenchmarks/FCSSourceFiles/FCSSourceFiles.fsproj b/tests/benchmarks/FCSBenchmarks/FCSSourceFiles/FCSSourceFiles.fsproj
index 3774aa870..03c11414e 100644
index 92255adb4..e2f32b3ee 100644
--- a/tests/benchmarks/FCSBenchmarks/FCSSourceFiles/FCSSourceFiles.fsproj
+++ b/tests/benchmarks/FCSBenchmarks/FCSSourceFiles/FCSSourceFiles.fsproj
@@ -2,7 +2,7 @@

View file

@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Matt Thalman <mthalman@microsoft.com>
Date: Thu, 18 Jan 2024 10:43:54 -0600
Date: Fri, 23 Feb 2024 09:48:43 -0600
Subject: [PATCH] Set NetRoslyn value for VMR build
Backport: https://github.com/dotnet/roslyn/pull/71704
@ -9,14 +9,14 @@ Backport: https://github.com/dotnet/roslyn/pull/71704
1 file changed, 1 insertion(+)
diff --git a/eng/targets/TargetFrameworks.props b/eng/targets/TargetFrameworks.props
index d36aba87611..6061394d5e9 100644
index a7643fcbcfd..054428128b3 100644
--- a/eng/targets/TargetFrameworks.props
+++ b/eng/targets/TargetFrameworks.props
@@ -49,6 +49,7 @@
@@ -51,6 +51,7 @@
<NetRoslynToolset>$(NetCurrent)</NetRoslynToolset>
<NetRoslynSourceBuild>$(NetCurrent);$(NetPrevious)</NetRoslynSourceBuild>
<NetRoslynAll>$(NetCurrent);$(NetPrevious)</NetRoslynAll>
+ <NetRoslyn>$(NetCurrent)</NetRoslyn>
<NetRoslynBuildHostNetCoreVersion>$(NetCurrent)</NetRoslynBuildHostNetCoreVersion>
</PropertyGroup>
</When>

View file

@ -1,23 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Matt Thalman <mthalman@microsoft.com>
Date: Thu, 19 Oct 2023 08:52:35 -0500
Subject: [PATCH] Use net9.0 for tool dependencies
Backport: https://github.com/dotnet/source-build/issues/3663
---
src/Layout/tool_fsharp/tool_fsc.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Layout/tool_fsharp/tool_fsc.csproj b/src/Layout/tool_fsharp/tool_fsc.csproj
index adb50eed03..530c3a546b 100644
--- a/src/Layout/tool_fsharp/tool_fsc.csproj
+++ b/src/Layout/tool_fsharp/tool_fsc.csproj
@@ -20,7 +20,7 @@
</PropertyGroup>
<ItemGroup>
<ResolvedFileToPublish
- Include="$(PkgMicrosoft_FSharp_Compiler)/lib/net8.0/FSharp.Core.xml"
+ Include="$(PkgMicrosoft_FSharp_Compiler)/lib/net9.0/FSharp.Core.xml"
CopyToPublishDirectory="PreserveNewest"
DestinationSubPath="FSharp.Core.xml"
RelativePath="FSharp.Core.xml"

View file

@ -1,32 +0,0 @@
trigger: none
variables:
- name: cfsNPMWarnLevel
value: none
- name: cfsNugetWarnLevel
value: none
- name: myGetWarnLevel
value: none
- name: NuGetSecurityAnalysisWarningLevel
value: none
jobs:
- template: ../../src/installer/src/SourceBuild/Arcade/eng/common/templates/job/source-build-build-tarball.yml
parameters:
architecture: x64
excludeSdkContentTests: true
matrix:
Ubuntu2004-Offline:
_BootstrapPrep: true
_Container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04
_EnablePoison: false
_ExcludeOmniSharpTests: false
_RunOnline: false
_WithPreviousSDK: false
name: Build_Tarball_x64
pool:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64

View file

@ -1,4 +1,5 @@
*.bmp
*.doc
*.docx
*.gif
*.ico

View file

@ -64,7 +64,8 @@
"name": "aspire",
"defaultRemote": "https://github.com/dotnet/aspire",
"exclude": [
"src/Aspire.Dashboard/**/*"
"src/Aspire.Dashboard/**/*",
"samples/**/*"
]
},
{

View file

@ -4,7 +4,7 @@
<TargetFrameworks Condition="'$(OS)' != 'Windows_NT'">$(CoreSdkTargetFramework)</TargetFrameworks>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<RootNamespace>Microsoft.DotNet.Cli.Build</RootNamespace>
<DefineConstants Condition="'$(DotNetBuildFromSource)' == 'true'">$(DefineConstants);SOURCE_BUILD</DefineConstants>
<DefineConstants Condition="'$(DotNetBuildSourceOnly)' == 'true'">$(DefineConstants);SOURCE_BUILD</DefineConstants>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
@ -16,7 +16,7 @@
<PackageReference Include="NuGet.Versioning" Version="$(NuGetBuildTasksPackageVersion)" />
<PackageReference Include="NuGet.Packaging" Version="$(NuGetBuildTasksPackageVersion)" />
<PackageReference Include="System.Reflection.Metadata" Version="1.4.2" />
<PackageReference Include="WindowsAzure.Storage" Version="9.3.3" Condition="'$(DotNetBuildFromSource)' != 'true'" />
<PackageReference Include="WindowsAzure.Storage" Version="9.3.3" Condition="'$(DotNetBuildSourceOnly)' != 'true'" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
</ItemGroup>

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.15.5)
cmake_minimum_required(VERSION 3.20)
# Create project named finalizer, this will generate Finalizer.vcxproj
project(Finalizer)
@ -53,6 +53,7 @@ target_link_libraries(Finalizer shell32.lib)
target_link_libraries(Finalizer advapi32.lib)
target_link_libraries(Finalizer version.lib)
target_link_libraries(Finalizer msi.lib)
target_link_libraries(Finalizer shlwapi.lib)
# Add WiX libraries
target_link_libraries(Finalizer wcautil.lib)

Some files were not shown because too many files have changed in this diff Show more