Skip to content
Closed
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
56bbfac
Backflow from https://github.com/dotnet/dotnet / 5bed449 build 309919
dotnet-maestro[bot] Apr 14, 2026
02e7b96
Update dependencies from build 309919
dotnet-maestro[bot] Apr 14, 2026
998f08c
Update dotnet new approval baseline
DonnaChen888 Apr 14, 2026
8ed9c4b
Update dotnet new approval baseline
DonnaChen888 Apr 14, 2026
6912c5b
Merge branch 'main' into darc-main-3bfd585b-290e-4bee-9d6b-354cbe5c9ad0
wtgodbe Apr 14, 2026
0d2f79c
Backflow from https://github.com/dotnet/dotnet / b94d039 build 310323
dotnet-maestro[bot] Apr 15, 2026
c00c5c6
Merge main into darc-main-3bfd585b-290e-4bee-9d6b-354cbe5c9ad0
dotnet-maestro[bot] Apr 15, 2026
ada577d
Update dependencies from build 310323
dotnet-maestro[bot] Apr 15, 2026
c0246b5
Merge branch 'main' of https://github.com/dotnet/sdk into darc-main-3…
DonnaChen888 Apr 21, 2026
2c7d687
Merge branch 'main' of https://github.com/dotnet/sdk into darc-main-3…
DonnaChen888 Apr 22, 2026
472d973
Update baselines
DonnaChen888 Apr 22, 2026
8ace431
Backflow from https://github.com/dotnet/dotnet / aae32bd build 311575
dotnet-maestro[bot] Apr 24, 2026
08b0574
Merge main into darc-main-3bfd585b-290e-4bee-9d6b-354cbe5c9ad0
dotnet-maestro[bot] Apr 24, 2026
58b0827
Update dependencies from build 311575
dotnet-maestro[bot] Apr 24, 2026
c941419
Exclude test_templates fixture .csproj files from UnitTests.proj globs
dsplaisted Apr 24, 2026
978ed41
Merge main to resolve conflicts
dsplaisted Apr 27, 2026
043321b
Update generated file
jjonescz Apr 27, 2026
84f3119
Update compiler error code in a test
jjonescz Apr 27, 2026
94e8e2b
Merge branch 'main' of https://github.com/dotnet/sdk into darc-main-3…
DonnaChen888 Apr 29, 2026
a27a7e8
Merge branch 'main' into darc-main-3bfd585b-290e-4bee-9d6b-354cbe5c9ad0
DonnaChen888 Apr 30, 2026
25dbd0c
Update known package references - Extensions packages are consolidated
joeloff Apr 30, 2026
1ef5b94
Merge branch 'main' into darc-main-3bfd585b-290e-4bee-9d6b-354cbe5c9ad0
nagilson May 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
268 changes: 134 additions & 134 deletions eng/Version.Details.props

Large diffs are not rendered by default.

538 changes: 269 additions & 269 deletions eng/Version.Details.xml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion eng/common/sdk-task.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ $warnAsError = if ($noWarnAsError) { $false } else { $true }

function Print-Usage() {
Write-Host "Common settings:"
Write-Host " -task <value> Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)"
Write-Host " -task <value> Name of Arcade task (name of a project in toolset directory of the Arcade SDK package)"
Write-Host " -restore Restore dependencies"
Write-Host " -verbosity <value> Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]"
Write-Host " -help Print help and exit"
Expand Down
2 changes: 1 addition & 1 deletion eng/common/sdk-task.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

show_usage() {
echo "Common settings:"
echo " --task <value> Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)"
echo " --task <value> Name of Arcade task (name of a project in toolset directory of the Arcade SDK package)"
echo " --restore Restore dependencies"
echo " --verbosity <value> Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]"
echo " --help Print help and exit"
Expand Down
101 changes: 84 additions & 17 deletions eng/common/tools.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,6 @@ function LocateVisualStudio([object]$vsRequirements = $null){
if (Get-Member -InputObject $GlobalJson.tools -Name 'vswhere') {
$vswhereVersion = $GlobalJson.tools.vswhere
} else {
# keep this in sync with the VSWhereVersion in DefaultVersions.props
$vswhereVersion = '3.1.7'
}

Expand Down Expand Up @@ -680,7 +679,17 @@ function GetNuGetPackageCachePath() {

# Returns a full path to an Arcade SDK task project file.
function GetSdkTaskProject([string]$taskName) {
return Join-Path (Split-Path (InitializeToolset) -Parent) "SdkTasks\$taskName.proj"
$toolsetDir = Split-Path (InitializeToolset) -Parent
$proj = Join-Path $toolsetDir "$taskName.proj"
if (Test-Path $proj) {
return $proj
}
# TODO: Remove this fallback once all supported versions use the new layout.
$legacyProj = Join-Path $toolsetDir "SdkTasks\$taskName.proj"
if (Test-Path $legacyProj) {
return $legacyProj
}
throw "Unable to find $taskName.proj in toolset at: $toolsetDir"
}

function InitializeNativeTools() {
Expand Down Expand Up @@ -717,35 +726,59 @@ function InitializeToolset() {
$nugetCache = GetNuGetPackageCachePath

$toolsetVersion = Read-ArcadeSdkVersion
$toolsetLocationFile = Join-Path $ToolsetDir "$toolsetVersion.txt"
$toolsetToolsDir = Join-Path $ToolsetDir $toolsetVersion

if (Test-Path $toolsetLocationFile) {
$path = Get-Content $toolsetLocationFile -TotalCount 1
if (Test-Path $path) {
return $global:_InitializeToolset = $path
}
# Check if the toolset has already been extracted
$toolsetBuildProj = $null
$buildProjPath = Join-Path $toolsetToolsDir 'Build.proj'

if (Test-Path $buildProjPath) {
$toolsetBuildProj = $buildProjPath
}

if ($toolsetBuildProj -ne $null) {
return $global:_InitializeToolset = $toolsetBuildProj
}

if (-not $restore) {
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Toolset version $toolsetVersion has not been restored."
ExitWithExitCode 1
}

$buildTool = InitializeBuildTool
$downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--prerelease", "--output", "$nugetCache")
if ($env:NUGET_CONFIG) {
$downloadArgs += "--configfile"
$downloadArgs += $env:NUGET_CONFIG
}
DotNet @downloadArgs

$proj = Join-Path $ToolsetDir 'restore.proj'
$bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'ToolsetRestore.binlog') } else { '' }
$packageDir = Join-Path $nugetCache (Join-Path 'microsoft.dotnet.arcade.sdk' $toolsetVersion)
$packageToolsetDir = Join-Path $packageDir 'toolset'
$packageToolsDir = Join-Path $packageDir 'tools'

'<Project Sdk="Microsoft.DotNet.Arcade.Sdk"/>' | Set-Content $proj
# TODO: Remove the tools/ check once all supported versions have the toolset folder.
if (!(Test-Path $packageToolsetDir) -and !(Test-Path $packageToolsDir)) {
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Arcade SDK package does not contain a toolset or tools folder: $packageDir"
ExitWithExitCode 3
}

MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile
New-Item -ItemType Directory -Path $toolsetToolsDir -Force | Out-Null

$path = Get-Content $toolsetLocationFile -Encoding UTF8 -TotalCount 1
if (!(Test-Path $path)) {
throw "Invalid toolset path: $path"
# Copy toolset if present at the package root (new layout), otherwise fall back to tools
if (Test-Path $packageToolsetDir) {
Copy-Item -Path "$packageToolsetDir\*" -Destination $toolsetToolsDir -Recurse -Force
} else {
# TODO: Remove this fallback once all supported versions have the toolset folder.
Copy-Item -Path "$packageToolsDir\*" -Destination $toolsetToolsDir -Recurse -Force
}

return $global:_InitializeToolset = $path
if (Test-Path $buildProjPath) {
$toolsetBuildProj = $buildProjPath
} else {
throw "Unable to find Build.proj in toolset at: $toolsetToolsDir"
}

return $global:_InitializeToolset = $toolsetBuildProj
}

function ExitWithExitCode([int] $exitCode) {
Expand Down Expand Up @@ -806,6 +839,40 @@ function MSBuild() {
MSBuild-Core @args
}

#
# Executes a dotnet command with arguments passed to the function.
# Terminates the script if the command fails.
#
function DotNet() {
$dotnetRoot = InitializeDotNetCli -install:$restore
$dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet')

$cmdArgs = ""
foreach ($arg in $args) {
if ($null -ne $arg -and $arg.Trim() -ne "") {
if ($arg.EndsWith('\')) {
$arg = $arg + "\"
}
$cmdArgs += " `"$arg`""
}
}

$env:ARCADE_BUILD_TOOL_COMMAND = "`"$dotnetPath`" $cmdArgs"

$exitCode = Exec-Process $dotnetPath $cmdArgs

if ($exitCode -ne 0) {
Write-Host "dotnet command failed with exit code $exitCode. Check errors above." -ForegroundColor Red

if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null -and !$fromVMR) {
Write-PipelineSetResult -Result "Failed" -Message "dotnet command execution failed."
ExitWithExitCode 0
} else {
ExitWithExitCode $exitCode
}
}
}

#
# Executes msbuild (or 'dotnet msbuild') with arguments passed to the function.
# The arguments are automatically quoted.
Expand Down
89 changes: 70 additions & 19 deletions eng/common/tools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -407,36 +407,53 @@ function InitializeToolset {
ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk"

local toolset_version=$_ReadGlobalVersion
local toolset_location_file="$toolset_dir/$toolset_version.txt"
local toolset_tools_dir="$toolset_dir/$toolset_version"

if [[ -a "$toolset_location_file" ]]; then
local path=`cat "$toolset_location_file"`
if [[ -a "$path" ]]; then
# return value
_InitializeToolset="$path"
return
fi
# Check if the toolset has already been extracted
local toolset_build_proj=""
if [[ -a "$toolset_tools_dir/Build.proj" ]]; then
toolset_build_proj="$toolset_tools_dir/Build.proj"
fi

if [[ -n "$toolset_build_proj" ]]; then
# return value
_InitializeToolset="$toolset_build_proj"
return
fi

if [[ "$restore" != true ]]; then
Write-PipelineTelemetryError -category 'InitializeToolset' "Toolset version $toolset_version has not been restored."
ExitWithExitCode 2
fi

local proj="$toolset_dir/restore.proj"
local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--prerelease" "--output" "$_GetNuGetPackageCachePath")
if [[ -n "${NUGET_CONFIG:-}" ]]; then
download_args+=("--configfile" "$NUGET_CONFIG")
fi
DotNet "${download_args[@]}"

local package_dir="$_GetNuGetPackageCachePath/microsoft.dotnet.arcade.sdk/$toolset_version"

local bl=""
if [[ "$binary_log" == true ]]; then
bl="/bl:$log_dir/ToolsetRestore.binlog"
# TODO: Remove the tools/ check once all supported versions have the toolset folder.
if [[ ! -d "$package_dir/toolset" && ! -d "$package_dir/tools" ]]; then
Write-PipelineTelemetryError -category 'InitializeToolset' "Arcade SDK package does not contain a toolset or tools folder: $package_dir"
ExitWithExitCode 3
fi

echo '<Project Sdk="Microsoft.DotNet.Arcade.Sdk"/>' > "$proj"
MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file"
mkdir -p "$toolset_tools_dir"

local toolset_build_proj=`cat "$toolset_location_file"`
# Copy toolset if present at the package root (new layout), otherwise fall back to tools
if [[ -d "$package_dir/toolset" ]]; then
cp -r "$package_dir/toolset/." "$toolset_tools_dir"
else
# TODO: Remove this fallback once all supported versions have the toolset folder.
cp -r "$package_dir/tools/." "$toolset_tools_dir"
fi

if [[ ! -a "$toolset_build_proj" ]]; then
Write-PipelineTelemetryError -category 'Build' "Invalid toolset path: $toolset_build_proj"
if [[ -a "$toolset_tools_dir/Build.proj" ]]; then
toolset_build_proj="$toolset_tools_dir/Build.proj"
else
Write-PipelineTelemetryError -category 'Build' "Unable to find Build.proj in toolset at: $toolset_tools_dir"
ExitWithExitCode 3
fi

Expand All @@ -458,6 +475,26 @@ function StopProcesses {
return 0
}

function DotNet {
InitializeDotNetCli $restore

local dotnet_path="$_InitializeDotNetCli/dotnet"

export ARCADE_BUILD_TOOL_COMMAND="$dotnet_path $@"

"$dotnet_path" "$@" || {
local exit_code=$?
echo "dotnet command failed with exit code $exit_code. Check errors above."

if [[ "$ci" == true && -n ${SYSTEM_TEAMPROJECT:-} && "$from_vmr" != true ]]; then
Write-PipelineSetResult -result "Failed" -message "dotnet command execution failed."
ExitWithExitCode 0
else
ExitWithExitCode $exit_code
fi
}
}

function MSBuild {
local args=( "$@" )
if [[ "$pipelines_log" == true ]]; then
Expand Down Expand Up @@ -555,8 +592,22 @@ function GetDarc {

# Returns a full path to an Arcade SDK task project file.
function GetSdkTaskProject {
taskName=$1
echo "$(dirname $_InitializeToolset)/SdkTasks/$taskName.proj"
local taskName=$1
local toolsetDir
toolsetDir="$(dirname "$_InitializeToolset")"
local proj="$toolsetDir/$taskName.proj"
if [[ -a "$proj" ]]; then
echo "$proj"
return
fi
# TODO: Remove this fallback once all supported versions use the new layout.
local legacyProj="$toolsetDir/SdkTasks/$taskName.proj"
if [[ -a "$legacyProj" ]]; then
echo "$legacyProj"
return
fi
Write-PipelineTelemetryError -category 'Build' "Unable to find $taskName.proj in toolset at: $toolsetDir"
ExitWithExitCode 3
}

ResolvePath "${BASH_SOURCE[0]}"
Expand Down
4 changes: 2 additions & 2 deletions global.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
}
},
"msbuild-sdks": {
"Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26208.110",
"Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26208.110",
"Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26210.111",
"Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26210.111",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0",
"Microsoft.WixToolset.Sdk": "5.0.2-dotnet.2811440"
Expand Down
1 change: 1 addition & 0 deletions src/Layout/redist/targets/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

<!-- Shared infra to build and use the sdk-tasks -->
<Import Project="$(RepoRoot)src\Tasks\sdk-tasks\sdk-tasks.InTree.targets" />
<UsingTask TaskName="Microsoft.DotNet.Arcade.Sdk.DownloadFile" AssemblyFile="$(ArcadeSdkBuildTasksAssembly)" Runtime="NET" />

<Import Project="RestoreLayout.targets" />
<Import Project="BundledManifests.targets" />
Expand Down
2 changes: 1 addition & 1 deletion src/Layout/redist/targets/GenerateMSIs.targets
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
Overwrite="true"
Encoding="Unicode" />

<DownloadFile
<Microsoft.DotNet.Arcade.Sdk.DownloadFile
Uri="$(WixDownloadUrl)"
DestinationPath="$(WixDestinationPath)"
Overwrite="false" />
Expand Down
7 changes: 4 additions & 3 deletions src/Layout/redist/targets/RestoreLayout.targets
Original file line number Diff line number Diff line change
Expand Up @@ -311,9 +311,10 @@
</UrisToDownload>
</ItemGroup>

<DownloadFile Condition="'@(UrisToDownload)' != '' and %(ShouldDownload)"
Uris="@(UrisToDownload)"
DestinationPath="%(DownloadDestination)" />
<Microsoft.DotNet.Arcade.Sdk.DownloadFile
Condition="'@(UrisToDownload)' != '' and %(ShouldDownload)"
Uris="@(UrisToDownload)"
DestinationPath="%(DownloadDestination)" />
</Target>

</Project>
9 changes: 1 addition & 8 deletions src/Tasks/sdk-tasks/sdk-tasks.InTree.targets
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<UsingTask TaskName="Crossgen" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
<UsingTask TaskName="DeduplicateAssembliesWithLinks" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
<UsingTask TaskName="ExtractArchiveToDirectory" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
<UsingTask TaskName="FilterItemsByDuplicateHash" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
<UsingTask TaskName="GenerateDefaultRuntimeFrameworkVersion" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
<UsingTask TaskName="GenerateMSBuildExtensionsSWR" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
<UsingTask TaskName="GenerateMsiVersionFromFullVersion" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
Expand All @@ -35,12 +36,4 @@
<UsingTask TaskName="UpdateRuntimeConfig" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />
<UsingTask TaskName="ZipFileCreateFromDirectory" AssemblyFile="$(SdkTasksAssembly)" TaskFactory="TaskHostFactory" Runtime="NET" />

<UsingTask TaskName="FilterItemsByDuplicateHash"
Condition="'$(MSBuildRuntimeType)' == 'Core'"
AssemblyFile="$(SdkTasksAssembly)"
TaskFactory="TaskHostFactory" />

<!-- Tasks from the Arcade SDK -->
<UsingTask TaskName="DownloadFile" AssemblyFile="$(ArcadeSdkBuildTasksAssembly)" Runtime="NET" />

</Project>
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
apicontroller
blazor
blazorwasm
blazorwebworker
buildprops
buildtargets
classlib
Expand Down Expand Up @@ -35,7 +36,6 @@ webapi
webapiaot
webapp
webconfig
webworker
winforms
winformscontrollib
winformslib
Expand Down Expand Up @@ -68,4 +68,4 @@ install
list
search
uninstall
update
update
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
apicontroller
blazor
blazorwasm
blazorwebworker
buildprops
buildtargets
classlib
Expand Down Expand Up @@ -35,7 +36,6 @@ webapi
webapiaot
webapp
webconfig
webworker
winforms
winformscontrollib
winformslib
Expand Down Expand Up @@ -68,4 +68,4 @@ install
list
search
uninstall
update
update
Loading
Loading