Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 0 additions & 1 deletion src/Workloads/_common/content-hashes.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
$Script:DevConfigWorkloadContentHashes = @{
'cuda\smoke.cu' = '6252383bda8856daa14c4f315961e17d4de3bdba1cba6bf4c09a5d0aa52a2a6f'
'dotnet\configuration.winget' = 'cba2c6873cee7eff241b6d7698d773f8575cfc60a6e9d7dbb8986f4ecea5c048'
'go\configuration.winget' = '552e6fe17baa47df8d1f429735cdd718bdb61b052a86cc47e8f8c6c2cd22232c'
'intel-ai\openvino-smoke.py' = '0b71b5f5351dd7536c6352dc02ffd523fa89f2fa60a23ff27d45fd3e8f9c1326'
'intel-ai\sycl-smoke.cpp' = '6ed0361d8374bcae060b84469b3b167738f016abc9f3b46ba5f19ad870bd74b7'
Expand Down
20 changes: 0 additions & 20 deletions src/Workloads/dotnet/configuration.winget

This file was deleted.

26 changes: 0 additions & 26 deletions src/Workloads/dotnet/install.ps1

This file was deleted.

19 changes: 19 additions & 0 deletions src/Workloads/dotnet/setup.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[CmdletBinding()]
param()

& {
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest

$env:PSModulePath = "$PSHOME\Modules;$env:PSModulePath"

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
$payloadRef = '2dc3d2d30953c12639ad2824c1ff11ca606175d7'

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to self: We will need to update the hash, but I will do it in another PR after we sign the files

$bootstrap = (Invoke-RestMethod -Uri "https://raw.githubusercontent.com/microsoft/WindowsDeveloperConfig/$payloadRef/windows-dev-config/bootstrap.ps1" -UseBasicParsing -TimeoutSec 60).TrimStart([char]0xFEFF)
$signature = Get-AuthenticodeSignature -Content ([Text.Encoding]::Unicode.GetBytes($bootstrap)) -SourcePathOrExtension '.ps1'
if ($signature.Status -ne 'Valid' -or -not $signature.SignerCertificate -or
$signature.SignerCertificate.Subject -ne 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US') {
throw 'The setup bootstrap failed Microsoft signature verification. Setup was not started.'
}
& ([scriptblock]::Create($bootstrap)) -Ref $payloadRef -Workload dotnet -Action Full
}
2 changes: 1 addition & 1 deletion src/docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ Workloads/
typescript/ # configuration.winget (core) + install.ps1 (thin shim)
php/ # setup.ps1 (one-line setup via the engine)
python/ # configuration.winget (core) + install.ps1 (thin shim)
dotnet/ # configuration.winget (core) + install.ps1 (thin shim)
dotnet/ # setup.ps1 (one-line setup via the engine)
go/ # configuration.winget (core) + install.ps1 (thin shim)
java/ # configuration.winget (core) + install.ps1 (thin shim)
rust/ # configuration.winget (core) + install.ps1 (thin shim)
Expand Down
9 changes: 7 additions & 2 deletions src/manifest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -177,10 +177,15 @@ flows:
tags: [dotnet, csharp, fsharp, net]
icon: 🟣
onboardingUrl: https://learn.microsoft.com/dotnet/core/install/windows
# PowerShell-native flow: Workloads/dotnet/setup.ps1 runs the Windows Dev
# Config engine (windows-dev-config/workloads/dotnet.ps1). There is no
# configuration.winget, so the `configuration` key is omitted (same shape
# as winui). manual_test because the engine entry point needs a signed
# release cycle and elevation, which the automated matrix can't provide.
manual_test: true
os: [windows]
windows:
install: Workloads/dotnet/install.ps1
configuration: Workloads/dotnet/configuration.winget
install: Workloads/dotnet/setup.ps1
build: dotnet build src/tests/dotnet/hello.csproj -c Release -v q --nologo -o src/tests/dotnet/bin
run: src\tests\dotnet\bin\hello.exe
expected: src/tests/dotnet/expected.txt
Expand Down
1 change: 1 addition & 0 deletions src/windows-dev-config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ The same engine can apply one developer workload instead of the whole workstatio
| Workload | Installs | One-liner |
| --- | --- | --- |
| `winui` | Developer Mode, PowerShell 7, .NET SDK 10, Windows App CLI, Visual Studio Community 2026 with the .NET desktop and WinUI application development workloads, and the WinUI `dotnet new` templates | `irm https://aka.ms/devconfig/winui/setup.ps1 \| iex` |
| `dotnet` | Developer Mode, PowerShell 7, and .NET SDK 10 | `irm https://aka.ms/devconfig/dotnet/setup.ps1 \| iex` |
| `php` | PowerShell 7 and the PHP runtime/CLI | `irm https://aka.ms/devconfig/php/setup.ps1 \| iex` |

The short URL points at the signed wrapper [`Workloads/winui/setup.ps1`](../Workloads/winui/setup.ps1),
Expand Down
45 changes: 45 additions & 0 deletions src/windows-dev-config/workloads/dotnet.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<#
.SYNOPSIS
.NET SDK: Developer Mode and .NET SDK 10.

.DESCRIPTION
Workload definition read by dev-config.ps1. It follows the same shape as the WinUI
workload, trimmed to the .NET SDK only: no Visual Studio, Windows App Development CLI,
or UI framework templates. The phase files under steps\ do the work.
#>

[CmdletBinding()]
param(
[string] $Action = 'Full'
)

$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest

@{
Name = '.NET SDK'
Actions = @('Full')
Notes = @(
'Open a new terminal so dotnet is on PATH.'
'Create an app with: dotnet new console -n MyApp, or any other dotnet new template.'
)
Phases = @(
@{
File = 'prerequisites.ps1'
Function = 'Invoke-PrerequisitesPhase'
Title = 'Getting ready'
}
@{
File = 'registry-system.ps1'
Function = 'Invoke-RegistrySystemPhase'
Title = 'Developer Mode'
Steps = @('DeveloperMode')
}
@{
File = 'packages.ps1'
Function = 'Invoke-PackagesPhase'
Title = 'Packages'
Parameters = @{ Packages = @('PowerShell', 'DotnetSdk') }
}
)
}