Skip to content

Upgrade to PowerShell 7 - #16075

Merged
Julio César Rocha (JunielKatarn) merged 73 commits into
microsoft:mainfrom
jurocha-ms:pwsh
May 7, 2026
Merged

Upgrade to PowerShell 7#16075
Julio César Rocha (JunielKatarn) merged 73 commits into
microsoft:mainfrom
jurocha-ms:pwsh

Conversation

@JunielKatarn

@JunielKatarn Julio César Rocha (JunielKatarn) commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

Description

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Why

PowerShell 7 offers multiple performance improvements over Windows PowerShell (5.1).

🔍 PowerShell 7.x vs Windows PowerShell 5.1 — Performance & Security

Dimension Windows PowerShell 5.1 PowerShell 7.x (incl. 7.6 LTS)
Runtime .NET Framework 4.x 【1-9d0dcf】 Modern .NET (Core → .NET 8/9/10) 【1-9d0dcf】
Performance (overall) Baseline performance ~2–3× faster for common operations (arrays, strings, module load) 【2-7415bb】
Parallel execution No native pipeline parallelism Native parallelism (ForEach-Object -Parallel) 【3-bc07e3】
Memory efficiency Less efficient (older runtime) Improved memory management and efficiency 【2-7415bb】
Module loading Slower Faster module loading 【2-7415bb】
Optimization level Limited (legacy runtime) Continuously optimized via modern .NET 【1-9d0dcf】
Security model (lifecycle) Maintenance mode (security fixes only) 【3-bc07e3】 Actively developed with ongoing improvements 【3-bc07e3】
Platform security baseline Older .NET + Windows-only stack Modern .NET with updated crypto, TLS, runtime security 【1-9d0dcf】
Update model Tied to Windows updates Independent updates (faster patching) 【4-202161】
Execution policy Independent config (often Restricted by default) 【5-d94a22】 Independent config (often RemoteSigned by default) 【5-d94a22】
Attack surface Includes legacy Windows-specific components Reduced legacy surface, more modern APIs 【3-bc07e3】

See https://techieramesh.com/devops/windows-automation/ps-5-1-vs-7-5-comparison/

What

  • Ensure PowerShell 7 is installed (see vnext/dotnet-tools.json). (NuGet package to reduce set up footprint on the developer's machine).
  • Replace most references to powershell.exe with pwsh.exe (except CMD and MSBuild files, for now).
  • Create package @react-native-windows/find-dotnet-tools to provide a common set of functions to determine PowerShell's (and potentially any other DotNet tool) location.
  • NOTE An issue was found when copying bundles. The resolved file system path could include a query string originally from the bundle's URI. This happens in all PR builds, so it's unrelated to this change.
    Sample error:
    error ENOENT: no such file or directory, mkdir 'D:\a\_work\1\s\packages\e2e-test-app-fabric\windows\RNTesterApp-Fabric\Bundle\assets?unstable_path=_@react-native-windows\tester\js\assets'.
    

Testing

CI checks pass

Microsoft Reviewers: Open in CodeFlow

@JunielKatarn
Julio César Rocha (JunielKatarn) marked this pull request as ready for review April 30, 2026 02:32
@JunielKatarn
Julio César Rocha (JunielKatarn) marked this pull request as draft May 6, 2026 21:26
@JunielKatarn
Julio César Rocha (JunielKatarn) marked this pull request as ready for review May 7, 2026 02:09
@JunielKatarn
Julio César Rocha (JunielKatarn) merged commit b5297b9 into microsoft:main May 7, 2026
33 checks passed
Julio César Rocha (JunielKatarn) added a commit that referenced this pull request Jun 10, 2026
* Upgrade to PowerShell 7 (#16075)

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Define installNuGetPackages task; Install pwsh 7.6.1

* Replace powershell.exe with pwsh.exe

* Change files

* CI: Ensure NuGet is availabe before `yarn install`

* Add NuGetAuthenticate before yarn install

* Do not download PowerShell on CI/CD environments

* Fix just-task JS syntax

* Add dotnet-tools manifest

* Fix pwsh.exe tool path

* Resolve dotnet-tools.json path

* Use dotnet for `nuget locals`

* Use PWSH in nuget-restore-task.js

* Break dependency loop in just-task

* Update other ADO tasks

* Update @react-native-windows/automation

* Rename findPwsh as findPowerShell

* Drop powershell export from commandWithProgress

* Change files

* Add README for find-dotnet-tools

* Add README to package.json

* Adjust newline

* Run task `installDotnetTools` only when not in CI

* Install .NET tools in CI

* Install .NET on prepare-js-env

* Do not install .NET tools on CI

* Quote powershell path

* fix yarn lint

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Restore deleted lock files

* Add missing dependency

* Use -Command for compatible PWSH calls

* Use -Command pwsh argument

* Correct runPowerShellScriptFunction cmd escaping

* Quote pwsh command in runPowerShellScriptFunction

* Remove quotes

* Quote remaining findPowerShell() calls for execSync

* Add temporary diagnostic commands

* Diagnostics

* Diagnostics

* Diagnostics

* Add runPowerShellScriptFunction argument to delegate Appx-related commands to Windows PowerShell

* Remove diagnostics steps

* Use execFileSync instead of execSync in deploy.ts

* Remove querystrings from FS paths

* Suppress warning when using `-UseWindowsPowerShell`

* Revert "Remove querystrings from FS paths"

This reverts commit e1f3cfd.

* Use pipe semantics for Get-AppxPackage in resolveAppName

* Hard-fail if PowerShell 7 cannot be found.

Do not fall back to Windows PowerShell (powershell.exe).
PowerShell code may not be backwards compatible.

* Improve missing pwsh.exe error message

* Add package resolution pipeline test

* UseWindowsPowerShell for package resolution test

* Try to read package Microsoft.PrintDialog

* Replace stderr redirection with -WarningAction

* Replace stderr redirection with -WarningAction

* Print sample app names on appWindow error

* Add more diagnostics

* Add missing -WarningAction SilentlyContinue

* Revert "Add more diagnostics"

This reverts commit 8c10bc4.

* Revert "Print sample app names on appWindow error"

This reverts commit 6e70148.

* Remove CI probing tasks

* Revert "Use pipe semantics for Get-AppxPackage in resolveAppName"

This reverts commit 6c46c73.

Co-authored-by: Copilot <copilot@github.com>

* Remove unused escaping logic

* Re-introduce deleted .lock.json

---------

Co-authored-by: Copilot <copilot@github.com>

* Fix PowerShell installation (#16164)

* Defer findPowershell to layoutMSRNCxx

* Change files

* Upgrade to Visual Studio 2026 (#16170)

* Update deps script. TODO: test

* Upgrade rnw-deps to .NET 10

* Defer findPowershell to layoutMSRNCxx

* Upgrade VS version to 18.6.1

* Drop /async in MSVC 14.5

* Replace std::future coroutines with WinRT types

* clang format

* Change files

* Drop Windows10SDK.19041

* Change files

* Set TargetFramework to net10.0-windows10.0.26100.0

* Use IAsyncOperation instead of out parameters

* Install .NET 10

* Revert "Install .NET 10"

This reverts commit 5f75dc0.

* Revert "Set TargetFramework to net10.0-windows10.0.26100.0"

This reverts commit 22a4791.

* clang format

* Upgrade CsWinRT.csproj to .NET 8

* Fix filters

* Upgrade MSRN SLN to VS 18

* Revert parameter signature in LoadBundleAsync

* Update CSWinRT lock

* Allow all versions of VS 2026

* Use IBuffer instead of hstring as payload

GetJavaScriptFromServerAsync retuns bundle contents as hstring (16 bit)
It then gets converted to an 8-bit string. This conversion drops
bytes consideres "invalid". Those bytes are expected as part of the Hermes bundle header.

Transmitting the bundle as an IBuffer preserves the original bytes and avoids the conversion issues.

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Use WinRT exception types instead of std

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Upgrade to GoogleTest Adapter 1.8.1.8 (#16218)

* Upgrade to GoogleTest adapter 1.8.1.8

* Change files

* Update package lock files

* Upgrade CI agents to Windows Server 2025 (#16208)

* Use image rnw-img-vs2026-node24

* Update fork-sync/bin.js chmod

* Upgrade to MSVC 14.5

* Drop -UseWindowsPowerShell fallback

* Manually install yarn

* Upgrade to .NET Hosting Bundle 10.0.8

* Change files

* Fix change file

* Add temp npm install yarn in templates

* Test yarn location

* update

* update

* TEMPORARILY revert agent image

* Print yarn version in setup

* Revert "TEMPORARILY revert agent image"

This reverts commit 7c175e1.

* update

* update

* update

* Upgrade to msbuildVersion: 18.0

* Update Google test adapter location

* Remove unused statement

* Remove probing tasks

* Upgrade to VSTest@3

* Upgrade more projects and scripts to VS 2026

* Explicitly set vstest.console location

* Install midgard-yarn and verdaccio in-place

* Fix yarn version

* Update node-tests version

* Use pwsh in Add-AppDevPackage

* Make WindowsStoreAppUtils use PowerShell 7

* Update snapshot values

* Update snapshot from failing x86 run

* Use the --tag argument for verdaccio under Node 24

* Ignore/warn on unstable click test

* Enable WMIC for RN Doctor

* Disable RN doctor until it drops WMIC

* Add rnw-img-vs2026-node24.json (#16224)

* Update CI verdaccio to 6.7.2 (#16223)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005 (#16225)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005

* Change files

* fix: WebSocket binaryType handling — stop unconditional Blob interception of binary messages (#16173)

* blob support (#8)

* blob support

* pr comments

* pr comments

* Update DefaultBlobResource.cpp

* Create react-native-windows-c3827e14-777b-475a-bf00-dc169bf89f3d.json

* Add WebSocketArrayBuffer headless test (#9)

* Add WebSocketArrayBuffer headless test

* Skip test by default

* pr comments

* Update overrides (#10)

---------

Co-authored-by: Julio César Rocha <JunielKatarn@users.noreply.github.com>

* Upgrade projects to .NET 10 (#16226)

* Upgrade projects to .NET 10

* Upgrade lock files

* Change files

* Fix missing conflicts

* Update packages lock

* Remove extra yarn step

* Re-introduce JS Desktop integration tests (#16228)

* Remove redundant condition Desktop.IntegrationTests.SkipRNTester

Modify Desktop.IntegrationTests.Filter instead.

* Re-introduce WebSocket and WebSocketBlob tests

* Make WSBlob test compare contents

* Rename method to RunTest

* Handle initial message from default endpoint

* Change files

* Migrate XHR test

* Port Fetch test

* Port Blob test

* WebSocketMultipleSendTest

* Remove JS WebSocket servers

* Skip in CI for now

* Remove ban-types

* Fix DynamicReaderWriterTests

* Use WinRT coroutine types for UwpScriptStore

* clang format

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Gordon MacMaster <31481849+gmacmaster@users.noreply.github.com>
Julio César Rocha (JunielKatarn) added a commit that referenced this pull request Jun 12, 2026
* Upgrade to PowerShell 7 (#16075)

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Define installNuGetPackages task; Install pwsh 7.6.1

* Replace powershell.exe with pwsh.exe

* Change files

* CI: Ensure NuGet is availabe before `yarn install`

* Add NuGetAuthenticate before yarn install

* Do not download PowerShell on CI/CD environments

* Fix just-task JS syntax

* Add dotnet-tools manifest

* Fix pwsh.exe tool path

* Resolve dotnet-tools.json path

* Use dotnet for `nuget locals`

* Use PWSH in nuget-restore-task.js

* Break dependency loop in just-task

* Update other ADO tasks

* Update @react-native-windows/automation

* Rename findPwsh as findPowerShell

* Drop powershell export from commandWithProgress

* Change files

* Add README for find-dotnet-tools

* Add README to package.json

* Adjust newline

* Run task `installDotnetTools` only when not in CI

* Install .NET tools in CI

* Install .NET on prepare-js-env

* Do not install .NET tools on CI

* Quote powershell path

* fix yarn lint

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Restore deleted lock files

* Add missing dependency

* Use -Command for compatible PWSH calls

* Use -Command pwsh argument

* Correct runPowerShellScriptFunction cmd escaping

* Quote pwsh command in runPowerShellScriptFunction

* Remove quotes

* Quote remaining findPowerShell() calls for execSync

* Add temporary diagnostic commands

* Diagnostics

* Diagnostics

* Diagnostics

* Add runPowerShellScriptFunction argument to delegate Appx-related commands to Windows PowerShell

* Remove diagnostics steps

* Use execFileSync instead of execSync in deploy.ts

* Remove querystrings from FS paths

* Suppress warning when using `-UseWindowsPowerShell`

* Revert "Remove querystrings from FS paths"

This reverts commit e1f3cfd.

* Use pipe semantics for Get-AppxPackage in resolveAppName

* Hard-fail if PowerShell 7 cannot be found.

Do not fall back to Windows PowerShell (powershell.exe).
PowerShell code may not be backwards compatible.

* Improve missing pwsh.exe error message

* Add package resolution pipeline test

* UseWindowsPowerShell for package resolution test

* Try to read package Microsoft.PrintDialog

* Replace stderr redirection with -WarningAction

* Replace stderr redirection with -WarningAction

* Print sample app names on appWindow error

* Add more diagnostics

* Add missing -WarningAction SilentlyContinue

* Revert "Add more diagnostics"

This reverts commit 8c10bc4.

* Revert "Print sample app names on appWindow error"

This reverts commit 6e70148.

* Remove CI probing tasks

* Revert "Use pipe semantics for Get-AppxPackage in resolveAppName"

This reverts commit 6c46c73.

Co-authored-by: Copilot <copilot@github.com>

* Remove unused escaping logic

* Re-introduce deleted .lock.json

---------

Co-authored-by: Copilot <copilot@github.com>

* Fix PowerShell installation (#16164)

* Defer findPowershell to layoutMSRNCxx

* Change files

* Upgrade to Visual Studio 2026 (#16170)

* Update deps script. TODO: test

* Upgrade rnw-deps to .NET 10

* Defer findPowershell to layoutMSRNCxx

* Upgrade VS version to 18.6.1

* Drop /async in MSVC 14.5

* Replace std::future coroutines with WinRT types

* clang format

* Change files

* Drop Windows10SDK.19041

* Change files

* Set TargetFramework to net10.0-windows10.0.26100.0

* Use IAsyncOperation instead of out parameters

* Install .NET 10

* Revert "Install .NET 10"

This reverts commit 5f75dc0.

* Revert "Set TargetFramework to net10.0-windows10.0.26100.0"

This reverts commit 22a4791.

* clang format

* Upgrade CsWinRT.csproj to .NET 8

* Fix filters

* Upgrade MSRN SLN to VS 18

* Revert parameter signature in LoadBundleAsync

* Update CSWinRT lock

* Allow all versions of VS 2026

* Use IBuffer instead of hstring as payload

GetJavaScriptFromServerAsync retuns bundle contents as hstring (16 bit)
It then gets converted to an 8-bit string. This conversion drops
bytes consideres "invalid". Those bytes are expected as part of the Hermes bundle header.

Transmitting the bundle as an IBuffer preserves the original bytes and avoids the conversion issues.

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Use WinRT exception types instead of std

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Upgrade to GoogleTest Adapter 1.8.1.8 (#16218)

* Upgrade to GoogleTest adapter 1.8.1.8

* Change files

* Update package lock files

* Upgrade CI agents to Windows Server 2025 (#16208)

* Use image rnw-img-vs2026-node24

* Update fork-sync/bin.js chmod

* Upgrade to MSVC 14.5

* Drop -UseWindowsPowerShell fallback

* Manually install yarn

* Upgrade to .NET Hosting Bundle 10.0.8

* Change files

* Fix change file

* Add temp npm install yarn in templates

* Test yarn location

* update

* update

* TEMPORARILY revert agent image

* Print yarn version in setup

* Revert "TEMPORARILY revert agent image"

This reverts commit 7c175e1.

* update

* update

* update

* Upgrade to msbuildVersion: 18.0

* Update Google test adapter location

* Remove unused statement

* Remove probing tasks

* Upgrade to VSTest@3

* Upgrade more projects and scripts to VS 2026

* Explicitly set vstest.console location

* Install midgard-yarn and verdaccio in-place

* Fix yarn version

* Update node-tests version

* Use pwsh in Add-AppDevPackage

* Make WindowsStoreAppUtils use PowerShell 7

* Update snapshot values

* Update snapshot from failing x86 run

* Use the --tag argument for verdaccio under Node 24

* Ignore/warn on unstable click test

* Enable WMIC for RN Doctor

* Disable RN doctor until it drops WMIC

* Add rnw-img-vs2026-node24.json (#16224)

* Update CI verdaccio to 6.7.2 (#16223)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005 (#16225)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005

* Change files

* fix: WebSocket binaryType handling — stop unconditional Blob interception of binary messages (#16173)

* blob support (#8)

* blob support

* pr comments

* pr comments

* Update DefaultBlobResource.cpp

* Create react-native-windows-c3827e14-777b-475a-bf00-dc169bf89f3d.json

* Add WebSocketArrayBuffer headless test (#9)

* Add WebSocketArrayBuffer headless test

* Skip test by default

* pr comments

* Update overrides (#10)

---------

Co-authored-by: Julio César Rocha <JunielKatarn@users.noreply.github.com>

* Upgrade projects to .NET 10 (#16226)

* Upgrade projects to .NET 10

* Upgrade lock files

* Change files

* Update yarn lock

* Re-introduce JS Desktop integration tests (#16228)

* Remove redundant condition Desktop.IntegrationTests.SkipRNTester

Modify Desktop.IntegrationTests.Filter instead.

* Re-introduce WebSocket and WebSocketBlob tests

* Make WSBlob test compare contents

* Rename method to RunTest

* Handle initial message from default endpoint

* Change files

* Migrate XHR test

* Port Fetch test

* Port Blob test

* WebSocketMultipleSendTest

* Remove JS WebSocket servers

* Skip in CI for now

* Update yarn lock

* Add missing find-dotnet-tools

* Fix DynamicReaderWriterTests

* Update yarn lock

* Use WinRT coroutine types for UwpScriptStore

* clang format

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Gordon MacMaster <31481849+gmacmaster@users.noreply.github.com>
Julio César Rocha (JunielKatarn) added a commit that referenced this pull request Jun 12, 2026
* Upgrade to PowerShell 7 (#16075)

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Define installNuGetPackages task; Install pwsh 7.6.1

* Replace powershell.exe with pwsh.exe

* Change files

* CI: Ensure NuGet is availabe before `yarn install`

* Add NuGetAuthenticate before yarn install

* Do not download PowerShell on CI/CD environments

* Fix just-task JS syntax

* Add dotnet-tools manifest

* Fix pwsh.exe tool path

* Resolve dotnet-tools.json path

* Use dotnet for `nuget locals`

* Use PWSH in nuget-restore-task.js

* Break dependency loop in just-task

* Update other ADO tasks

* Update @react-native-windows/automation

* Rename findPwsh as findPowerShell

* Drop powershell export from commandWithProgress

* Change files

* Add README for find-dotnet-tools

* Add README to package.json

* Adjust newline

* Run task `installDotnetTools` only when not in CI

* Install .NET tools in CI

* Install .NET on prepare-js-env

* Do not install .NET tools on CI

* Quote powershell path

* fix yarn lint

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Restore deleted lock files

* Add missing dependency

* Use -Command for compatible PWSH calls

* Use -Command pwsh argument

* Correct runPowerShellScriptFunction cmd escaping

* Quote pwsh command in runPowerShellScriptFunction

* Remove quotes

* Quote remaining findPowerShell() calls for execSync

* Add temporary diagnostic commands

* Diagnostics

* Diagnostics

* Diagnostics

* Add runPowerShellScriptFunction argument to delegate Appx-related commands to Windows PowerShell

* Remove diagnostics steps

* Use execFileSync instead of execSync in deploy.ts

* Remove querystrings from FS paths

* Suppress warning when using `-UseWindowsPowerShell`

* Revert "Remove querystrings from FS paths"

This reverts commit e1f3cfd.

* Use pipe semantics for Get-AppxPackage in resolveAppName

* Hard-fail if PowerShell 7 cannot be found.

Do not fall back to Windows PowerShell (powershell.exe).
PowerShell code may not be backwards compatible.

* Improve missing pwsh.exe error message

* Add package resolution pipeline test

* UseWindowsPowerShell for package resolution test

* Try to read package Microsoft.PrintDialog

* Replace stderr redirection with -WarningAction

* Replace stderr redirection with -WarningAction

* Print sample app names on appWindow error

* Add more diagnostics

* Add missing -WarningAction SilentlyContinue

* Revert "Add more diagnostics"

This reverts commit 8c10bc4.

* Revert "Print sample app names on appWindow error"

This reverts commit 6e70148.

* Remove CI probing tasks

* Revert "Use pipe semantics for Get-AppxPackage in resolveAppName"

This reverts commit 6c46c73.

Co-authored-by: Copilot <copilot@github.com>

* Remove unused escaping logic

* Re-introduce deleted .lock.json

---------

Co-authored-by: Copilot <copilot@github.com>

* Fix PowerShell installation (#16164)

* Defer findPowershell to layoutMSRNCxx

* Change files

* Upgrade to Visual Studio 2026 (#16170)

* Update deps script. TODO: test

* Upgrade rnw-deps to .NET 10

* Defer findPowershell to layoutMSRNCxx

* Upgrade VS version to 18.6.1

* Drop /async in MSVC 14.5

* Replace std::future coroutines with WinRT types

* clang format

* Change files

* Drop Windows10SDK.19041

* Change files

* Set TargetFramework to net10.0-windows10.0.26100.0

* Use IAsyncOperation instead of out parameters

* Install .NET 10

* Revert "Install .NET 10"

This reverts commit 5f75dc0.

* Revert "Set TargetFramework to net10.0-windows10.0.26100.0"

This reverts commit 22a4791.

* clang format

* Upgrade CsWinRT.csproj to .NET 8

* Fix filters

* Upgrade MSRN SLN to VS 18

* Revert parameter signature in LoadBundleAsync

* Update CSWinRT lock

* Allow all versions of VS 2026

* Use IBuffer instead of hstring as payload

GetJavaScriptFromServerAsync retuns bundle contents as hstring (16 bit)
It then gets converted to an 8-bit string. This conversion drops
bytes consideres "invalid". Those bytes are expected as part of the Hermes bundle header.

Transmitting the bundle as an IBuffer preserves the original bytes and avoids the conversion issues.

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Use WinRT exception types instead of std

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Upgrade to GoogleTest Adapter 1.8.1.8 (#16218)

* Upgrade to GoogleTest adapter 1.8.1.8

* Change files

* Update package lock files

* Upgrade CI agents to Windows Server 2025 (#16208)

* Use image rnw-img-vs2026-node24

* Update fork-sync/bin.js chmod

* Upgrade to MSVC 14.5

* Drop -UseWindowsPowerShell fallback

* Manually install yarn

* Upgrade to .NET Hosting Bundle 10.0.8

* Change files

* Fix change file

* Add temp npm install yarn in templates

* Test yarn location

* update

* update

* TEMPORARILY revert agent image

* Print yarn version in setup

* Revert "TEMPORARILY revert agent image"

This reverts commit 7c175e1.

* update

* update

* update

* Upgrade to msbuildVersion: 18.0

* Update Google test adapter location

* Remove unused statement

* Remove probing tasks

* Upgrade to VSTest@3

* Upgrade more projects and scripts to VS 2026

* Explicitly set vstest.console location

* Install midgard-yarn and verdaccio in-place

* Fix yarn version

* Update node-tests version

* Use pwsh in Add-AppDevPackage

* Make WindowsStoreAppUtils use PowerShell 7

* Update snapshot values

* Update snapshot from failing x86 run

* Use the --tag argument for verdaccio under Node 24

* Ignore/warn on unstable click test

* Enable WMIC for RN Doctor

* Disable RN doctor until it drops WMIC

* Add rnw-img-vs2026-node24.json (#16224)

* Update CI verdaccio to 6.7.2 (#16223)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005 (#16225)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005

* Change files

* fix: WebSocket binaryType handling — stop unconditional Blob interception of binary messages (#16173)

* blob support (#8)

* blob support

* pr comments

* pr comments

* Update DefaultBlobResource.cpp

* Create react-native-windows-c3827e14-777b-475a-bf00-dc169bf89f3d.json

* Add WebSocketArrayBuffer headless test (#9)

* Add WebSocketArrayBuffer headless test

* Skip test by default

* pr comments

* Update overrides (#10)

---------

Co-authored-by: Julio César Rocha <JunielKatarn@users.noreply.github.com>

* Upgrade projects to .NET 10 (#16226)

* Upgrade projects to .NET 10

* Upgrade lock files

* Change files

* Remove nuget restore task

* Re-introduce JS Desktop integration tests (#16228)

* Remove redundant condition Desktop.IntegrationTests.SkipRNTester

Modify Desktop.IntegrationTests.Filter instead.

* Re-introduce WebSocket and WebSocketBlob tests

* Make WSBlob test compare contents

* Rename method to RunTest

* Handle initial message from default endpoint

* Change files

* Migrate XHR test

* Port Fetch test

* Port Blob test

* WebSocketMultipleSendTest

* Remove JS WebSocket servers

* Skip in CI for now

* Add missing find-dotnet-tool entries

* Update package locks

* Fix DynamicReaderWriterTests

* Fix HermesSamplingProfiler for MSVC 14.5

* Update package locks

* Use WinRT coroutine types for UwpScriptStore

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Gordon MacMaster <31481849+gmacmaster@users.noreply.github.com>
Julio César Rocha (JunielKatarn) added a commit that referenced this pull request Jun 13, 2026
* Upgrade to PowerShell 7 (#16075)

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Define installNuGetPackages task; Install pwsh 7.6.1

* Replace powershell.exe with pwsh.exe

* Change files

* CI: Ensure NuGet is availabe before `yarn install`

* Add NuGetAuthenticate before yarn install

* Do not download PowerShell on CI/CD environments

* Fix just-task JS syntax

* Add dotnet-tools manifest

* Fix pwsh.exe tool path

* Resolve dotnet-tools.json path

* Use dotnet for `nuget locals`

* Use PWSH in nuget-restore-task.js

* Break dependency loop in just-task

* Update other ADO tasks

* Update @react-native-windows/automation

* Rename findPwsh as findPowerShell

* Drop powershell export from commandWithProgress

* Change files

* Add README for find-dotnet-tools

* Add README to package.json

* Adjust newline

* Run task `installDotnetTools` only when not in CI

* Install .NET tools in CI

* Install .NET on prepare-js-env

* Do not install .NET tools on CI

* Quote powershell path

* fix yarn lint

* Ran NuGetRestoreForceEvaluateAllSolutions.ps1

* Restore deleted lock files

* Add missing dependency

* Use -Command for compatible PWSH calls

* Use -Command pwsh argument

* Correct runPowerShellScriptFunction cmd escaping

* Quote pwsh command in runPowerShellScriptFunction

* Remove quotes

* Quote remaining findPowerShell() calls for execSync

* Add temporary diagnostic commands

* Diagnostics

* Diagnostics

* Diagnostics

* Add runPowerShellScriptFunction argument to delegate Appx-related commands to Windows PowerShell

* Remove diagnostics steps

* Use execFileSync instead of execSync in deploy.ts

* Remove querystrings from FS paths

* Suppress warning when using `-UseWindowsPowerShell`

* Revert "Remove querystrings from FS paths"

This reverts commit e1f3cfd.

* Use pipe semantics for Get-AppxPackage in resolveAppName

* Hard-fail if PowerShell 7 cannot be found.

Do not fall back to Windows PowerShell (powershell.exe).
PowerShell code may not be backwards compatible.

* Improve missing pwsh.exe error message

* Add package resolution pipeline test

* UseWindowsPowerShell for package resolution test

* Try to read package Microsoft.PrintDialog

* Replace stderr redirection with -WarningAction

* Replace stderr redirection with -WarningAction

* Print sample app names on appWindow error

* Add more diagnostics

* Add missing -WarningAction SilentlyContinue

* Revert "Add more diagnostics"

This reverts commit 8c10bc4.

* Revert "Print sample app names on appWindow error"

This reverts commit 6e70148.

* Remove CI probing tasks

* Revert "Use pipe semantics for Get-AppxPackage in resolveAppName"

This reverts commit 6c46c73.

Co-authored-by: Copilot <copilot@github.com>

* Remove unused escaping logic

* Re-introduce deleted .lock.json

---------

Co-authored-by: Copilot <copilot@github.com>

* Fix PowerShell installation (#16164)

* Defer findPowershell to layoutMSRNCxx

* Change files

* Upgrade to Visual Studio 2026 (#16170)

* Update deps script. TODO: test

* Upgrade rnw-deps to .NET 10

* Defer findPowershell to layoutMSRNCxx

* Upgrade VS version to 18.6.1

* Drop /async in MSVC 14.5

* Replace std::future coroutines with WinRT types

* clang format

* Change files

* Drop Windows10SDK.19041

* Change files

* Set TargetFramework to net10.0-windows10.0.26100.0

* Use IAsyncOperation instead of out parameters

* Install .NET 10

* Revert "Install .NET 10"

This reverts commit 5f75dc0.

* Revert "Set TargetFramework to net10.0-windows10.0.26100.0"

This reverts commit 22a4791.

* clang format

* Upgrade CsWinRT.csproj to .NET 8

* Fix filters

* Upgrade MSRN SLN to VS 18

* Revert parameter signature in LoadBundleAsync

* Update CSWinRT lock

* Allow all versions of VS 2026

* Use IBuffer instead of hstring as payload

GetJavaScriptFromServerAsync retuns bundle contents as hstring (16 bit)
It then gets converted to an 8-bit string. This conversion drops
bytes consideres "invalid". Those bytes are expected as part of the Hermes bundle header.

Transmitting the bundle as an IBuffer preserves the original bytes and avoids the conversion issues.

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Use WinRT exception types instead of std

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Upgrade to GoogleTest Adapter 1.8.1.8 (#16218)

* Upgrade to GoogleTest adapter 1.8.1.8

* Change files

* Update package lock files

* Upgrade CI agents to Windows Server 2025 (#16208)

* Use image rnw-img-vs2026-node24

* Update fork-sync/bin.js chmod

* Upgrade to MSVC 14.5

* Drop -UseWindowsPowerShell fallback

* Manually install yarn

* Upgrade to .NET Hosting Bundle 10.0.8

* Change files

* Fix change file

* Add temp npm install yarn in templates

* Test yarn location

* update

* update

* TEMPORARILY revert agent image

* Print yarn version in setup

* Revert "TEMPORARILY revert agent image"

This reverts commit 7c175e1.

* update

* update

* update

* Upgrade to msbuildVersion: 18.0

* Update Google test adapter location

* Remove unused statement

* Remove probing tasks

* Upgrade to VSTest@3

* Upgrade more projects and scripts to VS 2026

* Explicitly set vstest.console location

* Install midgard-yarn and verdaccio in-place

* Fix yarn version

* Update node-tests version

* Use pwsh in Add-AppDevPackage

* Make WindowsStoreAppUtils use PowerShell 7

* Update snapshot values

* Update snapshot from failing x86 run

* Use the --tag argument for verdaccio under Node 24

* Ignore/warn on unstable click test

* Enable WMIC for RN Doctor

* Disable RN doctor until it drops WMIC

* Add rnw-img-vs2026-node24.json (#16224)

* Update CI verdaccio to 6.7.2 (#16223)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005 (#16225)

* Upgrade to Microsoft.WindowsAppSDK 1.8.260508005

* Change files

* fix: WebSocket binaryType handling — stop unconditional Blob interception of binary messages (#16173)

* blob support (#8)

* blob support

* pr comments

* pr comments

* Update DefaultBlobResource.cpp

* Create react-native-windows-c3827e14-777b-475a-bf00-dc169bf89f3d.json

* Add WebSocketArrayBuffer headless test (#9)

* Add WebSocketArrayBuffer headless test

* Skip test by default

* pr comments

* Update overrides (#10)

---------

Co-authored-by: Julio César Rocha <JunielKatarn@users.noreply.github.com>

* Upgrade projects to .NET 10 (#16226)

* Upgrade projects to .NET 10

* Upgrade lock files

* Change files

* Update yarn lock

* Re-introduce JS Desktop integration tests (#16228)

* Remove redundant condition Desktop.IntegrationTests.SkipRNTester

Modify Desktop.IntegrationTests.Filter instead.

* Re-introduce WebSocket and WebSocketBlob tests

* Make WSBlob test compare contents

* Rename method to RunTest

* Handle initial message from default endpoint

* Change files

* Migrate XHR test

* Port Fetch test

* Port Blob test

* WebSocketMultipleSendTest

* Remove JS WebSocket servers

* Skip in CI for now

* Update yarn lock

* Remove ban-types

* Fix DynamicReaderWriterTests

* Use WinRT coroutine types for UwpScriptStore

* clang format

* yarn lint

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Gordon MacMaster <31481849+gmacmaster@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants