From 6b672c57f83a6cb21191dc6656d097c73b37aae5 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 3 Apr 2026 15:00:23 -0700 Subject: [PATCH 01/64] Ran NuGetRestoreForceEvaluateAllSolutions.ps1 --- vnext/FollyWin32/packages.lock.json | 26 -- .../packages.experimentalwinui3.lock.json | 194 ------------ .../packages.lock.json | 194 ------------ .../packages.experimentalwinui3.lock.json | 289 ------------------ .../packages.lock.json | 289 ------------------ vnext/fmt/packages.lock.json | 13 - 6 files changed, 1005 deletions(-) delete mode 100644 vnext/FollyWin32/packages.lock.json delete mode 100644 vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json delete mode 100644 vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json delete mode 100644 vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json delete mode 100644 vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json delete mode 100644 vnext/fmt/packages.lock.json diff --git a/vnext/FollyWin32/packages.lock.json b/vnext/FollyWin32/packages.lock.json deleted file mode 100644 index 8b50ae9b2c3..00000000000 --- a/vnext/FollyWin32/packages.lock.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Transitive", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "fmt": { - "type": "Project" - }, - "folly": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )", - "fmt": "[1.0.0, )" - } - } - }, - "native,Version=v0.0/win": {}, - "native,Version=v0.0/win-arm64": {}, - "native,Version=v0.0/win-x64": {}, - "native,Version=v0.0/win-x86": {} - } -} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json deleted file mode 100644 index 37e573dcf94..00000000000 --- a/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { - "type": "Direct", - "requested": "[1.8.1.7, )", - "resolved": "1.8.1.7", - "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" - }, - "Microsoft.Windows.CppWinRT": { - "type": "Direct", - "requested": "[2.0.230706.1, )", - "resolved": "2.0.230706.1", - "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Direct", - "requested": "[2.0.0-experimental3, )", - "resolved": "2.0.0-experimental3", - "contentHash": "eP4XWWccngqnwyJVTYbdlVDyUyFW7EintimqOyq3ttk/h4dCwvW0FNTjq6qvnzkmWKiSqoXau/d5Dy27wSAKpg==", - "dependencies": { - "Microsoft.WindowsAppSDK.AI": "[2.0.57-experimental]", - "Microsoft.WindowsAppSDK.Base": "[2.0.0-experimental]", - "Microsoft.WindowsAppSDK.DWrite": "[2.0.0-experimental]", - "Microsoft.WindowsAppSDK.Foundation": "[2.0.8-experimental]", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "[2.0.3-experimental]", - "Microsoft.WindowsAppSDK.ML": "[2.0.44-experimental]", - "Microsoft.WindowsAppSDK.Runtime": "[2.0.0-experimental3]", - "Microsoft.WindowsAppSDK.Widgets": "[2.0.2-experimental]", - "Microsoft.WindowsAppSDK.WinUI": "[2.0.3-experimental]" - } - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.26100.4654", - "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" - }, - "Microsoft.Windows.SDK.BuildTools.MSIX": { - "type": "Transitive", - "resolved": "1.7.20250829.1", - "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" - }, - "Microsoft.WindowsAppSDK.AI": { - "type": "Transitive", - "resolved": "2.0.57-experimental", - "contentHash": "iCDkCyYFnryJjSRAVU3dmOyZaT3wO8COv+gCMImbDiRK6Kx047pYkJalrs/mOK2GbS8GVzgGAh4pOGaavzQmpw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.3-experimental" - } - }, - "Microsoft.WindowsAppSDK.Base": { - "type": "Transitive", - "resolved": "2.0.0-experimental", - "contentHash": "xQY42zJd61lTemFhaEl0GQ+YNHIPeeLnF5sM4lhKfOE0fX3aYCPPH5begOcJBhxsorCk90MGLvCq8dy058sBHg==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", - "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" - } - }, - "Microsoft.WindowsAppSDK.DWrite": { - "type": "Transitive", - "resolved": "2.0.0-experimental", - "contentHash": "B21j5wUaHab3LbyaOiGXCRlxW+D2Z7hnUZvALenLseEWDPUYyLvClZgXIYJd3s60J3B+CVQOAop9VQiOzRRquw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - }, - "Microsoft.WindowsAppSDK.InteractiveExperiences": { - "type": "Transitive", - "resolved": "2.0.3-experimental", - "contentHash": "Ck3QUVmo/KIKYK9Fo5YzL8eoUbjkRoBkGJdTQbcXVI61CFoxkwypnNckoyWyM6PfzS8KoxasHJbI8YSt+DNgfw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.ML": { - "type": "Transitive", - "resolved": "2.0.44-experimental", - "contentHash": "cnPfVfMfOhbVobG417zJVbWLA0P5QZHqrMBEDndQNOcgpUEtKJNY2mC+n3+SLr14P1mKPpzPP9vm/O9APsq4bw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental" - } - }, - "Microsoft.WindowsAppSDK.Runtime": { - "type": "Transitive", - "resolved": "2.0.0-experimental3", - "contentHash": "ikNSjK07rUFBWdYwkM/2sSQzxieYgRwVDSM7PJxMxIkSGSeAeba8jmDST05oJfDWtXOpNqfn4CTeaZ/6y8yfNw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.Widgets": { - "type": "Transitive", - "resolved": "2.0.2-experimental", - "contentHash": "+Trk3vVSlWxBWomjpUjwy5aOowkLHr2m7o7pVn58a03O2e46joBM3WdIGon/ns+BMKPow7knCS6ne6OBWGlVZg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.WinUI": { - "type": "Transitive", - "resolved": "2.0.3-experimental", - "contentHash": "OuvJXiPEOqBRlai79qi8f35JK/MfvsaIBGoIMNOA5pZznigPezR1XHjwrF1lWMDR3WwJV9Q/rnKWcWfXYw24/Q==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.3405.78", - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-arm64": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-x64": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-x86": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - } - } -} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json b/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json deleted file mode 100644 index 3077a54470f..00000000000 --- a/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { - "type": "Direct", - "requested": "[1.8.1.7, )", - "resolved": "1.8.1.7", - "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" - }, - "Microsoft.Windows.CppWinRT": { - "type": "Direct", - "requested": "[2.0.230706.1, )", - "resolved": "2.0.230706.1", - "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Direct", - "requested": "[1.8.260209005, )", - "resolved": "1.8.260209005", - "contentHash": "AGHOiZcrDrpaxpHfEFKlI8MVnibfbSixI5DlbU6ozP/9dyWN5FkTFowg+dEOnaFRCnOzTSAjBQ1HuS4lAO+aMQ==", - "dependencies": { - "Microsoft.WindowsAppSDK.AI": "[1.8.47]", - "Microsoft.WindowsAppSDK.Base": "[1.8.251216001]", - "Microsoft.WindowsAppSDK.DWrite": "[1.8.25122902]", - "Microsoft.WindowsAppSDK.Foundation": "[1.8.260203002]", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "[1.8.260125001]", - "Microsoft.WindowsAppSDK.ML": "[1.8.2124]", - "Microsoft.WindowsAppSDK.Runtime": "[1.8.260209005]", - "Microsoft.WindowsAppSDK.Widgets": "[1.8.251231004]", - "Microsoft.WindowsAppSDK.WinUI": "[1.8.260204000]" - } - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.26100.4654", - "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" - }, - "Microsoft.Windows.SDK.BuildTools.MSIX": { - "type": "Transitive", - "resolved": "1.7.20250829.1", - "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" - }, - "Microsoft.WindowsAppSDK.AI": { - "type": "Transitive", - "resolved": "1.8.47", - "contentHash": "9il8KT8WR4T826hnm3M/USZTkPtVXFGE0IztmE1l7H9DPYsa3QHEUgGHFHQg88fsMjdr3vhyMvs23AB+1IYF1w==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" - } - }, - "Microsoft.WindowsAppSDK.Base": { - "type": "Transitive", - "resolved": "1.8.251216001", - "contentHash": "PS1wriuFknz3W2F2P/e6RvOTM35w89Lsj/f0QmUEPrJjKnc+jM0JLX1vfdytI14y1gNRUTm9uclwP0aH/SVU5w==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", - "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" - } - }, - "Microsoft.WindowsAppSDK.DWrite": { - "type": "Transitive", - "resolved": "1.8.25122902", - "contentHash": "zFNn07i7Cyz62Y8FnPQAyzeZK7ww3m9t42i9pzy4C04pNbyUDQ4fG7pB6VSh6n4EyFuYtuFQuDzt4mKmXFrkrg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - }, - "Microsoft.WindowsAppSDK.InteractiveExperiences": { - "type": "Transitive", - "resolved": "1.8.260125001", - "contentHash": "CTGFd1zhIDbnOltZ6piPvpNXFR1OaNyW3vHvhaILzpGziAgj5DPuVnU3PUp1p5iOBd382FLCBVM6nEPyu/LCOA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.ML": { - "type": "Transitive", - "resolved": "1.8.2124", - "contentHash": "l7ZptLbvOWHEJgxZtCQhUzDNCakNcqSJyAa7DNXBLKxGIUMDqq9LnWyYRZZFNQwN7hRfDAR8fEAblP1UHYHGgw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" - } - }, - "Microsoft.WindowsAppSDK.Runtime": { - "type": "Transitive", - "resolved": "1.8.260209005", - "contentHash": "aZjMu/glUGjzACowzzhj9drn/Ddfp1yA+f7CFXpkiSk6iZ2x32vhKfcqT64RpJ6R+Dj1hl9/79aXFhIavYNj9g==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.Widgets": { - "type": "Transitive", - "resolved": "1.8.251231004", - "contentHash": "bIWqQYR8DCoB1SoPOMil5AtgtkTn438wJTdpsHgyO/6o7Eh7PMP5BzrR0KbDsFqy+4LhPWQ4vtwko5k93fECcA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.WinUI": { - "type": "Transitive", - "resolved": "1.8.260204000", - "contentHash": "DSpA01+iPXwky4O1uZCrdClSi2aRIYTIhmsTeC1EsJmWBFpSirwNAg4EGHejijV6u4ZVkTdyv3px0Y2P3fp72Q==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.3179.45", - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260203002", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-arm64": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-x64": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-x86": { - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - } - } -} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json deleted file mode 100644 index 8e3e1e770bf..00000000000 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json +++ /dev/null @@ -1,289 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Direct", - "requested": "[1.83.0, )", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { - "type": "Direct", - "requested": "[1.8.1.7, )", - "resolved": "1.8.1.7", - "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" - }, - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Windows.CppWinRT": { - "type": "Direct", - "requested": "[2.0.230706.1, )", - "resolved": "2.0.230706.1", - "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Direct", - "requested": "[2.0.0-experimental3, )", - "resolved": "2.0.0-experimental3", - "contentHash": "eP4XWWccngqnwyJVTYbdlVDyUyFW7EintimqOyq3ttk/h4dCwvW0FNTjq6qvnzkmWKiSqoXau/d5Dy27wSAKpg==", - "dependencies": { - "Microsoft.WindowsAppSDK.AI": "[2.0.57-experimental]", - "Microsoft.WindowsAppSDK.Base": "[2.0.0-experimental]", - "Microsoft.WindowsAppSDK.DWrite": "[2.0.0-experimental]", - "Microsoft.WindowsAppSDK.Foundation": "[2.0.8-experimental]", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "[2.0.3-experimental]", - "Microsoft.WindowsAppSDK.ML": "[2.0.44-experimental]", - "Microsoft.WindowsAppSDK.Runtime": "[2.0.0-experimental3]", - "Microsoft.WindowsAppSDK.Widgets": "[2.0.2-experimental]", - "Microsoft.WindowsAppSDK.WinUI": "[2.0.3-experimental]" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.JavaScript.Hermes": { - "type": "Transitive", - "resolved": "0.0.0-2512.22001-bc3d0ed7", - "contentHash": "aMuCKrIwkCAnT56+oKqmxgfIaAHlKRVt8IiG/jtMbG01QH1mLPwL7wP89jRMsYSJzikW96trqgpUllZZa3O+Qw==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.26100.4654", - "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" - }, - "Microsoft.Windows.SDK.BuildTools.MSIX": { - "type": "Transitive", - "resolved": "1.7.20250829.1", - "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" - }, - "Microsoft.WindowsAppSDK.AI": { - "type": "Transitive", - "resolved": "2.0.57-experimental", - "contentHash": "iCDkCyYFnryJjSRAVU3dmOyZaT3wO8COv+gCMImbDiRK6Kx047pYkJalrs/mOK2GbS8GVzgGAh4pOGaavzQmpw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.3-experimental" - } - }, - "Microsoft.WindowsAppSDK.Base": { - "type": "Transitive", - "resolved": "2.0.0-experimental", - "contentHash": "xQY42zJd61lTemFhaEl0GQ+YNHIPeeLnF5sM4lhKfOE0fX3aYCPPH5begOcJBhxsorCk90MGLvCq8dy058sBHg==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", - "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" - } - }, - "Microsoft.WindowsAppSDK.DWrite": { - "type": "Transitive", - "resolved": "2.0.0-experimental", - "contentHash": "B21j5wUaHab3LbyaOiGXCRlxW+D2Z7hnUZvALenLseEWDPUYyLvClZgXIYJd3s60J3B+CVQOAop9VQiOzRRquw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - }, - "Microsoft.WindowsAppSDK.InteractiveExperiences": { - "type": "Transitive", - "resolved": "2.0.3-experimental", - "contentHash": "Ck3QUVmo/KIKYK9Fo5YzL8eoUbjkRoBkGJdTQbcXVI61CFoxkwypnNckoyWyM6PfzS8KoxasHJbI8YSt+DNgfw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.ML": { - "type": "Transitive", - "resolved": "2.0.44-experimental", - "contentHash": "cnPfVfMfOhbVobG417zJVbWLA0P5QZHqrMBEDndQNOcgpUEtKJNY2mC+n3+SLr14P1mKPpzPP9vm/O9APsq4bw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental" - } - }, - "Microsoft.WindowsAppSDK.Runtime": { - "type": "Transitive", - "resolved": "2.0.0-experimental3", - "contentHash": "ikNSjK07rUFBWdYwkM/2sSQzxieYgRwVDSM7PJxMxIkSGSeAeba8jmDST05oJfDWtXOpNqfn4CTeaZ/6y8yfNw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.Widgets": { - "type": "Transitive", - "resolved": "2.0.2-experimental", - "contentHash": "+Trk3vVSlWxBWomjpUjwy5aOowkLHr2m7o7pVn58a03O2e46joBM3WdIGon/ns+BMKPow7knCS6ne6OBWGlVZg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.WinUI": { - "type": "Transitive", - "resolved": "2.0.3-experimental", - "contentHash": "OuvJXiPEOqBRlai79qi8f35JK/MfvsaIBGoIMNOA5pZznigPezR1XHjwrF1lWMDR3WwJV9Q/rnKWcWfXYw24/Q==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.3405.78", - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - }, - "common": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )" - } - }, - "fmt": { - "type": "Project" - }, - "folly": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )", - "fmt": "[1.0.0, )" - } - }, - "microsoft.reactnative": { - "type": "Project", - "dependencies": { - "Common": "[1.0.0, )", - "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2512.22001-bc3d0ed7, )", - "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.WindowsAppSDK": "[2.0.0-experimental3, )", - "ReactCommon": "[1.0.0, )", - "boost": "[1.83.0, )" - } - }, - "reactcommon": { - "type": "Project", - "dependencies": { - "Folly": "[1.0.0, )", - "boost": "[1.83.0, )" - } - } - }, - "native,Version=v0.0/win": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-arm64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-x64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-x86": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - } - } -} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json deleted file mode 100644 index 102cfd1a4ab..00000000000 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json +++ /dev/null @@ -1,289 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Direct", - "requested": "[1.83.0, )", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { - "type": "Direct", - "requested": "[1.8.1.7, )", - "resolved": "1.8.1.7", - "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" - }, - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Windows.CppWinRT": { - "type": "Direct", - "requested": "[2.0.230706.1, )", - "resolved": "2.0.230706.1", - "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Direct", - "requested": "[1.8.260209005, )", - "resolved": "1.8.260209005", - "contentHash": "AGHOiZcrDrpaxpHfEFKlI8MVnibfbSixI5DlbU6ozP/9dyWN5FkTFowg+dEOnaFRCnOzTSAjBQ1HuS4lAO+aMQ==", - "dependencies": { - "Microsoft.WindowsAppSDK.AI": "[1.8.47]", - "Microsoft.WindowsAppSDK.Base": "[1.8.251216001]", - "Microsoft.WindowsAppSDK.DWrite": "[1.8.25122902]", - "Microsoft.WindowsAppSDK.Foundation": "[1.8.260203002]", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "[1.8.260125001]", - "Microsoft.WindowsAppSDK.ML": "[1.8.2124]", - "Microsoft.WindowsAppSDK.Runtime": "[1.8.260209005]", - "Microsoft.WindowsAppSDK.Widgets": "[1.8.251231004]", - "Microsoft.WindowsAppSDK.WinUI": "[1.8.260204000]" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.JavaScript.Hermes": { - "type": "Transitive", - "resolved": "0.0.0-2512.22001-bc3d0ed7", - "contentHash": "aMuCKrIwkCAnT56+oKqmxgfIaAHlKRVt8IiG/jtMbG01QH1mLPwL7wP89jRMsYSJzikW96trqgpUllZZa3O+Qw==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.26100.4654", - "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" - }, - "Microsoft.Windows.SDK.BuildTools.MSIX": { - "type": "Transitive", - "resolved": "1.7.20250829.1", - "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" - }, - "Microsoft.WindowsAppSDK.AI": { - "type": "Transitive", - "resolved": "1.8.47", - "contentHash": "9il8KT8WR4T826hnm3M/USZTkPtVXFGE0IztmE1l7H9DPYsa3QHEUgGHFHQg88fsMjdr3vhyMvs23AB+1IYF1w==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" - } - }, - "Microsoft.WindowsAppSDK.Base": { - "type": "Transitive", - "resolved": "1.8.251216001", - "contentHash": "PS1wriuFknz3W2F2P/e6RvOTM35w89Lsj/f0QmUEPrJjKnc+jM0JLX1vfdytI14y1gNRUTm9uclwP0aH/SVU5w==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", - "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" - } - }, - "Microsoft.WindowsAppSDK.DWrite": { - "type": "Transitive", - "resolved": "1.8.25122902", - "contentHash": "zFNn07i7Cyz62Y8FnPQAyzeZK7ww3m9t42i9pzy4C04pNbyUDQ4fG7pB6VSh6n4EyFuYtuFQuDzt4mKmXFrkrg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - }, - "Microsoft.WindowsAppSDK.InteractiveExperiences": { - "type": "Transitive", - "resolved": "1.8.260125001", - "contentHash": "CTGFd1zhIDbnOltZ6piPvpNXFR1OaNyW3vHvhaILzpGziAgj5DPuVnU3PUp1p5iOBd382FLCBVM6nEPyu/LCOA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.ML": { - "type": "Transitive", - "resolved": "1.8.2124", - "contentHash": "l7ZptLbvOWHEJgxZtCQhUzDNCakNcqSJyAa7DNXBLKxGIUMDqq9LnWyYRZZFNQwN7hRfDAR8fEAblP1UHYHGgw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" - } - }, - "Microsoft.WindowsAppSDK.Runtime": { - "type": "Transitive", - "resolved": "1.8.260209005", - "contentHash": "aZjMu/glUGjzACowzzhj9drn/Ddfp1yA+f7CFXpkiSk6iZ2x32vhKfcqT64RpJ6R+Dj1hl9/79aXFhIavYNj9g==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.Widgets": { - "type": "Transitive", - "resolved": "1.8.251231004", - "contentHash": "bIWqQYR8DCoB1SoPOMil5AtgtkTn438wJTdpsHgyO/6o7Eh7PMP5BzrR0KbDsFqy+4LhPWQ4vtwko5k93fECcA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.WinUI": { - "type": "Transitive", - "resolved": "1.8.260204000", - "contentHash": "DSpA01+iPXwky4O1uZCrdClSi2aRIYTIhmsTeC1EsJmWBFpSirwNAg4EGHejijV6u4ZVkTdyv3px0Y2P3fp72Q==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.3179.45", - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260203002", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - }, - "common": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )" - } - }, - "fmt": { - "type": "Project" - }, - "folly": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )", - "fmt": "[1.0.0, )" - } - }, - "microsoft.reactnative": { - "type": "Project", - "dependencies": { - "Common": "[1.0.0, )", - "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2512.22001-bc3d0ed7, )", - "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.WindowsAppSDK": "[1.8.260209005, )", - "ReactCommon": "[1.0.0, )", - "boost": "[1.83.0, )" - } - }, - "reactcommon": { - "type": "Project", - "dependencies": { - "Folly": "[1.0.0, )", - "boost": "[1.83.0, )" - } - } - }, - "native,Version=v0.0/win": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-arm64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-x64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-x86": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - } - } -} \ No newline at end of file diff --git a/vnext/fmt/packages.lock.json b/vnext/fmt/packages.lock.json deleted file mode 100644 index a31237b580e..00000000000 --- a/vnext/fmt/packages.lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": {}, - "native,Version=v0.0/win10-arm": {}, - "native,Version=v0.0/win10-arm-aot": {}, - "native,Version=v0.0/win10-arm64-aot": {}, - "native,Version=v0.0/win10-x64": {}, - "native,Version=v0.0/win10-x64-aot": {}, - "native,Version=v0.0/win10-x86": {}, - "native,Version=v0.0/win10-x86-aot": {} - } -} \ No newline at end of file From ea678bd6ff7a2bcd9d6f8cc0e59f739c82710276 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Wed, 29 Apr 2026 18:29:04 -0700 Subject: [PATCH 02/64] Define installNuGetPackages task; Install pwsh 7.6.1 --- vnext/just-task.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/vnext/just-task.js b/vnext/just-task.js index e3fb44c76b1..94a4cafa629 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -84,12 +84,19 @@ registerNuGetRestoreTask({ scriptArguments: ['-SkipLockDeletion'], }); +function installNuGetPackagesTask() { + execSync('nuget install PowerShell -Version 7.6.1', {env: process.env}); +} + +task('installNuGetPackages', installNuGetPackagesTask); + task( 'build', series( condition('clean', () => argv().clean), 'copyRNLibraries', 'copyReadmeAndLicenseFromRoot', + 'installNuGetPackages', 'layoutMSRNCxx', 'compileTsPlatformOverrides', 'restoreNuGetPackages', From 2efbed66ef8265d69914a7cc4c05ff037a6e9d3c Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Wed, 29 Apr 2026 19:23:27 -0700 Subject: [PATCH 03/64] Replace powershell.exe with pwsh.exe --- .ado/scripts/build.js | 2 +- .../cli/src/utils/commandWithProgress.ts | 47 ++++++++++++++++++- vnext/just-task.js | 33 +++++++++++-- 3 files changed, 76 insertions(+), 6 deletions(-) diff --git a/.ado/scripts/build.js b/.ado/scripts/build.js index 47df62d2c65..db46551eba9 100644 --- a/.ado/scripts/build.js +++ b/.ado/scripts/build.js @@ -101,7 +101,7 @@ function ensureNuGet(toolsPath) { ensureDir(toolsPath); console.log(`Downloading nuget.exe to: ${localNuGet}`); execSync( - `powershell.exe -NoLogo -NoProfile -Command ` + + `pwsh.exe -NoLogo -NoProfile -Command ` + `"[Net.ServicePointManager]::SecurityProtocol = ` + `[Net.SecurityProtocolType]::Tls12; ` + `Invoke-WebRequest -Uri 'https://dist.nuget.org/win-x86-commandline/latest/nuget.exe' ` + diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 74e8bec3d0c..8c7577e8e48 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -4,7 +4,10 @@ * @format */ -import {spawn, SpawnOptions} from 'child_process'; +import {execSync, spawn, SpawnOptions} from 'child_process'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import ora from 'ora'; import spinners from 'cli-spinners'; import chalk from 'chalk'; @@ -47,7 +50,47 @@ export function newSpinner(text: string) { return ora(options).start(); } -export const powershell = `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; +function getGlobalNuGetPackagesFolder(): string { + if (process.env.NUGET_PACKAGES) { + return process.env.NUGET_PACKAGES; + } + try { + const output = execSync('nuget locals global-packages -list', { + encoding: 'utf8', + }).trim(); + const match = output.match(/global-packages:\s*(.+)/i); + if (match) { + return match[1].trim(); + } + } catch {} + return path.join(os.homedir(), '.nuget', 'packages'); +} + +function findPwsh(): string { + const nugetPackages = getGlobalNuGetPackagesFolder(); + const nugetPwsh = path.join( + nugetPackages, + 'PowerShell.7.6.1', + 'tools', + 'net8.0', + 'any', + 'pwsh.exe', + ); + if (fs.existsSync(nugetPwsh)) { + return nugetPwsh; + } + + try { + const found = execSync('where pwsh.exe', {encoding: 'utf8'}).trim(); + if (found) { + return found.split(/\r?\n/)[0]; + } + } catch {} + + return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; +} + +export const powershell = findPwsh(); export async function runPowerShellScriptFunction( taskDescription: string, diff --git a/vnext/just-task.js b/vnext/just-task.js index 94a4cafa629..39ad87cae56 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -44,11 +44,34 @@ function codegen(test) { ); } +function getGlobalNuGetPackagesFolder() { + if (process.env.NUGET_PACKAGES) { + return process.env.NUGET_PACKAGES; + } + try { + const output = execSync('nuget locals global-packages -list', { + encoding: 'utf8', + }); + const match = output.match(/global-packages:\s*(.+)/i); + if (match) { + return match[1].trim(); + } + } catch {} + return path.join(require('os').homedir(), '.nuget', 'packages'); +} + function layoutMSRNCxx() { if (require('os').platform() === 'win32') { - const powershell = `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; + const powershell = path.join( + getGlobalNuGetPackagesFolder(), + 'PowerShell.7.6.1', + 'tools', + 'net8.0', + 'any', + 'pwsh.exe', + ); execSync( - `${powershell} -NoProfile .\\Scripts\\Tfs\\Layout-MSRN-Headers.ps1 -GenerateLocalCxx`, + `"${powershell}" -NoProfile .\\Scripts\\Tfs\\Layout-MSRN-Headers.ps1 -GenerateLocalCxx`, { env: process.env, }, @@ -85,7 +108,11 @@ registerNuGetRestoreTask({ }); function installNuGetPackagesTask() { - execSync('nuget install PowerShell -Version 7.6.1', {env: process.env}); + const globalPackages = getGlobalNuGetPackagesFolder(); + execSync( + `nuget install PowerShell -Version 7.6.1 -OutputDirectory "${globalPackages}"`, + {env: process.env}, + ); } task('installNuGetPackages', installNuGetPackagesTask); From fd7192d4eeae1fb0b59948811d5f840c4b9707cf Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Wed, 29 Apr 2026 19:24:26 -0700 Subject: [PATCH 04/64] Change files --- ...e-windows-cli-d0909d53-2984-4eff-bcf6-fe1702c03277.json | 7 +++++++ ...ative-windows-f8669931-74f3-4c8e-a1d1-ecb19860ee42.json | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 change/@react-native-windows-cli-d0909d53-2984-4eff-bcf6-fe1702c03277.json create mode 100644 change/react-native-windows-f8669931-74f3-4c8e-a1d1-ecb19860ee42.json diff --git a/change/@react-native-windows-cli-d0909d53-2984-4eff-bcf6-fe1702c03277.json b/change/@react-native-windows-cli-d0909d53-2984-4eff-bcf6-fe1702c03277.json new file mode 100644 index 00000000000..46065e97e3a --- /dev/null +++ b/change/@react-native-windows-cli-d0909d53-2984-4eff-bcf6-fe1702c03277.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Upgrade to PowerShell 7", + "packageName": "@react-native-windows/cli", + "email": "julio.rocha@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-f8669931-74f3-4c8e-a1d1-ecb19860ee42.json b/change/react-native-windows-f8669931-74f3-4c8e-a1d1-ecb19860ee42.json new file mode 100644 index 00000000000..f1e3abb1df6 --- /dev/null +++ b/change/react-native-windows-f8669931-74f3-4c8e-a1d1-ecb19860ee42.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Upgrade to PowerShell 7", + "packageName": "react-native-windows", + "email": "julio.rocha@microsoft.com", + "dependentChangeType": "patch" +} From 47d5250360814991ee6c29890acd18d1ab8f4873 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 00:16:02 -0700 Subject: [PATCH 05/64] CI: Ensure NuGet is availabe before `yarn install` --- .ado/templates/yarn-install.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.ado/templates/yarn-install.yml b/.ado/templates/yarn-install.yml index ad9ce780eff..b79cd60c9bc 100644 --- a/.ado/templates/yarn-install.yml +++ b/.ado/templates/yarn-install.yml @@ -4,6 +4,10 @@ parameters: default: . steps: + - task: NuGetToolInstaller@1 + inputs: + versionSpec: ">=5.8.0" + - script: yarn --cwd ${{ parameters.workingDirectory }} install --immutable displayName: yarn install (immutable) retryCountOnTaskFailure: 2 From 0b2e3c934cf102885e84d5ade6ede4cda4ac2977 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 17:31:41 -0700 Subject: [PATCH 06/64] Add NuGetAuthenticate before yarn install --- .ado/templates/yarn-install.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.ado/templates/yarn-install.yml b/.ado/templates/yarn-install.yml index b79cd60c9bc..826595f2c75 100644 --- a/.ado/templates/yarn-install.yml +++ b/.ado/templates/yarn-install.yml @@ -8,6 +8,11 @@ steps: inputs: versionSpec: ">=5.8.0" + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate Internal WinAppSDK Feed' + inputs: + nuGetServiceConnections: 'WinAppSDK Experimental NuGet for RNW' + - script: yarn --cwd ${{ parameters.workingDirectory }} install --immutable displayName: yarn install (immutable) retryCountOnTaskFailure: 2 From 0756f2155198ca8909a1c48048fa31ce76b25fdf Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 18:37:39 -0700 Subject: [PATCH 07/64] Do not download PowerShell on CI/CD environments --- .ado/templates/yarn-install.yml | 9 ------ .../cli/src/utils/commandWithProgress.ts | 25 +++++++++------- vnext/just-task.js | 29 ++++++++++++++++--- 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/.ado/templates/yarn-install.yml b/.ado/templates/yarn-install.yml index 826595f2c75..ad9ce780eff 100644 --- a/.ado/templates/yarn-install.yml +++ b/.ado/templates/yarn-install.yml @@ -4,15 +4,6 @@ parameters: default: . steps: - - task: NuGetToolInstaller@1 - inputs: - versionSpec: ">=5.8.0" - - - task: NuGetAuthenticate@1 - displayName: 'NuGet Authenticate Internal WinAppSDK Feed' - inputs: - nuGetServiceConnections: 'WinAppSDK Experimental NuGet for RNW' - - script: yarn --cwd ${{ parameters.workingDirectory }} install --immutable displayName: yarn install (immutable) retryCountOnTaskFailure: 2 diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 8c7577e8e48..dc48b3b72ae 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -67,17 +67,20 @@ function getGlobalNuGetPackagesFolder(): string { } function findPwsh(): string { - const nugetPackages = getGlobalNuGetPackagesFolder(); - const nugetPwsh = path.join( - nugetPackages, - 'PowerShell.7.6.1', - 'tools', - 'net8.0', - 'any', - 'pwsh.exe', - ); - if (fs.existsSync(nugetPwsh)) { - return nugetPwsh; + // Build agents already have PowerShell (pwsh) installed + if (!process.env.TF_BUILD) { + const nugetPackages = getGlobalNuGetPackagesFolder(); + const nugetPwsh = path.join( + nugetPackages, + 'PowerShell.7.6.1', + 'tools', + 'net8.0', + 'any', + 'pwsh.exe', + ); + if (fs.existsSync(nugetPwsh)) { + return nugetPwsh; + } } try { diff --git a/vnext/just-task.js b/vnext/just-task.js index 39ad87cae56..2e0c1faf354 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -60,16 +60,37 @@ function getGlobalNuGetPackagesFolder() { return path.join(require('os').homedir(), '.nuget', 'packages'); } -function layoutMSRNCxx() { - if (require('os').platform() === 'win32') { - const powershell = path.join( - getGlobalNuGetPackagesFolder(), +function findPwsh(): string { + // Build agents already have PowerShell (pwsh) installed + if (!process.env.TF_BUILD) { + const nugetPackages = getGlobalNuGetPackagesFolder(); + const nugetPwsh = path.join( + nugetPackages, 'PowerShell.7.6.1', 'tools', 'net8.0', 'any', 'pwsh.exe', ); + if (fs.existsSync(nugetPwsh)) { + return nugetPwsh; + } + } + + try { + const found = execSync('where pwsh.exe', { encoding: 'utf8' }).trim(); + if (found) { + return found.split(/\r?\n/)[0]; + } + } catch { } + + return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; +} + +const powershell = findPwsh(); + +function layoutMSRNCxx() { + if (require('os').platform() === 'win32') { execSync( `"${powershell}" -NoProfile .\\Scripts\\Tfs\\Layout-MSRN-Headers.ps1 -GenerateLocalCxx`, { From a09c51ac30e8d89fccb7a93b87923c057c5e0ee1 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 20:12:22 -0700 Subject: [PATCH 08/64] Fix just-task JS syntax --- vnext/just-task.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vnext/just-task.js b/vnext/just-task.js index 2e0c1faf354..792a1397e37 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -60,7 +60,7 @@ function getGlobalNuGetPackagesFolder() { return path.join(require('os').homedir(), '.nuget', 'packages'); } -function findPwsh(): string { +function findPwsh() { // Build agents already have PowerShell (pwsh) installed if (!process.env.TF_BUILD) { const nugetPackages = getGlobalNuGetPackagesFolder(); From d7257de1a1c60f5c5d6acf42eaa5340e3f4cb9c8 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 20:12:36 -0700 Subject: [PATCH 09/64] Add dotnet-tools manifest --- dotnet-tools.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 dotnet-tools.json diff --git a/dotnet-tools.json b/dotnet-tools.json new file mode 100644 index 00000000000..2468cbda2de --- /dev/null +++ b/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "powershell": { + "version": "7.6.1", + "commands": [ + "pwsh" + ] + } + } +} \ No newline at end of file From dc22ba367fe09707482237e8e15d552f5eeda927 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 21:29:32 -0700 Subject: [PATCH 10/64] Fix pwsh.exe tool path --- .../cli/src/utils/commandWithProgress.ts | 6 ++++-- dotnet-tools.json => vnext/dotnet-tools.json | 0 vnext/just-task.js | 15 ++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) rename dotnet-tools.json => vnext/dotnet-tools.json (100%) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index dc48b3b72ae..31698cdf0c0 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -72,10 +72,12 @@ function findPwsh(): string { const nugetPackages = getGlobalNuGetPackagesFolder(); const nugetPwsh = path.join( nugetPackages, - 'PowerShell.7.6.1', + 'PowerShell', + '7.6.1', 'tools', - 'net8.0', + 'net10.0', 'any', + 'win', 'pwsh.exe', ); if (fs.existsSync(nugetPwsh)) { diff --git a/dotnet-tools.json b/vnext/dotnet-tools.json similarity index 100% rename from dotnet-tools.json rename to vnext/dotnet-tools.json diff --git a/vnext/just-task.js b/vnext/just-task.js index 792a1397e37..384235e9ff9 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -66,10 +66,12 @@ function findPwsh() { const nugetPackages = getGlobalNuGetPackagesFolder(); const nugetPwsh = path.join( nugetPackages, - 'PowerShell.7.6.1', + 'PowerShell', + '7.6.1', 'tools', - 'net8.0', + 'net10.0', 'any', + 'win', 'pwsh.exe', ); if (fs.existsSync(nugetPwsh)) { @@ -128,15 +130,14 @@ registerNuGetRestoreTask({ scriptArguments: ['-SkipLockDeletion'], }); -function installNuGetPackagesTask() { - const globalPackages = getGlobalNuGetPackagesFolder(); +function installDotnetToolsTask() { execSync( - `nuget install PowerShell -Version 7.6.1 -OutputDirectory "${globalPackages}"`, + `dotnet tool restore`, {env: process.env}, ); } -task('installNuGetPackages', installNuGetPackagesTask); +task('installDotnetTools', installDotnetToolsTask); task( 'build', @@ -144,7 +145,7 @@ task( condition('clean', () => argv().clean), 'copyRNLibraries', 'copyReadmeAndLicenseFromRoot', - 'installNuGetPackages', + 'installDotnetTools', 'layoutMSRNCxx', 'compileTsPlatformOverrides', 'restoreNuGetPackages', From 6c4435802f72916b05443cb94dd50a967ff05cd8 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 23:03:23 -0700 Subject: [PATCH 11/64] Resolve dotnet-tools.json path --- vnext/just-task.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vnext/just-task.js b/vnext/just-task.js index 384235e9ff9..d5983dedaf0 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -132,7 +132,7 @@ registerNuGetRestoreTask({ function installDotnetToolsTask() { execSync( - `dotnet tool restore`, + `dotnet tool restore --tool-manifest ${path.resolve(__dirname, 'dotnet-tools.json')}`, {env: process.env}, ); } From 58791b964793ed2a7ad2681f022368fc0ec30f1b Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Thu, 30 Apr 2026 23:51:41 -0700 Subject: [PATCH 12/64] Use dotnet for `nuget locals` --- .../@react-native-windows/cli/src/utils/commandWithProgress.ts | 2 +- vnext/just-task.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 31698cdf0c0..215608d44df 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -55,7 +55,7 @@ function getGlobalNuGetPackagesFolder(): string { return process.env.NUGET_PACKAGES; } try { - const output = execSync('nuget locals global-packages -list', { + const output = execSync('dotnet.exe nuget locals global-packages --list', { encoding: 'utf8', }).trim(); const match = output.match(/global-packages:\s*(.+)/i); diff --git a/vnext/just-task.js b/vnext/just-task.js index d5983dedaf0..9232d948127 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -49,7 +49,7 @@ function getGlobalNuGetPackagesFolder() { return process.env.NUGET_PACKAGES; } try { - const output = execSync('nuget locals global-packages -list', { + const output = execSync('dotnet.exe nuget locals global-packages --list', { encoding: 'utf8', }); const match = output.match(/global-packages:\s*(.+)/i); From 69a6031aecf43d45841ba81c70ef463fc6f970a7 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 00:23:10 -0700 Subject: [PATCH 13/64] Use PWSH in nuget-restore-task.js --- .../just-task/nuget-restore-task.js | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/packages/@rnw-scripts/just-task/nuget-restore-task.js b/packages/@rnw-scripts/just-task/nuget-restore-task.js index d8b316a46b2..6469ce24bbb 100644 --- a/packages/@rnw-scripts/just-task/nuget-restore-task.js +++ b/packages/@rnw-scripts/just-task/nuget-restore-task.js @@ -51,12 +51,59 @@ function executeNuGetRestore(config) { `Restoring NuGet packages (log: ${path.relative(process.cwd(), logPath)})`, ); + function getGlobalNuGetPackagesFolder() { + if (process.env.NUGET_PACKAGES) { + return process.env.NUGET_PACKAGES; + } + try { + const output = execSync('dotnet.exe nuget locals global-packages --list', { + encoding: 'utf8', + }); + const match = output.match(/global-packages:\s*(.+)/i); + if (match) { + return match[1].trim(); + } + } catch {} + return path.join(require('os').homedir(), '.nuget', 'packages'); + } + + function findPwsh() { + // Build agents already have PowerShell (pwsh) installed + if (!process.env.TF_BUILD) { + const nugetPackages = getGlobalNuGetPackagesFolder(); + const nugetPwsh = path.join( + nugetPackages, + 'PowerShell', + '7.6.1', + 'tools', + 'net10.0', + 'any', + 'win', + 'pwsh.exe', + ); + if (fs.existsSync(nugetPwsh)) { + return nugetPwsh; + } + } + + try { + const found = execSync('where pwsh.exe', { encoding: 'utf8' }).trim(); + if (found) { + return found.split(/\r?\n/)[0]; + } + } catch { } + + return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; + } + + const powershell = findPwsh(); + const scriptArgs = config.scriptArguments.length ? ` ${config.scriptArguments.join(' ')}` : ''; const restoreCommand = `call ${quote( vsDevCmd, - )} && powershell -NoProfile -ExecutionPolicy Bypass -File ${quote( + )} && ${powershell} -NoProfile -ExecutionPolicy Bypass -File ${quote( config.scriptPath, )}${scriptArgs}`; const wrappedCommand = `${restoreCommand}`; From 582447c20d626a69a5f273240d121bbe0bdcb7ae Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 00:47:11 -0700 Subject: [PATCH 14/64] Break dependency loop in just-task --- .../@react-native-windows/cli/package.json | 1 + .../cli/src/utils/commandWithProgress.ts | 51 +------------- .../find-dotnet-tools/.eslintrc.js | 4 ++ .../find-dotnet-tools/.gitignore | 2 + .../find-dotnet-tools/package.json | 48 +++++++++++++ .../find-dotnet-tools/src/findDotnetTools.ts | 67 +++++++++++++++++++ .../find-dotnet-tools/tsconfig.json | 5 ++ .../just-task/nuget-restore-task.js | 46 +------------ vnext/just-task.js | 46 +------------ vnext/package.json | 1 + yarn.lock | 18 +++++ 11 files changed, 150 insertions(+), 139 deletions(-) create mode 100644 packages/@react-native-windows/find-dotnet-tools/.eslintrc.js create mode 100644 packages/@react-native-windows/find-dotnet-tools/.gitignore create mode 100644 packages/@react-native-windows/find-dotnet-tools/package.json create mode 100644 packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts create mode 100644 packages/@react-native-windows/find-dotnet-tools/tsconfig.json diff --git a/packages/@react-native-windows/cli/package.json b/packages/@react-native-windows/cli/package.json index b66c099b7f5..6d7a0a2846d 100644 --- a/packages/@react-native-windows/cli/package.json +++ b/packages/@react-native-windows/cli/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@react-native-windows/codegen": "0.0.0-canary.133", + "@react-native-windows/find-dotnet-tools": "0.0.0-canary.1", "@react-native-windows/fs": "^0.0.0-canary.72", "@react-native-windows/package-utils": "^0.0.0-canary.98", "@react-native-windows/telemetry": "^0.0.0-canary.133", diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 215608d44df..36e1f424872 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -4,10 +4,7 @@ * @format */ -import {execSync, spawn, SpawnOptions} from 'child_process'; -import fs from 'fs'; -import os from 'os'; -import path from 'path'; +import {spawn, SpawnOptions} from 'child_process'; import ora from 'ora'; import spinners from 'cli-spinners'; import chalk from 'chalk'; @@ -17,6 +14,7 @@ import { CodedErrors, CodedErrorType, } from '@react-native-windows/telemetry'; +import {findPwsh} from '@react-native-windows/find-dotnet-tools'; function setSpinnerText(spinner: ora.Ora, prefix: string, text: string) { text = prefix + spinnerString(text); @@ -50,51 +48,6 @@ export function newSpinner(text: string) { return ora(options).start(); } -function getGlobalNuGetPackagesFolder(): string { - if (process.env.NUGET_PACKAGES) { - return process.env.NUGET_PACKAGES; - } - try { - const output = execSync('dotnet.exe nuget locals global-packages --list', { - encoding: 'utf8', - }).trim(); - const match = output.match(/global-packages:\s*(.+)/i); - if (match) { - return match[1].trim(); - } - } catch {} - return path.join(os.homedir(), '.nuget', 'packages'); -} - -function findPwsh(): string { - // Build agents already have PowerShell (pwsh) installed - if (!process.env.TF_BUILD) { - const nugetPackages = getGlobalNuGetPackagesFolder(); - const nugetPwsh = path.join( - nugetPackages, - 'PowerShell', - '7.6.1', - 'tools', - 'net10.0', - 'any', - 'win', - 'pwsh.exe', - ); - if (fs.existsSync(nugetPwsh)) { - return nugetPwsh; - } - } - - try { - const found = execSync('where pwsh.exe', {encoding: 'utf8'}).trim(); - if (found) { - return found.split(/\r?\n/)[0]; - } - } catch {} - - return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; -} - export const powershell = findPwsh(); export async function runPowerShellScriptFunction( diff --git a/packages/@react-native-windows/find-dotnet-tools/.eslintrc.js b/packages/@react-native-windows/find-dotnet-tools/.eslintrc.js new file mode 100644 index 00000000000..35e0d115126 --- /dev/null +++ b/packages/@react-native-windows/find-dotnet-tools/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + extends: ['@rnw-scripts'], + parserOptions: {tsconfigRootDir : __dirname}, +}; diff --git a/packages/@react-native-windows/find-dotnet-tools/.gitignore b/packages/@react-native-windows/find-dotnet-tools/.gitignore new file mode 100644 index 00000000000..f42efbb9f7c --- /dev/null +++ b/packages/@react-native-windows/find-dotnet-tools/.gitignore @@ -0,0 +1,2 @@ +lib/ +lib-commonjs/ diff --git a/packages/@react-native-windows/find-dotnet-tools/package.json b/packages/@react-native-windows/find-dotnet-tools/package.json new file mode 100644 index 00000000000..15a5d587408 --- /dev/null +++ b/packages/@react-native-windows/find-dotnet-tools/package.json @@ -0,0 +1,48 @@ +{ + "name": "@react-native-windows/find-dotnet-tools", + "description": "Helpers to locate .NET-based tools (e.g. pwsh) restored via NuGet or available on PATH.", + "version": "0.0.0-canary.1", + "license": "MIT", + "scripts": { + "build": "rnw-scripts build", + "clean": "rnw-scripts clean", + "lint": "rnw-scripts lint", + "lint:fix": "rnw-scripts lint:fix", + "watch": "rnw-scripts watch" + }, + "main": "lib-commonjs/findDotnetTools.js", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/react-native-windows", + "directory": "packages/@react-native-windows/find-dotnet-tools" + }, + "devDependencies": { + "@rnw-scripts/eslint-config": "1.2.38", + "@rnw-scripts/just-task": "2.3.58", + "@rnw-scripts/ts-config": "2.0.6", + "@types/node": "^22.14.0", + "@typescript-eslint/eslint-plugin": "^8.36.0", + "@typescript-eslint/parser": "^8.36.0", + "eslint": "^8.19.0", + "prettier": "^3.6.2", + "typescript": "5.0.4" + }, + "beachball": { + "defaultNpmTag": "canary", + "disallowedChangeTypes": [ + "major", + "minor", + "patch", + "premajor", + "preminor", + "prepatch" + ] + }, + "promoteRelease": true, + "files": [ + "lib-commonjs" + ], + "engines": { + "node": ">= 22" + } +} diff --git a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts new file mode 100644 index 00000000000..1289eeef202 --- /dev/null +++ b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts @@ -0,0 +1,67 @@ +/** + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * @format + */ + +import {execSync} from 'child_process'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; + +/** + * Returns the path to the global NuGet packages folder, checking (in order): + * 1. The NUGET_PACKAGES environment variable + * 2. The `dotnet nuget locals` command output + * 3. The default ~/.nuget/packages location + */ +export function getNugetGlobalPackagesFolder(): string { + if (process.env.NUGET_PACKAGES) { + return process.env.NUGET_PACKAGES; + } + try { + const output = execSync('dotnet.exe nuget locals global-packages --list', { + encoding: 'utf8', + }).trim(); + const match = output.match(/global-packages:\s*(.+)/i); + if (match) { + return match[1].trim(); + } + } catch {} + return path.join(os.homedir(), '.nuget', 'packages'); +} + +/** + * Locates a PowerShell executable, checking (in order): + * 1. A NuGet-restored copy of pwsh (skipped in CI builds) + * 2. pwsh.exe on the system PATH + * 3. The built-in Windows PowerShell as a last resort + */ +export function findPwsh(): string { + // Build agents already have PowerShell (pwsh) installed + if (!process.env.TF_BUILD) { + const nugetPackages = getNugetGlobalPackagesFolder(); + const nugetPwsh = path.join( + nugetPackages, + 'PowerShell', + '7.6.1', + 'tools', + 'net10.0', + 'any', + 'win', + 'pwsh.exe', + ); + if (fs.existsSync(nugetPwsh)) { + return nugetPwsh; + } + } + + try { + const found = execSync('where pwsh.exe', {encoding: 'utf8'}).trim(); + if (found) { + return found.split(/\r?\n/)[0]; + } + } catch {} + + return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; +} diff --git a/packages/@react-native-windows/find-dotnet-tools/tsconfig.json b/packages/@react-native-windows/find-dotnet-tools/tsconfig.json new file mode 100644 index 00000000000..c62faa78baf --- /dev/null +++ b/packages/@react-native-windows/find-dotnet-tools/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "@rnw-scripts/ts-config", + "include": ["src"], + "exclude": ["node_modules"] +} diff --git a/packages/@rnw-scripts/just-task/nuget-restore-task.js b/packages/@rnw-scripts/just-task/nuget-restore-task.js index 6469ce24bbb..9b478cc27ef 100644 --- a/packages/@rnw-scripts/just-task/nuget-restore-task.js +++ b/packages/@rnw-scripts/just-task/nuget-restore-task.js @@ -9,6 +9,7 @@ const fs = require('fs'); const path = require('path'); const {execSync, spawnSync} = require('child_process'); const {task} = require('just-scripts'); +const {findPwsh} = require('@react-native-windows/find-dotnet-tools'); function registerNuGetRestoreTask(options) { const config = normalizeOptions(options); @@ -51,51 +52,6 @@ function executeNuGetRestore(config) { `Restoring NuGet packages (log: ${path.relative(process.cwd(), logPath)})`, ); - function getGlobalNuGetPackagesFolder() { - if (process.env.NUGET_PACKAGES) { - return process.env.NUGET_PACKAGES; - } - try { - const output = execSync('dotnet.exe nuget locals global-packages --list', { - encoding: 'utf8', - }); - const match = output.match(/global-packages:\s*(.+)/i); - if (match) { - return match[1].trim(); - } - } catch {} - return path.join(require('os').homedir(), '.nuget', 'packages'); - } - - function findPwsh() { - // Build agents already have PowerShell (pwsh) installed - if (!process.env.TF_BUILD) { - const nugetPackages = getGlobalNuGetPackagesFolder(); - const nugetPwsh = path.join( - nugetPackages, - 'PowerShell', - '7.6.1', - 'tools', - 'net10.0', - 'any', - 'win', - 'pwsh.exe', - ); - if (fs.existsSync(nugetPwsh)) { - return nugetPwsh; - } - } - - try { - const found = execSync('where pwsh.exe', { encoding: 'utf8' }).trim(); - if (found) { - return found.split(/\r?\n/)[0]; - } - } catch { } - - return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; - } - const powershell = findPwsh(); const scriptArgs = config.scriptArguments.length diff --git a/vnext/just-task.js b/vnext/just-task.js index 9232d948127..8e03029222c 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -25,6 +25,7 @@ const fs = require('fs'); const { registerNuGetRestoreTask, } = require('@rnw-scripts/just-task/nuget-restore-task'); +const {findPwsh} = require('@react-native-windows/find-dotnet-tools'); option('production'); option('clean'); @@ -44,51 +45,6 @@ function codegen(test) { ); } -function getGlobalNuGetPackagesFolder() { - if (process.env.NUGET_PACKAGES) { - return process.env.NUGET_PACKAGES; - } - try { - const output = execSync('dotnet.exe nuget locals global-packages --list', { - encoding: 'utf8', - }); - const match = output.match(/global-packages:\s*(.+)/i); - if (match) { - return match[1].trim(); - } - } catch {} - return path.join(require('os').homedir(), '.nuget', 'packages'); -} - -function findPwsh() { - // Build agents already have PowerShell (pwsh) installed - if (!process.env.TF_BUILD) { - const nugetPackages = getGlobalNuGetPackagesFolder(); - const nugetPwsh = path.join( - nugetPackages, - 'PowerShell', - '7.6.1', - 'tools', - 'net10.0', - 'any', - 'win', - 'pwsh.exe', - ); - if (fs.existsSync(nugetPwsh)) { - return nugetPwsh; - } - } - - try { - const found = execSync('where pwsh.exe', { encoding: 'utf8' }).trim(); - if (found) { - return found.split(/\r?\n/)[0]; - } - } catch { } - - return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; -} - const powershell = findPwsh(); function layoutMSRNCxx() { diff --git a/vnext/package.json b/vnext/package.json index 77061d9aac2..f008cea4c2a 100644 --- a/vnext/package.json +++ b/vnext/package.json @@ -73,6 +73,7 @@ "@babel/core": "^7.25.2", "@babel/preset-env": "^7.25.3", "@react-native-windows/codegen": "0.0.0-canary.133", + "@react-native-windows/find-dotnet-tools": "0.0.0-canary.1", "@react-native/metro-config": "0.85.0-nightly-20260114-f15985f4f", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", diff --git a/yarn.lock b/yarn.lock index 3930c317407..d2ff2728995 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3580,6 +3580,7 @@ __metadata: "@react-native-community/cli-doctor": "npm:20.0.0" "@react-native-community/cli-types": "npm:20.0.0" "@react-native-windows/codegen": "npm:0.0.0-canary.133" + "@react-native-windows/find-dotnet-tools": "npm:0.0.0-canary.1" "@react-native-windows/fs": "npm:^0.0.0-canary.72" "@react-native-windows/package-utils": "npm:^0.0.0-canary.98" "@react-native-windows/telemetry": "npm:^0.0.0-canary.133" @@ -3663,6 +3664,22 @@ __metadata: languageName: unknown linkType: soft +"@react-native-windows/find-dotnet-tools@npm:0.0.0-canary.1, @react-native-windows/find-dotnet-tools@workspace:packages/@react-native-windows/find-dotnet-tools": + version: 0.0.0-use.local + resolution: "@react-native-windows/find-dotnet-tools@workspace:packages/@react-native-windows/find-dotnet-tools" + dependencies: + "@rnw-scripts/eslint-config": "npm:1.2.38" + "@rnw-scripts/just-task": "npm:2.3.58" + "@rnw-scripts/ts-config": "npm:2.0.6" + "@types/node": "npm:^22.14.0" + "@typescript-eslint/eslint-plugin": "npm:^8.36.0" + "@typescript-eslint/parser": "npm:^8.36.0" + eslint: "npm:^8.19.0" + prettier: "npm:^3.6.2" + typescript: "npm:5.0.4" + languageName: unknown + linkType: soft + "@react-native-windows/find-repo-root@npm:^0.0.0-canary.101, @react-native-windows/find-repo-root@workspace:packages/@react-native-windows/find-repo-root": version: 0.0.0-use.local resolution: "@react-native-windows/find-repo-root@workspace:packages/@react-native-windows/find-repo-root" @@ -15993,6 +16010,7 @@ __metadata: "@react-native-community/cli-platform-ios": "npm:20.0.0" "@react-native-windows/cli": "npm:0.0.0-canary.288" "@react-native-windows/codegen": "npm:0.0.0-canary.133" + "@react-native-windows/find-dotnet-tools": "npm:0.0.0-canary.1" "@react-native/assets": "npm:1.0.0" "@react-native/assets-registry": "npm:0.85.0-nightly-20260114-f15985f4f" "@react-native/codegen": "npm:0.85.0-nightly-20260114-f15985f4f" From 0a07510adf34179b097533fd2d0678ead3f4ec89 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 00:50:04 -0700 Subject: [PATCH 15/64] Update other ADO tasks --- .ado/jobs/e2e-test.yml | 2 +- .ado/templates/install-SDK.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 204e4c82666..9cd5b6a892a 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -320,7 +320,7 @@ jobs: condition: and(failed(), eq(variables.StartedFabricTests, 'true')) continueOnError: true - - powershell: | + - pwsh: | if (Test-Path "packages/e2e-test-app-fabric/test/__image_snapshots__/__diff_output__") { Write-Host "##vso[task.setvariable variable=DiffOutputExists]true" } diff --git a/.ado/templates/install-SDK.yml b/.ado/templates/install-SDK.yml index ef301a278dd..18fda6f4c47 100644 --- a/.ado/templates/install-SDK.yml +++ b/.ado/templates/install-SDK.yml @@ -7,5 +7,6 @@ steps: targetType: filePath filePath: vnext\Scripts\Install-WindowsSdkISO.ps1 arguments: ${{ parameters.sdkVersion }} + pwsh: true displayName: 'Install Insider SDK (${{ parameters.sdkVersion }})' condition: ne('', '${{ parameters.sdkVersion }}') From 9a279f5a808378ffbf0295c22fe3ac52209039a9 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 00:55:17 -0700 Subject: [PATCH 16/64] Update @react-native-windows/automation --- packages/@react-native-windows/automation/package.json | 1 + .../automation/src/AutomationEnvironment.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/@react-native-windows/automation/package.json b/packages/@react-native-windows/automation/package.json index ea12ead689d..a962aa661ed 100644 --- a/packages/@react-native-windows/automation/package.json +++ b/packages/@react-native-windows/automation/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@react-native-windows/automation-channel": "0.0.0-canary.1052", + "@react-native-windows/find-dotnet-tools": "0.0.0-canary.1", "@react-native-windows/fs": "^0.0.0-canary.72", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index 9088328a9d6..dbfa3aea65e 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -8,6 +8,7 @@ import chalk from 'chalk'; import {spawnSync, spawn, ChildProcess} from 'child_process'; import fs from '@react-native-windows/fs'; +import {findPwsh} from '@react-native-windows/find-dotnet-tools'; import path from 'path'; import readlineSync from 'readline-sync'; @@ -335,7 +336,7 @@ function resolveAppName(appName: string): string { } try { - const packageFamilyName = spawnSync('powershell', [ + const packageFamilyName = spawnSync(findPwsh(), [ `(Get-AppxPackage -Name ${appName}).PackageFamilyName`, ]) .stdout.toString() From 32f3b10f77d272f39d96ed8b161060781a1bd670 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 00:59:59 -0700 Subject: [PATCH 17/64] Rename findPwsh as findPowerShell --- .../automation/src/AutomationEnvironment.ts | 4 ++-- .../cli/src/utils/commandWithProgress.ts | 4 ++-- .../find-dotnet-tools/src/findDotnetTools.ts | 2 +- packages/@rnw-scripts/just-task/nuget-restore-task.js | 4 ++-- vnext/just-task.js | 4 ++-- yarn.lock | 1 + 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index dbfa3aea65e..bc8409af8b2 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -8,7 +8,7 @@ import chalk from 'chalk'; import {spawnSync, spawn, ChildProcess} from 'child_process'; import fs from '@react-native-windows/fs'; -import {findPwsh} from '@react-native-windows/find-dotnet-tools'; +import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; import path from 'path'; import readlineSync from 'readline-sync'; @@ -336,7 +336,7 @@ function resolveAppName(appName: string): string { } try { - const packageFamilyName = spawnSync(findPwsh(), [ + const packageFamilyName = spawnSync(findPowerShell(), [ `(Get-AppxPackage -Name ${appName}).PackageFamilyName`, ]) .stdout.toString() diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 36e1f424872..f43896dd41b 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -14,7 +14,7 @@ import { CodedErrors, CodedErrorType, } from '@react-native-windows/telemetry'; -import {findPwsh} from '@react-native-windows/find-dotnet-tools'; +import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; function setSpinnerText(spinner: ora.Ora, prefix: string, text: string) { text = prefix + spinnerString(text); @@ -48,7 +48,7 @@ export function newSpinner(text: string) { return ora(options).start(); } -export const powershell = findPwsh(); +export const powershell = findPowerShell(); export async function runPowerShellScriptFunction( taskDescription: string, diff --git a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts index 1289eeef202..aff5ef8dae9 100644 --- a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts +++ b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts @@ -37,7 +37,7 @@ export function getNugetGlobalPackagesFolder(): string { * 2. pwsh.exe on the system PATH * 3. The built-in Windows PowerShell as a last resort */ -export function findPwsh(): string { +export function findPowerShell(): string { // Build agents already have PowerShell (pwsh) installed if (!process.env.TF_BUILD) { const nugetPackages = getNugetGlobalPackagesFolder(); diff --git a/packages/@rnw-scripts/just-task/nuget-restore-task.js b/packages/@rnw-scripts/just-task/nuget-restore-task.js index 9b478cc27ef..0491a67e333 100644 --- a/packages/@rnw-scripts/just-task/nuget-restore-task.js +++ b/packages/@rnw-scripts/just-task/nuget-restore-task.js @@ -9,7 +9,7 @@ const fs = require('fs'); const path = require('path'); const {execSync, spawnSync} = require('child_process'); const {task} = require('just-scripts'); -const {findPwsh} = require('@react-native-windows/find-dotnet-tools'); +const {findPowerShell} = require('@react-native-windows/find-dotnet-tools'); function registerNuGetRestoreTask(options) { const config = normalizeOptions(options); @@ -52,7 +52,7 @@ function executeNuGetRestore(config) { `Restoring NuGet packages (log: ${path.relative(process.cwd(), logPath)})`, ); - const powershell = findPwsh(); + const powershell = findPowerShell(); const scriptArgs = config.scriptArguments.length ? ` ${config.scriptArguments.join(' ')}` diff --git a/vnext/just-task.js b/vnext/just-task.js index 8e03029222c..6170905185c 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -25,7 +25,7 @@ const fs = require('fs'); const { registerNuGetRestoreTask, } = require('@rnw-scripts/just-task/nuget-restore-task'); -const {findPwsh} = require('@react-native-windows/find-dotnet-tools'); +const {findPowerShell} = require('@react-native-windows/find-dotnet-tools'); option('production'); option('clean'); @@ -45,7 +45,7 @@ function codegen(test) { ); } -const powershell = findPwsh(); +const powershell = findPowerShell(); function layoutMSRNCxx() { if (require('os').platform() === 'win32') { diff --git a/yarn.lock b/yarn.lock index d2ff2728995..524ef8a49f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3551,6 +3551,7 @@ __metadata: "@jest/environment": "npm:^29.3.0" "@jest/types": "npm:^29.2.1" "@react-native-windows/automation-channel": "npm:0.0.0-canary.1052" + "@react-native-windows/find-dotnet-tools": "npm:0.0.0-canary.1" "@react-native-windows/fs": "npm:^0.0.0-canary.72" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/just-task": "npm:2.3.58" From 9c8d4f70353cc5b07b3af5b750dd22a3a0d6dc72 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 01:16:59 -0700 Subject: [PATCH 18/64] Drop powershell export from commandWithProgress --- .../cli/src/commands/healthCheck/healthChecks.ts | 4 +++- .../cli/src/e2etest/healthChecks.test.ts | 4 +++- .../cli/src/utils/commandWithProgress.ts | 2 +- packages/@react-native-windows/cli/src/utils/deploy.ts | 5 +++-- packages/@react-native-windows/cli/src/utils/msbuildtools.ts | 4 ++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts b/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts index 90a4a11a1df..6ff9f061027 100644 --- a/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts +++ b/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts @@ -14,9 +14,11 @@ import type { HealthCheckCategory, HealthCheckInterface, } from '@react-native-community/cli-doctor/build/types'; -import {powershell} from '../../utils/commandWithProgress'; +import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; import {HealthCheckList} from './healthCheckList'; +const powershell = findPowerShell(); + export function getHealthChecks(): HealthCheckCategory[] | undefined { // #8471: There are known cases where the dependencies script will error out. // Fail gracefully if that happens in the meantime. diff --git a/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts b/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts index ad0a17edfb2..eab33d6879a 100644 --- a/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts +++ b/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts @@ -6,9 +6,11 @@ import {execSync} from 'child_process'; import path from 'path'; -import {powershell} from '../utils/commandWithProgress'; +import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; import {HealthCheckList} from '../commands/healthCheck/healthCheckList'; +const powershell = findPowerShell(); + test('Verify list of health checks aligns with rnw-dependencies', async () => { const rnwDepScriptPath = path.join( path.dirname( diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index f43896dd41b..5eede1266c3 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -48,7 +48,7 @@ export function newSpinner(text: string) { return ora(options).start(); } -export const powershell = findPowerShell(); +const powershell = findPowerShell(); export async function runPowerShellScriptFunction( taskDescription: string, diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index 39395245d74..0dff81e6efb 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -19,8 +19,8 @@ import { newSpinner, commandWithProgress, runPowerShellScriptFunction, - powershell, } from './commandWithProgress'; +import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; import * as build from './build'; import { BuildConfig, @@ -183,6 +183,7 @@ function getWindowsStoreAppUtils(options: RunWindowsOptions) { 'powershell', 'WindowsStoreAppUtils.psm1', ); + const powershell = findPowerShell(); execSync( `${powershell} -NoProfile Unblock-File '${windowsStoreAppUtilsPath}'`, ); @@ -457,7 +458,7 @@ export async function deployToDesktop( } const appFamilyName = execSync( - `${powershell} -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`, + `${findPowerShell()} -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`, ) .toString() .trim(); diff --git a/packages/@react-native-windows/cli/src/utils/msbuildtools.ts b/packages/@react-native-windows/cli/src/utils/msbuildtools.ts index 479fbed6974..21811569d84 100644 --- a/packages/@react-native-windows/cli/src/utils/msbuildtools.ts +++ b/packages/@react-native-windows/cli/src/utils/msbuildtools.ts @@ -18,8 +18,8 @@ import { newSpinner, newSuccess, newError, - powershell, } from './commandWithProgress'; +import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; import {execSync} from 'child_process'; import {BuildArch, BuildConfig} from '../commands/runWindows/runWindowsOptions'; import {findLatestVsInstall} from './vsInstalls'; @@ -317,7 +317,7 @@ export default class MSBuildTools { 'Eval-MsBuildProperties.ps1', ); - let command = `${powershell} -ExecutionPolicy Unrestricted -NoProfile "${msbuildEvalScriptPath}" -SolutionFile '${solutionFile}' -ProjectFile '${projectFile}' -MSBuildPath '${this.msbuildPath()}'`; + let command = `${findPowerShell()} -ExecutionPolicy Unrestricted -NoProfile "${msbuildEvalScriptPath}" -SolutionFile '${solutionFile}' -ProjectFile '${projectFile}' -MSBuildPath '${this.msbuildPath()}'`; if (propertyNames && propertyNames.length > 0) { command += ` -PropertyNames '${propertyNames.join(',')}'`; From a88f21cf4b60ab1b48c4cbc5fc758a2b2c315e7f Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 02:01:45 -0700 Subject: [PATCH 19/64] Change files --- ...ws-automation-10c8b2ce-ed81-450b-b846-4695f1ed4c4f.json | 7 +++++++ ...-dotnet-tools-7018a5fe-0791-4fb7-ae1d-c95620216ddc.json | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 change/@react-native-windows-automation-10c8b2ce-ed81-450b-b846-4695f1ed4c4f.json create mode 100644 change/@react-native-windows-find-dotnet-tools-7018a5fe-0791-4fb7-ae1d-c95620216ddc.json diff --git a/change/@react-native-windows-automation-10c8b2ce-ed81-450b-b846-4695f1ed4c4f.json b/change/@react-native-windows-automation-10c8b2ce-ed81-450b-b846-4695f1ed4c4f.json new file mode 100644 index 00000000000..44cad7b1964 --- /dev/null +++ b/change/@react-native-windows-automation-10c8b2ce-ed81-450b-b846-4695f1ed4c4f.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Migrate to PowerShell 7", + "packageName": "@react-native-windows/automation", + "email": "julio.rocha@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-find-dotnet-tools-7018a5fe-0791-4fb7-ae1d-c95620216ddc.json b/change/@react-native-windows-find-dotnet-tools-7018a5fe-0791-4fb7-ae1d-c95620216ddc.json new file mode 100644 index 00000000000..621e68e6ec3 --- /dev/null +++ b/change/@react-native-windows-find-dotnet-tools-7018a5fe-0791-4fb7-ae1d-c95620216ddc.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Migrate to PowerShell 7", + "packageName": "@react-native-windows/find-dotnet-tools", + "email": "julio.rocha@microsoft.com", + "dependentChangeType": "patch" +} From b7b454e22df57f2c490558c15bf6bc7479cc0dda Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 02:11:18 -0700 Subject: [PATCH 20/64] Add README for find-dotnet-tools --- .../find-dotnet-tools/README.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 packages/@react-native-windows/find-dotnet-tools/README.md diff --git a/packages/@react-native-windows/find-dotnet-tools/README.md b/packages/@react-native-windows/find-dotnet-tools/README.md new file mode 100644 index 00000000000..e0412013c57 --- /dev/null +++ b/packages/@react-native-windows/find-dotnet-tools/README.md @@ -0,0 +1,49 @@ +# @react-native-windows/find-dotnet-tools + +Helpers to locate .NET-based tools (e.g. PowerShell) restored via `dotnet tool restore` or +available on PATH. + +Used to resolve tool paths consistently across local development and CI +environments. + +## Usage + +Add the package as a dependency: + +```json +{ + "dependencies": { + "@react-native-windows/find-dotnet-tools": "" + } +} +``` + +### findPowerShell + +Locates a PowerShell executable by checking, in order: + +1. A `dotnet-tool`-restored copy of `pwsh.exe` (skipped in CI builds) +2. `pwsh.exe` on the system PATH +3. The built-in Windows PowerShell as a last resort + +```js +import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; + +const pwsh = findPowerShell(); +// e.g. "C:\\Users\\user\\.nuget\\packages\\PowerShell\\7.6.1\\tools\\net10.0\\any\\win\\pwsh.exe" +``` + +### getNugetGlobalPackagesFolder + +Returns the path to the global NuGet packages folder by checking, in order: + +1. The `NUGET_PACKAGES` environment variable +2. The output of `dotnet nuget locals global-packages --list` +3. The default `~/.nuget/packages` location + +```js +import {getNugetGlobalPackagesFolder} from '@react-native-windows/find-dotnet-tools'; + +const packagesDir = getNugetGlobalPackagesFolder(); +// e.g. "C:\\Users\\user\\.nuget\\packages" +``` From 16ddee990eac1112cb25e0b34f592d37b2643476 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 02:20:49 -0700 Subject: [PATCH 21/64] Add README to package.json --- .../@react-native-windows/find-dotnet-tools/package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/@react-native-windows/find-dotnet-tools/package.json b/packages/@react-native-windows/find-dotnet-tools/package.json index 15a5d587408..ef97997c37b 100644 --- a/packages/@react-native-windows/find-dotnet-tools/package.json +++ b/packages/@react-native-windows/find-dotnet-tools/package.json @@ -40,9 +40,10 @@ }, "promoteRelease": true, "files": [ - "lib-commonjs" + "lib-commonjs", + "README.md" ], "engines": { "node": ">= 22" } -} +} \ No newline at end of file From d0d0d03c5ced16c896db7d2f63db738f990a87b6 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 02:37:22 -0700 Subject: [PATCH 22/64] Adjust newline --- packages/@react-native-windows/find-dotnet-tools/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@react-native-windows/find-dotnet-tools/package.json b/packages/@react-native-windows/find-dotnet-tools/package.json index ef97997c37b..c2f218b5dd2 100644 --- a/packages/@react-native-windows/find-dotnet-tools/package.json +++ b/packages/@react-native-windows/find-dotnet-tools/package.json @@ -46,4 +46,4 @@ "engines": { "node": ">= 22" } -} \ No newline at end of file +} From fa3d334d523fa664566b0692bfeea05651074039 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 02:46:06 -0700 Subject: [PATCH 23/64] Run task `installDotnetTools` only when not in CI --- vnext/just-task.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vnext/just-task.js b/vnext/just-task.js index 6170905185c..e10779044fb 100644 --- a/vnext/just-task.js +++ b/vnext/just-task.js @@ -101,7 +101,7 @@ task( condition('clean', () => argv().clean), 'copyRNLibraries', 'copyReadmeAndLicenseFromRoot', - 'installDotnetTools', + condition('installDotnetTools', () => !process.env.TF_BUILD), 'layoutMSRNCxx', 'compileTsPlatformOverrides', 'restoreNuGetPackages', From 357c415053c21bcbf7f761b43b63b99c858ad4fa Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 02:54:48 -0700 Subject: [PATCH 24/64] Install .NET tools in CI --- .ado/templates/prepare-js-env.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.ado/templates/prepare-js-env.yml b/.ado/templates/prepare-js-env.yml index 33e7ecea499..4b22793d5fa 100644 --- a/.ado/templates/prepare-js-env.yml +++ b/.ado/templates/prepare-js-env.yml @@ -17,6 +17,15 @@ steps: displayName: Ensure npm directory for npx commands condition: eq(variables['Agent.OS'], 'Windows_NT') + - task: DotNetCoreCLI@2 + displayName: Restore .NET Tools + inputs: + command: custom + custom: tool + arguments: restore + workingDirectory: $(Build.SourcesDirectory)\vnext + retryCountOnTaskFailure: 2 + - template: yarn-install.yml - script: yarn build From 5e25b9b1abc72641d41cee8830035af0fb5d3c59 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 03:19:34 -0700 Subject: [PATCH 25/64] Install .NET on prepare-js-env --- .ado/templates/prepare-js-env.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.ado/templates/prepare-js-env.yml b/.ado/templates/prepare-js-env.yml index 4b22793d5fa..d4e764b4709 100644 --- a/.ado/templates/prepare-js-env.yml +++ b/.ado/templates/prepare-js-env.yml @@ -17,6 +17,11 @@ steps: displayName: Ensure npm directory for npx commands condition: eq(variables['Agent.OS'], 'Windows_NT') + - task: UseDotNet@2 + displayName: Install .NET SDK + inputs: + version: 10.x + - task: DotNetCoreCLI@2 displayName: Restore .NET Tools inputs: From 209c16ddfaa585959c15fb1334190d214a3395b6 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 03:50:04 -0700 Subject: [PATCH 26/64] Do not install .NET tools on CI --- .ado/templates/prepare-js-env.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.ado/templates/prepare-js-env.yml b/.ado/templates/prepare-js-env.yml index d4e764b4709..33e7ecea499 100644 --- a/.ado/templates/prepare-js-env.yml +++ b/.ado/templates/prepare-js-env.yml @@ -17,20 +17,6 @@ steps: displayName: Ensure npm directory for npx commands condition: eq(variables['Agent.OS'], 'Windows_NT') - - task: UseDotNet@2 - displayName: Install .NET SDK - inputs: - version: 10.x - - - task: DotNetCoreCLI@2 - displayName: Restore .NET Tools - inputs: - command: custom - custom: tool - arguments: restore - workingDirectory: $(Build.SourcesDirectory)\vnext - retryCountOnTaskFailure: 2 - - template: yarn-install.yml - script: yarn build From 028d93b3f5b8256c37713979960ce19a6b774ddc Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 04:23:41 -0700 Subject: [PATCH 27/64] Quote powershell path --- .../cli/src/commands/healthCheck/healthChecks.ts | 2 +- .../@react-native-windows/cli/src/e2etest/healthChecks.test.ts | 2 +- packages/@react-native-windows/cli/src/utils/deploy.ts | 2 +- packages/@rnw-scripts/just-task/nuget-restore-task.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts b/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts index 6ff9f061027..74d4797811a 100644 --- a/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts +++ b/packages/@react-native-windows/cli/src/commands/healthCheck/healthChecks.ts @@ -78,7 +78,7 @@ function getHealthChecksUnsafe(): HealthCheckCategory[] | undefined { }; }, runAutomaticFix: async ({loader, logManualInstallation}) => { - const command = `${powershell} -ExecutionPolicy Unrestricted -NoProfile "${rnwDepScriptPath}" -Check ${id}`; + const command = `"${powershell}" -ExecutionPolicy Unrestricted -NoProfile "${rnwDepScriptPath}" -Check ${id}`; try { const {exitCode} = await execa(command, {stdio: 'inherit'}); if (exitCode) { diff --git a/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts b/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts index eab33d6879a..98d2be3a9f8 100644 --- a/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts +++ b/packages/@react-native-windows/cli/src/e2etest/healthChecks.test.ts @@ -22,7 +22,7 @@ test('Verify list of health checks aligns with rnw-dependencies', async () => { ); const rnwDeps = execSync( - `${powershell} -ExecutionPolicy Unrestricted -NoProfile "${rnwDepScriptPath}" -NoPrompt -ListChecks`, + `"${powershell}" -ExecutionPolicy Unrestricted -NoProfile "${rnwDepScriptPath}" -NoPrompt -ListChecks`, {stdio: 'pipe'}, ); const deps = rnwDeps.toString().trim().split('\n'); diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index 0dff81e6efb..a4d5d7dc4b3 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -185,7 +185,7 @@ function getWindowsStoreAppUtils(options: RunWindowsOptions) { ); const powershell = findPowerShell(); execSync( - `${powershell} -NoProfile Unblock-File '${windowsStoreAppUtilsPath}'`, + `"${powershell}" -NoProfile Unblock-File '${windowsStoreAppUtilsPath}'`, ); popd(); return windowsStoreAppUtilsPath; diff --git a/packages/@rnw-scripts/just-task/nuget-restore-task.js b/packages/@rnw-scripts/just-task/nuget-restore-task.js index 0491a67e333..97da9d6e163 100644 --- a/packages/@rnw-scripts/just-task/nuget-restore-task.js +++ b/packages/@rnw-scripts/just-task/nuget-restore-task.js @@ -59,7 +59,7 @@ function executeNuGetRestore(config) { : ''; const restoreCommand = `call ${quote( vsDevCmd, - )} && ${powershell} -NoProfile -ExecutionPolicy Bypass -File ${quote( + )} && "${powershell}" -NoProfile -ExecutionPolicy Bypass -File ${quote( config.scriptPath, )}${scriptArgs}`; const wrappedCommand = `${restoreCommand}`; From 31b87eb32abf80285b96807a8b6761dbb1054927 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 04:28:08 -0700 Subject: [PATCH 28/64] fix yarn lint --- .../find-dotnet-tools/src/findDotnetTools.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts index aff5ef8dae9..80faad3d9a2 100644 --- a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts +++ b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts @@ -5,7 +5,7 @@ */ import {execSync} from 'child_process'; -import fs from 'fs'; +import fs from '@react-native-windows/fs'; import os from 'os'; import path from 'path'; From 457c33b459854e2c3932fcfc642754ee68905ca2 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 14:30:29 -0700 Subject: [PATCH 29/64] Ran NuGetRestoreForceEvaluateAllSolutions.ps1 --- .../packages.experimentalwinui3.lock.json | 277 ------------------ .../packages.lock.json | 277 ------------------ 2 files changed, 554 deletions(-) delete mode 100644 vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json delete mode 100644 vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json deleted file mode 100644 index be8ac5782d8..00000000000 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json +++ /dev/null @@ -1,277 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Direct", - "requested": "[1.84.0, )", - "resolved": "1.84.0", - "contentHash": "4el2YP3cNJDVFPdzOso+LxGvdWP2rHxML4siq8VdonNypW2m4q503tHfCj6vK0L1UfxioE2hpFGb4ITEua73tg==" - }, - "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { - "type": "Direct", - "requested": "[1.8.1.7, )", - "resolved": "1.8.1.7", - "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" - }, - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Windows.CppWinRT": { - "type": "Direct", - "requested": "[2.0.230706.1, )", - "resolved": "2.0.230706.1", - "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Direct", - "requested": "[2.0.0-experimental3, )", - "resolved": "2.0.0-experimental3", - "contentHash": "eP4XWWccngqnwyJVTYbdlVDyUyFW7EintimqOyq3ttk/h4dCwvW0FNTjq6qvnzkmWKiSqoXau/d5Dy27wSAKpg==", - "dependencies": { - "Microsoft.WindowsAppSDK.AI": "[2.0.57-experimental]", - "Microsoft.WindowsAppSDK.Base": "[2.0.0-experimental]", - "Microsoft.WindowsAppSDK.DWrite": "[2.0.0-experimental]", - "Microsoft.WindowsAppSDK.Foundation": "[2.0.8-experimental]", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "[2.0.3-experimental]", - "Microsoft.WindowsAppSDK.ML": "[2.0.44-experimental]", - "Microsoft.WindowsAppSDK.Runtime": "[2.0.0-experimental3]", - "Microsoft.WindowsAppSDK.Widgets": "[2.0.2-experimental]", - "Microsoft.WindowsAppSDK.WinUI": "[2.0.3-experimental]" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.JavaScript.Hermes": { - "type": "Transitive", - "resolved": "0.0.0-2604.21001-94aa5e1d", - "contentHash": "8eHA3O043jIeK7E1gJbzgsdujaDTIBwLSl6pZj7CdQl+ryFqaW88XVU9ogWJPxk5lR2T4cU/OlEJfZynqoyYew==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.26100.4654", - "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" - }, - "Microsoft.Windows.SDK.BuildTools.MSIX": { - "type": "Transitive", - "resolved": "1.7.20250829.1", - "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" - }, - "Microsoft.WindowsAppSDK.AI": { - "type": "Transitive", - "resolved": "2.0.57-experimental", - "contentHash": "iCDkCyYFnryJjSRAVU3dmOyZaT3wO8COv+gCMImbDiRK6Kx047pYkJalrs/mOK2GbS8GVzgGAh4pOGaavzQmpw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.3-experimental" - } - }, - "Microsoft.WindowsAppSDK.Base": { - "type": "Transitive", - "resolved": "2.0.0-experimental", - "contentHash": "xQY42zJd61lTemFhaEl0GQ+YNHIPeeLnF5sM4lhKfOE0fX3aYCPPH5begOcJBhxsorCk90MGLvCq8dy058sBHg==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", - "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" - } - }, - "Microsoft.WindowsAppSDK.DWrite": { - "type": "Transitive", - "resolved": "2.0.0-experimental", - "contentHash": "B21j5wUaHab3LbyaOiGXCRlxW+D2Z7hnUZvALenLseEWDPUYyLvClZgXIYJd3s60J3B+CVQOAop9VQiOzRRquw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - }, - "Microsoft.WindowsAppSDK.InteractiveExperiences": { - "type": "Transitive", - "resolved": "2.0.3-experimental", - "contentHash": "Ck3QUVmo/KIKYK9Fo5YzL8eoUbjkRoBkGJdTQbcXVI61CFoxkwypnNckoyWyM6PfzS8KoxasHJbI8YSt+DNgfw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.ML": { - "type": "Transitive", - "resolved": "2.0.44-experimental", - "contentHash": "cnPfVfMfOhbVobG417zJVbWLA0P5QZHqrMBEDndQNOcgpUEtKJNY2mC+n3+SLr14P1mKPpzPP9vm/O9APsq4bw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental" - } - }, - "Microsoft.WindowsAppSDK.Runtime": { - "type": "Transitive", - "resolved": "2.0.0-experimental3", - "contentHash": "ikNSjK07rUFBWdYwkM/2sSQzxieYgRwVDSM7PJxMxIkSGSeAeba8jmDST05oJfDWtXOpNqfn4CTeaZ/6y8yfNw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.Widgets": { - "type": "Transitive", - "resolved": "2.0.2-experimental", - "contentHash": "+Trk3vVSlWxBWomjpUjwy5aOowkLHr2m7o7pVn58a03O2e46joBM3WdIGon/ns+BMKPow7knCS6ne6OBWGlVZg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" - } - }, - "Microsoft.WindowsAppSDK.WinUI": { - "type": "Transitive", - "resolved": "2.0.3-experimental", - "contentHash": "OuvJXiPEOqBRlai79qi8f35JK/MfvsaIBGoIMNOA5pZznigPezR1XHjwrF1lWMDR3WwJV9Q/rnKWcWfXYw24/Q==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.3405.78", - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - }, - "common": { - "type": "Project", - "dependencies": { - "boost": "[1.84.0, )" - } - }, - "microsoft.reactnative": { - "type": "Project", - "dependencies": { - "Common": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2604.21001-94aa5e1d, )", - "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.WindowsAppSDK": "[2.0.0-experimental3, )", - "ReactCommon": "[1.0.0, )", - "boost": "[1.84.0, )" - } - }, - "reactcommon": { - "type": "Project", - "dependencies": { - "boost": "[1.84.0, )" - } - } - }, - "native,Version=v0.0/win": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-arm64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-x64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - }, - "native,Version=v0.0/win-x86": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3405.78", - "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "2.0.8-experimental", - "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" - } - } - } - } -} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json deleted file mode 100644 index 06c6778b7db..00000000000 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json +++ /dev/null @@ -1,277 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Direct", - "requested": "[1.84.0, )", - "resolved": "1.84.0", - "contentHash": "4el2YP3cNJDVFPdzOso+LxGvdWP2rHxML4siq8VdonNypW2m4q503tHfCj6vK0L1UfxioE2hpFGb4ITEua73tg==" - }, - "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { - "type": "Direct", - "requested": "[1.8.1.7, )", - "resolved": "1.8.1.7", - "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" - }, - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Windows.CppWinRT": { - "type": "Direct", - "requested": "[2.0.230706.1, )", - "resolved": "2.0.230706.1", - "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Direct", - "requested": "[1.8.260209005, )", - "resolved": "1.8.260209005", - "contentHash": "AGHOiZcrDrpaxpHfEFKlI8MVnibfbSixI5DlbU6ozP/9dyWN5FkTFowg+dEOnaFRCnOzTSAjBQ1HuS4lAO+aMQ==", - "dependencies": { - "Microsoft.WindowsAppSDK.AI": "[1.8.47]", - "Microsoft.WindowsAppSDK.Base": "[1.8.251216001]", - "Microsoft.WindowsAppSDK.DWrite": "[1.8.25122902]", - "Microsoft.WindowsAppSDK.Foundation": "[1.8.260203002]", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "[1.8.260125001]", - "Microsoft.WindowsAppSDK.ML": "[1.8.2124]", - "Microsoft.WindowsAppSDK.Runtime": "[1.8.260209005]", - "Microsoft.WindowsAppSDK.Widgets": "[1.8.251231004]", - "Microsoft.WindowsAppSDK.WinUI": "[1.8.260204000]" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.JavaScript.Hermes": { - "type": "Transitive", - "resolved": "0.0.0-2604.21001-94aa5e1d", - "contentHash": "8eHA3O043jIeK7E1gJbzgsdujaDTIBwLSl6pZj7CdQl+ryFqaW88XVU9ogWJPxk5lR2T4cU/OlEJfZynqoyYew==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.26100.4654", - "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" - }, - "Microsoft.Windows.SDK.BuildTools.MSIX": { - "type": "Transitive", - "resolved": "1.7.20250829.1", - "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" - }, - "Microsoft.WindowsAppSDK.AI": { - "type": "Transitive", - "resolved": "1.8.47", - "contentHash": "9il8KT8WR4T826hnm3M/USZTkPtVXFGE0IztmE1l7H9DPYsa3QHEUgGHFHQg88fsMjdr3vhyMvs23AB+1IYF1w==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" - } - }, - "Microsoft.WindowsAppSDK.Base": { - "type": "Transitive", - "resolved": "1.8.251216001", - "contentHash": "PS1wriuFknz3W2F2P/e6RvOTM35w89Lsj/f0QmUEPrJjKnc+jM0JLX1vfdytI14y1gNRUTm9uclwP0aH/SVU5w==", - "dependencies": { - "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", - "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" - } - }, - "Microsoft.WindowsAppSDK.DWrite": { - "type": "Transitive", - "resolved": "1.8.25122902", - "contentHash": "zFNn07i7Cyz62Y8FnPQAyzeZK7ww3m9t42i9pzy4C04pNbyUDQ4fG7pB6VSh6n4EyFuYtuFQuDzt4mKmXFrkrg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - }, - "Microsoft.WindowsAppSDK.InteractiveExperiences": { - "type": "Transitive", - "resolved": "1.8.260125001", - "contentHash": "CTGFd1zhIDbnOltZ6piPvpNXFR1OaNyW3vHvhaILzpGziAgj5DPuVnU3PUp1p5iOBd382FLCBVM6nEPyu/LCOA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.ML": { - "type": "Transitive", - "resolved": "1.8.2124", - "contentHash": "l7ZptLbvOWHEJgxZtCQhUzDNCakNcqSJyAa7DNXBLKxGIUMDqq9LnWyYRZZFNQwN7hRfDAR8fEAblP1UHYHGgw==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" - } - }, - "Microsoft.WindowsAppSDK.Runtime": { - "type": "Transitive", - "resolved": "1.8.260209005", - "contentHash": "aZjMu/glUGjzACowzzhj9drn/Ddfp1yA+f7CFXpkiSk6iZ2x32vhKfcqT64RpJ6R+Dj1hl9/79aXFhIavYNj9g==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.Widgets": { - "type": "Transitive", - "resolved": "1.8.251231004", - "contentHash": "bIWqQYR8DCoB1SoPOMil5AtgtkTn438wJTdpsHgyO/6o7Eh7PMP5BzrR0KbDsFqy+4LhPWQ4vtwko5k93fECcA==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001" - } - }, - "Microsoft.WindowsAppSDK.WinUI": { - "type": "Transitive", - "resolved": "1.8.260204000", - "contentHash": "DSpA01+iPXwky4O1uZCrdClSi2aRIYTIhmsTeC1EsJmWBFpSirwNAg4EGHejijV6u4ZVkTdyv3px0Y2P3fp72Q==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.3179.45", - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.Foundation": "1.8.260203002", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - }, - "common": { - "type": "Project", - "dependencies": { - "boost": "[1.84.0, )" - } - }, - "microsoft.reactnative": { - "type": "Project", - "dependencies": { - "Common": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2604.21001-94aa5e1d, )", - "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.WindowsAppSDK": "[1.8.260209005, )", - "ReactCommon": "[1.0.0, )", - "boost": "[1.84.0, )" - } - }, - "reactcommon": { - "type": "Project", - "dependencies": { - "boost": "[1.84.0, )" - } - } - }, - "native,Version=v0.0/win": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-arm64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-x64": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - }, - "native,Version=v0.0/win-x86": { - "Microsoft.VCRTForwarders.140": { - "type": "Direct", - "requested": "[1.0.6, )", - "resolved": "1.0.6", - "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.3179.45", - "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" - }, - "Microsoft.WindowsAppSDK.Foundation": { - "type": "Transitive", - "resolved": "1.8.260203002", - "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", - "dependencies": { - "Microsoft.WindowsAppSDK.Base": "1.8.251216001", - "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" - } - } - } - } -} \ No newline at end of file From b620764c31fc62665267661b3f540b20c23d0048 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 15:35:47 -0700 Subject: [PATCH 30/64] Restore deleted lock files --- .../packages.lock.json | 194 ++++++++++++ .../packages.lock.json | 277 ++++++++++++++++++ 2 files changed, 471 insertions(+) create mode 100644 vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json create mode 100644 vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json diff --git a/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json b/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json new file mode 100644 index 00000000000..3077a54470f --- /dev/null +++ b/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.lock.json @@ -0,0 +1,194 @@ +{ + "version": 1, + "dependencies": { + "native,Version=v0.0": { + "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { + "type": "Direct", + "requested": "[1.8.1.7, )", + "resolved": "1.8.1.7", + "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" + }, + "Microsoft.Windows.CppWinRT": { + "type": "Direct", + "requested": "[2.0.230706.1, )", + "resolved": "2.0.230706.1", + "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.8.260209005, )", + "resolved": "1.8.260209005", + "contentHash": "AGHOiZcrDrpaxpHfEFKlI8MVnibfbSixI5DlbU6ozP/9dyWN5FkTFowg+dEOnaFRCnOzTSAjBQ1HuS4lAO+aMQ==", + "dependencies": { + "Microsoft.WindowsAppSDK.AI": "[1.8.47]", + "Microsoft.WindowsAppSDK.Base": "[1.8.251216001]", + "Microsoft.WindowsAppSDK.DWrite": "[1.8.25122902]", + "Microsoft.WindowsAppSDK.Foundation": "[1.8.260203002]", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "[1.8.260125001]", + "Microsoft.WindowsAppSDK.ML": "[1.8.2124]", + "Microsoft.WindowsAppSDK.Runtime": "[1.8.260209005]", + "Microsoft.WindowsAppSDK.Widgets": "[1.8.251231004]", + "Microsoft.WindowsAppSDK.WinUI": "[1.8.260204000]" + } + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.Windows.SDK.BuildTools": { + "type": "Transitive", + "resolved": "10.0.26100.4654", + "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" + }, + "Microsoft.Windows.SDK.BuildTools.MSIX": { + "type": "Transitive", + "resolved": "1.7.20250829.1", + "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" + }, + "Microsoft.WindowsAppSDK.AI": { + "type": "Transitive", + "resolved": "1.8.47", + "contentHash": "9il8KT8WR4T826hnm3M/USZTkPtVXFGE0IztmE1l7H9DPYsa3QHEUgGHFHQg88fsMjdr3vhyMvs23AB+1IYF1w==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" + } + }, + "Microsoft.WindowsAppSDK.Base": { + "type": "Transitive", + "resolved": "1.8.251216001", + "contentHash": "PS1wriuFknz3W2F2P/e6RvOTM35w89Lsj/f0QmUEPrJjKnc+jM0JLX1vfdytI14y1gNRUTm9uclwP0aH/SVU5w==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", + "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" + } + }, + "Microsoft.WindowsAppSDK.DWrite": { + "type": "Transitive", + "resolved": "1.8.25122902", + "contentHash": "zFNn07i7Cyz62Y8FnPQAyzeZK7ww3m9t42i9pzy4C04pNbyUDQ4fG7pB6VSh6n4EyFuYtuFQuDzt4mKmXFrkrg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + }, + "Microsoft.WindowsAppSDK.InteractiveExperiences": { + "type": "Transitive", + "resolved": "1.8.260125001", + "contentHash": "CTGFd1zhIDbnOltZ6piPvpNXFR1OaNyW3vHvhaILzpGziAgj5DPuVnU3PUp1p5iOBd382FLCBVM6nEPyu/LCOA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.ML": { + "type": "Transitive", + "resolved": "1.8.2124", + "contentHash": "l7ZptLbvOWHEJgxZtCQhUzDNCakNcqSJyAa7DNXBLKxGIUMDqq9LnWyYRZZFNQwN7hRfDAR8fEAblP1UHYHGgw==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" + } + }, + "Microsoft.WindowsAppSDK.Runtime": { + "type": "Transitive", + "resolved": "1.8.260209005", + "contentHash": "aZjMu/glUGjzACowzzhj9drn/Ddfp1yA+f7CFXpkiSk6iZ2x32vhKfcqT64RpJ6R+Dj1hl9/79aXFhIavYNj9g==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.Widgets": { + "type": "Transitive", + "resolved": "1.8.251231004", + "contentHash": "bIWqQYR8DCoB1SoPOMil5AtgtkTn438wJTdpsHgyO/6o7Eh7PMP5BzrR0KbDsFqy+4LhPWQ4vtwko5k93fECcA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.WinUI": { + "type": "Transitive", + "resolved": "1.8.260204000", + "contentHash": "DSpA01+iPXwky4O1uZCrdClSi2aRIYTIhmsTeC1EsJmWBFpSirwNAg4EGHejijV6u4ZVkTdyv3px0Y2P3fp72Q==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.3179.45", + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.Foundation": "1.8.260203002", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + }, + "native,Version=v0.0/win": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + }, + "native,Version=v0.0/win-arm64": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + }, + "native,Version=v0.0/win-x64": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + }, + "native,Version=v0.0/win-x86": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + } + } +} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json new file mode 100644 index 00000000000..06c6778b7db --- /dev/null +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json @@ -0,0 +1,277 @@ +{ + "version": 1, + "dependencies": { + "native,Version=v0.0": { + "boost": { + "type": "Direct", + "requested": "[1.84.0, )", + "resolved": "1.84.0", + "contentHash": "4el2YP3cNJDVFPdzOso+LxGvdWP2rHxML4siq8VdonNypW2m4q503tHfCj6vK0L1UfxioE2hpFGb4ITEua73tg==" + }, + "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { + "type": "Direct", + "requested": "[1.8.1.7, )", + "resolved": "1.8.1.7", + "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" + }, + "Microsoft.VCRTForwarders.140": { + "type": "Direct", + "requested": "[1.0.6, )", + "resolved": "1.0.6", + "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" + }, + "Microsoft.Windows.CppWinRT": { + "type": "Direct", + "requested": "[2.0.230706.1, )", + "resolved": "2.0.230706.1", + "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[1.8.260209005, )", + "resolved": "1.8.260209005", + "contentHash": "AGHOiZcrDrpaxpHfEFKlI8MVnibfbSixI5DlbU6ozP/9dyWN5FkTFowg+dEOnaFRCnOzTSAjBQ1HuS4lAO+aMQ==", + "dependencies": { + "Microsoft.WindowsAppSDK.AI": "[1.8.47]", + "Microsoft.WindowsAppSDK.Base": "[1.8.251216001]", + "Microsoft.WindowsAppSDK.DWrite": "[1.8.25122902]", + "Microsoft.WindowsAppSDK.Foundation": "[1.8.260203002]", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "[1.8.260125001]", + "Microsoft.WindowsAppSDK.ML": "[1.8.2124]", + "Microsoft.WindowsAppSDK.Runtime": "[1.8.260209005]", + "Microsoft.WindowsAppSDK.Widgets": "[1.8.251231004]", + "Microsoft.WindowsAppSDK.WinUI": "[1.8.260204000]" + } + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" + }, + "Microsoft.JavaScript.Hermes": { + "type": "Transitive", + "resolved": "0.0.0-2604.21001-94aa5e1d", + "contentHash": "8eHA3O043jIeK7E1gJbzgsdujaDTIBwLSl6pZj7CdQl+ryFqaW88XVU9ogWJPxk5lR2T4cU/OlEJfZynqoyYew==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" + }, + "Microsoft.SourceLink.GitHub": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "1.1.1", + "Microsoft.SourceLink.Common": "1.1.1" + } + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.Windows.SDK.BuildTools": { + "type": "Transitive", + "resolved": "10.0.26100.4654", + "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" + }, + "Microsoft.Windows.SDK.BuildTools.MSIX": { + "type": "Transitive", + "resolved": "1.7.20250829.1", + "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" + }, + "Microsoft.WindowsAppSDK.AI": { + "type": "Transitive", + "resolved": "1.8.47", + "contentHash": "9il8KT8WR4T826hnm3M/USZTkPtVXFGE0IztmE1l7H9DPYsa3QHEUgGHFHQg88fsMjdr3vhyMvs23AB+1IYF1w==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" + } + }, + "Microsoft.WindowsAppSDK.Base": { + "type": "Transitive", + "resolved": "1.8.251216001", + "contentHash": "PS1wriuFknz3W2F2P/e6RvOTM35w89Lsj/f0QmUEPrJjKnc+jM0JLX1vfdytI14y1gNRUTm9uclwP0aH/SVU5w==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", + "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" + } + }, + "Microsoft.WindowsAppSDK.DWrite": { + "type": "Transitive", + "resolved": "1.8.25122902", + "contentHash": "zFNn07i7Cyz62Y8FnPQAyzeZK7ww3m9t42i9pzy4C04pNbyUDQ4fG7pB6VSh6n4EyFuYtuFQuDzt4mKmXFrkrg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + }, + "Microsoft.WindowsAppSDK.InteractiveExperiences": { + "type": "Transitive", + "resolved": "1.8.260125001", + "contentHash": "CTGFd1zhIDbnOltZ6piPvpNXFR1OaNyW3vHvhaILzpGziAgj5DPuVnU3PUp1p5iOBd382FLCBVM6nEPyu/LCOA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.ML": { + "type": "Transitive", + "resolved": "1.8.2124", + "contentHash": "l7ZptLbvOWHEJgxZtCQhUzDNCakNcqSJyAa7DNXBLKxGIUMDqq9LnWyYRZZFNQwN7hRfDAR8fEAblP1UHYHGgw==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.Foundation": "1.8.260126001" + } + }, + "Microsoft.WindowsAppSDK.Runtime": { + "type": "Transitive", + "resolved": "1.8.260209005", + "contentHash": "aZjMu/glUGjzACowzzhj9drn/Ddfp1yA+f7CFXpkiSk6iZ2x32vhKfcqT64RpJ6R+Dj1hl9/79aXFhIavYNj9g==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.Widgets": { + "type": "Transitive", + "resolved": "1.8.251231004", + "contentHash": "bIWqQYR8DCoB1SoPOMil5AtgtkTn438wJTdpsHgyO/6o7Eh7PMP5BzrR0KbDsFqy+4LhPWQ4vtwko5k93fECcA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001" + } + }, + "Microsoft.WindowsAppSDK.WinUI": { + "type": "Transitive", + "resolved": "1.8.260204000", + "contentHash": "DSpA01+iPXwky4O1uZCrdClSi2aRIYTIhmsTeC1EsJmWBFpSirwNAg4EGHejijV6u4ZVkTdyv3px0Y2P3fp72Q==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.3179.45", + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.Foundation": "1.8.260203002", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + }, + "common": { + "type": "Project", + "dependencies": { + "boost": "[1.84.0, )" + } + }, + "microsoft.reactnative": { + "type": "Project", + "dependencies": { + "Common": "[1.0.0, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2604.21001-94aa5e1d, )", + "Microsoft.SourceLink.GitHub": "[1.1.1, )", + "Microsoft.WindowsAppSDK": "[1.8.260209005, )", + "ReactCommon": "[1.0.0, )", + "boost": "[1.84.0, )" + } + }, + "reactcommon": { + "type": "Project", + "dependencies": { + "boost": "[1.84.0, )" + } + } + }, + "native,Version=v0.0/win": { + "Microsoft.VCRTForwarders.140": { + "type": "Direct", + "requested": "[1.0.6, )", + "resolved": "1.0.6", + "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + }, + "native,Version=v0.0/win-arm64": { + "Microsoft.VCRTForwarders.140": { + "type": "Direct", + "requested": "[1.0.6, )", + "resolved": "1.0.6", + "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + }, + "native,Version=v0.0/win-x64": { + "Microsoft.VCRTForwarders.140": { + "type": "Direct", + "requested": "[1.0.6, )", + "resolved": "1.0.6", + "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + }, + "native,Version=v0.0/win-x86": { + "Microsoft.VCRTForwarders.140": { + "type": "Direct", + "requested": "[1.0.6, )", + "resolved": "1.0.6", + "contentHash": "CRemcSRRhH5wtdovxqcz3AgjttqgEXJzJuXSCjNStxW/JSm54xM7kSkwVb3tYen/mGCnGv/+PHvpEaliMEUxYA==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3179.45", + "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "1.8.260203002", + "contentHash": "eKQ/prWq98mW7+E+ffot47iZNbDnq/NVN9R9Gi8vmoU/3Ka6zNNivxdICXh6j7g6REFPCV9530/nQYQC0L3fwg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "1.8.251216001", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260125001" + } + } + } + } +} \ No newline at end of file From 95ff0420c14c4173f71239189f1ab9b57c15d2b6 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 16:33:47 -0700 Subject: [PATCH 31/64] Add missing dependency --- packages/@react-native-windows/find-dotnet-tools/package.json | 3 +++ yarn.lock | 1 + 2 files changed, 4 insertions(+) diff --git a/packages/@react-native-windows/find-dotnet-tools/package.json b/packages/@react-native-windows/find-dotnet-tools/package.json index c2f218b5dd2..77901e68a1c 100644 --- a/packages/@react-native-windows/find-dotnet-tools/package.json +++ b/packages/@react-native-windows/find-dotnet-tools/package.json @@ -16,6 +16,9 @@ "url": "https://github.com/microsoft/react-native-windows", "directory": "packages/@react-native-windows/find-dotnet-tools" }, + "dependencies": { + "@react-native-windows/fs": "^0.0.0-canary.72" + }, "devDependencies": { "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/just-task": "2.3.58", diff --git a/yarn.lock b/yarn.lock index 524ef8a49f8..6ee2ecc7b23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3669,6 +3669,7 @@ __metadata: version: 0.0.0-use.local resolution: "@react-native-windows/find-dotnet-tools@workspace:packages/@react-native-windows/find-dotnet-tools" dependencies: + "@react-native-windows/fs": "npm:^0.0.0-canary.72" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/just-task": "npm:2.3.58" "@rnw-scripts/ts-config": "npm:2.0.6" From 8d9d22944f8a12e74c232125f2213eb666eba1a8 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 18:04:27 -0700 Subject: [PATCH 32/64] Use -Command for compatible PWSH calls --- packages/@react-native-windows/cli/src/utils/deploy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index a4d5d7dc4b3..58c8f597177 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -185,7 +185,7 @@ function getWindowsStoreAppUtils(options: RunWindowsOptions) { ); const powershell = findPowerShell(); execSync( - `"${powershell}" -NoProfile Unblock-File '${windowsStoreAppUtilsPath}'`, + `"${powershell}" -NoProfile -Command { Unblock-File '${windowsStoreAppUtilsPath}' }`, ); popd(); return windowsStoreAppUtilsPath; From acb7e236daa9714d0aa1dd5a90b86ee9c56985aa Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Fri, 1 May 2026 23:15:10 -0700 Subject: [PATCH 33/64] Use -Command pwsh argument --- .../@react-native-windows/cli/src/utils/commandWithProgress.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 5eede1266c3..5dd5410e48c 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -68,7 +68,8 @@ export async function runPowerShellScriptFunction( '-NoProfile', '-ExecutionPolicy', 'RemoteSigned', - `${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec`, + '-Command', + `"&{${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec}"`, ], verbose, errorCategory, From 898c20e7d1596c0492b600c6f2d044d6bd3fba84 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sat, 2 May 2026 02:49:12 -0700 Subject: [PATCH 34/64] Correct runPowerShellScriptFunction cmd escaping --- .../cli/src/utils/commandWithProgress.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 5dd5410e48c..8e660e78b88 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -59,7 +59,8 @@ export async function runPowerShellScriptFunction( ) { try { const printException = verbose ? '$_;' : ''; - const importScript = script ? `Import-Module "${script}"; ` : ''; + const importScript = script ? `Import-Module '${script}'; ` : ''; + const powershellCommand = `${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec`; await commandWithProgress( newSpinner(taskDescription), taskDescription, @@ -69,7 +70,7 @@ export async function runPowerShellScriptFunction( '-ExecutionPolicy', 'RemoteSigned', '-Command', - `"&{${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec}"`, + `&{${powershellCommand}}`, ], verbose, errorCategory, @@ -90,7 +91,7 @@ export function commandWithProgress( errorCategory: CodedErrorType, ) { return new Promise((resolve, reject) => { - const spawnOptions: SpawnOptions = verbose ? {stdio: 'inherit'} : {}; + const spawnOptions: SpawnOptions = verbose ? { stdio: 'inherit' } : {}; if (verbose) { spinner.stop(); From 2c9c5183f97f8ed11eaa6427bdab7ff705c1896e Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sat, 2 May 2026 04:58:00 -0700 Subject: [PATCH 35/64] Quote pwsh command in runPowerShellScriptFunction --- .../@react-native-windows/cli/src/utils/commandWithProgress.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 8e660e78b88..5733008167b 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -64,7 +64,7 @@ export async function runPowerShellScriptFunction( await commandWithProgress( newSpinner(taskDescription), taskDescription, - powershell, + `"${powershell}"`, [ '-NoProfile', '-ExecutionPolicy', From e08f93c7aeb5beb0a0a559f02e6940f5e6e5f615 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sun, 3 May 2026 00:34:24 -0700 Subject: [PATCH 36/64] Remove quotes --- .../@react-native-windows/cli/src/utils/commandWithProgress.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 5733008167b..8e660e78b88 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -64,7 +64,7 @@ export async function runPowerShellScriptFunction( await commandWithProgress( newSpinner(taskDescription), taskDescription, - `"${powershell}"`, + powershell, [ '-NoProfile', '-ExecutionPolicy', From 8ed6050e48fbb0a04904ee9f6b181cb9cca8527e Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sun, 3 May 2026 01:39:14 -0700 Subject: [PATCH 37/64] Quote remaining findPowerShell() calls for execSync --- packages/@react-native-windows/cli/src/utils/deploy.ts | 2 +- packages/@react-native-windows/cli/src/utils/msbuildtools.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index 58c8f597177..f3240efe84b 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -458,7 +458,7 @@ export async function deployToDesktop( } const appFamilyName = execSync( - `${findPowerShell()} -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`, + `"${findPowerShell()}" -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`, ) .toString() .trim(); diff --git a/packages/@react-native-windows/cli/src/utils/msbuildtools.ts b/packages/@react-native-windows/cli/src/utils/msbuildtools.ts index 21811569d84..859ef8c28e9 100644 --- a/packages/@react-native-windows/cli/src/utils/msbuildtools.ts +++ b/packages/@react-native-windows/cli/src/utils/msbuildtools.ts @@ -317,7 +317,7 @@ export default class MSBuildTools { 'Eval-MsBuildProperties.ps1', ); - let command = `${findPowerShell()} -ExecutionPolicy Unrestricted -NoProfile "${msbuildEvalScriptPath}" -SolutionFile '${solutionFile}' -ProjectFile '${projectFile}' -MSBuildPath '${this.msbuildPath()}'`; + let command = `"${findPowerShell()}" -ExecutionPolicy Unrestricted -NoProfile "${msbuildEvalScriptPath}" -SolutionFile '${solutionFile}' -ProjectFile '${projectFile}' -MSBuildPath '${this.msbuildPath()}'`; if (propertyNames && propertyNames.length > 0) { command += ` -PropertyNames '${propertyNames.join(',')}'`; From 683e3dbefee96b2afaeeb4c492990146ed99ab69 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sun, 3 May 2026 22:21:47 -0700 Subject: [PATCH 38/64] Add temporary diagnostic commands --- .ado/jobs/e2e-test.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 9cd5b6a892a..76db50d2e3d 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -34,6 +34,10 @@ parameters: BuildPlatform: x64 - Name: X86Hermes BuildPlatform: x86 + #TODO: Delete before merging. + - name: System.Debug + type: boolean + default: true jobs: - ${{ each config in parameters.buildMatrix }}: @@ -48,6 +52,13 @@ jobs: cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them steps: + #TODO: Delete before merging. + - pwsh: | + $PSVersionTable + pwsh.exe -Command "$PSVersionTable" + Get-Command pwsh.exe | Format-List + Get-Service -Name AppXSVC | Format-List + Get-Command Get-AppxPackage | Format-List - template: ../templates/checkout-shallow.yml - template: ../templates/prepare-js-env.yml From 1b741d2d3e5e7a9649189d34f4e6d0377853ae38 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sun, 3 May 2026 22:44:57 -0700 Subject: [PATCH 39/64] Diagnostics --- .ado/jobs/e2e-test.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 76db50d2e3d..3a169c5590f 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -54,10 +54,18 @@ jobs: steps: #TODO: Delete before merging. - pwsh: | - $PSVersionTable - pwsh.exe -Command "$PSVersionTable" + Write-Host "pwsh.exe command information:" Get-Command pwsh.exe | Format-List + + Write-Host "PowerShell version information:" + $PSVersionTable + + Write-Host "AppXSVC service information:" Get-Service -Name AppXSVC | Format-List + + Write-Host "Importing Appx module..." + Import-Module -Name Appx + Write-Host "Get-AppxPackage command information:" Get-Command Get-AppxPackage | Format-List - template: ../templates/checkout-shallow.yml From b241cbc83a2c955d97382d012596f74a5aca5ee8 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sun, 3 May 2026 22:45:40 -0700 Subject: [PATCH 40/64] Diagnostics --- .ado/jobs/e2e-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 3a169c5590f..955662fd208 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -63,6 +63,8 @@ jobs: Write-Host "AppXSVC service information:" Get-Service -Name AppXSVC | Format-List + Write-Host "Appx module information:" + Get-Module -Name Appx Write-Host "Importing Appx module..." Import-Module -Name Appx Write-Host "Get-AppxPackage command information:" From 87ee497c75d60915ed08ed48ab87104805e73baf Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Sun, 3 May 2026 23:46:35 -0700 Subject: [PATCH 41/64] Diagnostics --- .ado/jobs/e2e-test.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 955662fd208..94cd021d6e6 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -53,6 +53,24 @@ jobs: steps: #TODO: Delete before merging. + - powershell: | + Write-Host "pwsh.exe command information:" + Get-Command pwsh.exe | Format-List + + Write-Host "PowerShell version information:" + $PSVersionTable + + Write-Host "AppXSVC service information:" + Get-Service -Name AppXSVC | Format-List + + Write-Host "Appx modules available on this host:" + Get-Module -ListAvailable Appx | Format-List + Write-Host "Appx module information:" + Get-Module -Name Appx + Write-Host "Importing Appx module..." + Import-Module -Name Appx + Write-Host "Get-AppxPackage command information:" + Get-Command Get-AppxPackage | Format-List - pwsh: | Write-Host "pwsh.exe command information:" Get-Command pwsh.exe | Format-List @@ -63,6 +81,8 @@ jobs: Write-Host "AppXSVC service information:" Get-Service -Name AppXSVC | Format-List + Write-Host "Appx modules available on this host:" + Get-Module -ListAvailable Appx | Format-List Write-Host "Appx module information:" Get-Module -Name Appx Write-Host "Importing Appx module..." From 17f0668f6413269b4c2d8536152f6eb61a81f8ee Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Mon, 4 May 2026 00:51:18 -0700 Subject: [PATCH 42/64] Add runPowerShellScriptFunction argument to delegate Appx-related commands to Windows PowerShell --- .../automation/src/AutomationEnvironment.ts | 11 +++++++++-- .../cli/src/utils/commandWithProgress.ts | 6 +++++- .../@react-native-windows/cli/src/utils/deploy.ts | 12 +++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index bc8409af8b2..dab9f815c02 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -251,7 +251,7 @@ export default class AutomationEnvironment extends NodeEnvironment { if (this.breakOnStart) { readlineSync.question( chalk.bold.yellow('Breaking before tests start\n') + - 'Press Enter to resume...', + 'Press Enter to resume...', ); } @@ -336,8 +336,15 @@ function resolveAppName(appName: string): string { } try { + const useAppxCompatibility = !!process.env.TF_BUILD; + const escapedAppName = appName.replace(/'/g, "''"); + const packageFamilyNameCommand = useAppxCompatibility + ? `& { Import-Module Appx -UseWindowsPowerShell; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` + : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; const packageFamilyName = spawnSync(findPowerShell(), [ - `(Get-AppxPackage -Name ${appName}).PackageFamilyName`, + '-NoProfile', + '-Command', + packageFamilyNameCommand, ]) .stdout.toString() .trim(); diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 8e660e78b88..d59f5db74f9 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -56,11 +56,15 @@ export async function runPowerShellScriptFunction( funcName: string, verbose: boolean, errorCategory: CodedErrorType, + useAppxCompatibility = false, ) { try { const printException = verbose ? '$_;' : ''; + const importAppx = useAppxCompatibility + ? 'Import-Module Appx -UseWindowsPowerShell; ' + : ''; const importScript = script ? `Import-Module '${script}'; ` : ''; - const powershellCommand = `${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec`; + const powershellCommand = `${importAppx}${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec`; await commandWithProgress( newSpinner(taskDescription), taskDescription, diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index f3240efe84b..c8718c77bf0 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -360,6 +360,7 @@ export async function deployToDesktop( config: Config, buildTools: MSBuildTools, ) { + const useAppxCompatibility = !!process.env.TF_BUILD; const windowsConfig: Partial | undefined = config.project.windows; const slnFile = @@ -392,6 +393,7 @@ export async function deployToDesktop( 'EnableDevMode', verbose, 'EnableDevModeFailure', + useAppxCompatibility, ); const appPackageFolder = getAppPackage(options, projectName); @@ -404,6 +406,7 @@ export async function deployToDesktop( `Uninstall-App ${appName}`, verbose, 'RemoveOldAppVersionFailure', + useAppxCompatibility, ); const script = glob.sync( @@ -416,6 +419,7 @@ export async function deployToDesktop( `Install-App "${script}" -Force`, verbose, 'InstallAppFailure', + useAppxCompatibility, ); } else { // Deploy from layout @@ -443,6 +447,7 @@ export async function deployToDesktop( `Install-AppDependencies ${appxManifestPath} ${appPackageFolder} ${options.arch}`, verbose, 'InstallAppDependenciesFailure', + useAppxCompatibility, ); await build.buildSolution( buildTools, @@ -457,8 +462,12 @@ export async function deployToDesktop( } } + const escapedAppName = appName.replace(/'/g, "''"); + const appFamilyNameCommand = useAppxCompatibility + ? `& { Import-Module Appx -UseWindowsPowerShell; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` + : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; const appFamilyName = execSync( - `"${findPowerShell()}" -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`, + `"${findPowerShell()}" -NoProfile -Command "${appFamilyNameCommand}"`, ) .toString() .trim(); @@ -489,6 +498,7 @@ export async function deployToDesktop( `Start-Locally ${appName} ${args}`, verbose, 'AppStartupFailure', + useAppxCompatibility, ); } else { newInfo('Skip the step to start the app'); From f30780a78fc4075ce3b97a21daa5733884422d20 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Mon, 4 May 2026 00:52:10 -0700 Subject: [PATCH 43/64] Remove diagnostics steps --- .ado/jobs/e2e-test.yml | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 94cd021d6e6..9cd5b6a892a 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -34,10 +34,6 @@ parameters: BuildPlatform: x64 - Name: X86Hermes BuildPlatform: x86 - #TODO: Delete before merging. - - name: System.Debug - type: boolean - default: true jobs: - ${{ each config in parameters.buildMatrix }}: @@ -52,43 +48,6 @@ jobs: cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them steps: - #TODO: Delete before merging. - - powershell: | - Write-Host "pwsh.exe command information:" - Get-Command pwsh.exe | Format-List - - Write-Host "PowerShell version information:" - $PSVersionTable - - Write-Host "AppXSVC service information:" - Get-Service -Name AppXSVC | Format-List - - Write-Host "Appx modules available on this host:" - Get-Module -ListAvailable Appx | Format-List - Write-Host "Appx module information:" - Get-Module -Name Appx - Write-Host "Importing Appx module..." - Import-Module -Name Appx - Write-Host "Get-AppxPackage command information:" - Get-Command Get-AppxPackage | Format-List - - pwsh: | - Write-Host "pwsh.exe command information:" - Get-Command pwsh.exe | Format-List - - Write-Host "PowerShell version information:" - $PSVersionTable - - Write-Host "AppXSVC service information:" - Get-Service -Name AppXSVC | Format-List - - Write-Host "Appx modules available on this host:" - Get-Module -ListAvailable Appx | Format-List - Write-Host "Appx module information:" - Get-Module -Name Appx - Write-Host "Importing Appx module..." - Import-Module -Name Appx - Write-Host "Get-AppxPackage command information:" - Get-Command Get-AppxPackage | Format-List - template: ../templates/checkout-shallow.yml - template: ../templates/prepare-js-env.yml From 0943a29ba4d80223038e5d4f7b2ed5b020c4815b Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Mon, 4 May 2026 18:36:38 -0700 Subject: [PATCH 44/64] Use execFileSync instead of execSync in deploy.ts --- .../cli/src/utils/deploy.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index c8718c77bf0..3f47dd27d48 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -4,7 +4,7 @@ * @format */ -import {spawn, execSync, SpawnOptions} from 'child_process'; +import {spawn, execFileSync, SpawnOptions} from 'child_process'; import fs from '@react-native-windows/fs'; import http from 'http'; import path from 'path'; @@ -184,9 +184,11 @@ function getWindowsStoreAppUtils(options: RunWindowsOptions) { 'WindowsStoreAppUtils.psm1', ); const powershell = findPowerShell(); - execSync( - `"${powershell}" -NoProfile -Command { Unblock-File '${windowsStoreAppUtilsPath}' }`, - ); + execFileSync(powershell, [ + '-NoProfile', + '-Command', + `& { Unblock-File '${windowsStoreAppUtilsPath}' }`, + ]); popd(); return windowsStoreAppUtilsPath; } @@ -466,9 +468,11 @@ export async function deployToDesktop( const appFamilyNameCommand = useAppxCompatibility ? `& { Import-Module Appx -UseWindowsPowerShell; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; - const appFamilyName = execSync( - `"${findPowerShell()}" -NoProfile -Command "${appFamilyNameCommand}"`, - ) + const appFamilyName = execFileSync(findPowerShell(), [ + '-NoProfile', + '-Command', + appFamilyNameCommand, + ]) .toString() .trim(); From e1f3cfdf0520f916e4f7fe6ac62a7eebba3bb51a Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Mon, 4 May 2026 19:05:41 -0700 Subject: [PATCH 45/64] Remove querystrings from FS paths --- ...pm-0.85.0-nightly-20260114-f15985f4f.patch | 29 +++++++++++++++++++ package.json | 3 +- yarn.lock | 23 +++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 .yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch diff --git a/.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch b/.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch new file mode 100644 index 00000000000..74d3756e307 --- /dev/null +++ b/.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch @@ -0,0 +1,29 @@ +diff --git a/dist/commands/bundle/saveAssets.js b/dist/commands/bundle/saveAssets.js +index 8cbca65..b7f0f68 100644 +--- a/dist/commands/bundle/saveAssets.js ++++ b/dist/commands/bundle/saveAssets.js +@@ -106,7 +106,12 @@ function copyAll(filesToCopy) { + }); + } + function copy(src, dest, callback) { +- const destDir = _path.default.dirname(dest); ++ // Metro may append query params (e.g. "?unstable_path=...") to asset paths. ++ // Strip them before filesystem operations on Windows. ++ const srcWithoutQuery = src.split('?')[0]; ++ const destWithoutQuery = dest.split('?')[0]; ++ ++ const destDir = _path.default.dirname(destWithoutQuery); + _fs.default.mkdir( + destDir, + { +@@ -117,8 +122,8 @@ function copy(src, dest, callback) { + return; + } + _fs.default +- .createReadStream(src) +- .pipe(_fs.default.createWriteStream(dest)) ++ .createReadStream(srcWithoutQuery) ++ .pipe(_fs.default.createWriteStream(destWithoutQuery)) + .on("finish", callback); + }, + ); diff --git a/package.json b/package.json index 8593871a5ea..d2fd8a124e4 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,8 @@ "@react-native/monorepo/jest-junit": "^13.0.0", "@react-native/monorepo/ws": "^6.2.3", "@react-native/tester/ws": "^6.2.3", - "puppeteer-core/ws": "^8.17.1" + "puppeteer-core/ws": "^8.17.1", + "@react-native/community-cli-plugin": "patch:@react-native/community-cli-plugin@npm:0.85.0-nightly-20260114-f15985f4f#./.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch" }, "packageManager": "yarn@4.13.0" } diff --git a/yarn.lock b/yarn.lock index 6ee2ecc7b23..a1f7cf187be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3949,6 +3949,29 @@ __metadata: languageName: node linkType: hard +"@react-native/community-cli-plugin@patch:@react-native/community-cli-plugin@npm:0.85.0-nightly-20260114-f15985f4f#./.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch::locator=react-native-windows-repo%40workspace%3A.": + version: 0.85.0-nightly-20260114-f15985f4f + resolution: "@react-native/community-cli-plugin@patch:@react-native/community-cli-plugin@npm%3A0.85.0-nightly-20260114-f15985f4f#./.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch::version=0.85.0-nightly-20260114-f15985f4f&hash=e8e389&locator=react-native-windows-repo%40workspace%3A." + dependencies: + "@react-native/dev-middleware": "npm:0.85.0-nightly-20260114-f15985f4f" + debug: "npm:^4.4.0" + invariant: "npm:^2.2.4" + metro: "npm:^0.83.3" + metro-config: "npm:^0.83.3" + metro-core: "npm:^0.83.3" + semver: "npm:^7.1.3" + peerDependencies: + "@react-native-community/cli": "*" + "@react-native/metro-config": "*" + peerDependenciesMeta: + "@react-native-community/cli": + optional: true + "@react-native/metro-config": + optional: true + checksum: 10c0/047b2bbce1589b5980d6e55f21cb26c9bd945abbe3971951fc76af6e222110f06d32f6f4aefd8b8cde6504935ae2b7e55ddb5e904b675072d99a66d2d5b6a66a + languageName: node + linkType: hard + "@react-native/debugger-frontend@npm:0.85.0-nightly-20260114-f15985f4f": version: 0.85.0-nightly-20260114-f15985f4f resolution: "@react-native/debugger-frontend@npm:0.85.0-nightly-20260114-f15985f4f" From abf734919f57eab174ff1bbb5a8d2b60d86cfcf4 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Mon, 4 May 2026 22:51:54 -0700 Subject: [PATCH 46/64] Suppress warning when using `-UseWindowsPowerShell` --- .../@react-native-windows/cli/src/utils/commandWithProgress.ts | 2 +- packages/@react-native-windows/cli/src/utils/deploy.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index d59f5db74f9..1d085b0f45f 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -61,7 +61,7 @@ export async function runPowerShellScriptFunction( try { const printException = verbose ? '$_;' : ''; const importAppx = useAppxCompatibility - ? 'Import-Module Appx -UseWindowsPowerShell; ' + ? 'Import-Module Appx -UseWindowsPowerShell 3>$null; ' : ''; const importScript = script ? `Import-Module '${script}'; ` : ''; const powershellCommand = `${importAppx}${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec`; diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index 3f47dd27d48..d605a7cc2ae 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -466,7 +466,7 @@ export async function deployToDesktop( const escapedAppName = appName.replace(/'/g, "''"); const appFamilyNameCommand = useAppxCompatibility - ? `& { Import-Module Appx -UseWindowsPowerShell; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` + ? `& { Import-Module Appx -UseWindowsPowerShell 3>$null; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; const appFamilyName = execFileSync(findPowerShell(), [ '-NoProfile', From 0a90d2486c23d23e2a4cfc65edefcac35033aabf Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Tue, 5 May 2026 16:18:59 -0700 Subject: [PATCH 47/64] Revert "Remove querystrings from FS paths" This reverts commit e1f3cfdf0520f916e4f7fe6ac62a7eebba3bb51a. --- ...pm-0.85.0-nightly-20260114-f15985f4f.patch | 29 ------------------- package.json | 3 +- yarn.lock | 23 --------------- 3 files changed, 1 insertion(+), 54 deletions(-) delete mode 100644 .yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch diff --git a/.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch b/.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch deleted file mode 100644 index 74d3756e307..00000000000 --- a/.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/dist/commands/bundle/saveAssets.js b/dist/commands/bundle/saveAssets.js -index 8cbca65..b7f0f68 100644 ---- a/dist/commands/bundle/saveAssets.js -+++ b/dist/commands/bundle/saveAssets.js -@@ -106,7 +106,12 @@ function copyAll(filesToCopy) { - }); - } - function copy(src, dest, callback) { -- const destDir = _path.default.dirname(dest); -+ // Metro may append query params (e.g. "?unstable_path=...") to asset paths. -+ // Strip them before filesystem operations on Windows. -+ const srcWithoutQuery = src.split('?')[0]; -+ const destWithoutQuery = dest.split('?')[0]; -+ -+ const destDir = _path.default.dirname(destWithoutQuery); - _fs.default.mkdir( - destDir, - { -@@ -117,8 +122,8 @@ function copy(src, dest, callback) { - return; - } - _fs.default -- .createReadStream(src) -- .pipe(_fs.default.createWriteStream(dest)) -+ .createReadStream(srcWithoutQuery) -+ .pipe(_fs.default.createWriteStream(destWithoutQuery)) - .on("finish", callback); - }, - ); diff --git a/package.json b/package.json index d2fd8a124e4..8593871a5ea 100644 --- a/package.json +++ b/package.json @@ -70,8 +70,7 @@ "@react-native/monorepo/jest-junit": "^13.0.0", "@react-native/monorepo/ws": "^6.2.3", "@react-native/tester/ws": "^6.2.3", - "puppeteer-core/ws": "^8.17.1", - "@react-native/community-cli-plugin": "patch:@react-native/community-cli-plugin@npm:0.85.0-nightly-20260114-f15985f4f#./.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch" + "puppeteer-core/ws": "^8.17.1" }, "packageManager": "yarn@4.13.0" } diff --git a/yarn.lock b/yarn.lock index a1f7cf187be..6ee2ecc7b23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3949,29 +3949,6 @@ __metadata: languageName: node linkType: hard -"@react-native/community-cli-plugin@patch:@react-native/community-cli-plugin@npm:0.85.0-nightly-20260114-f15985f4f#./.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch::locator=react-native-windows-repo%40workspace%3A.": - version: 0.85.0-nightly-20260114-f15985f4f - resolution: "@react-native/community-cli-plugin@patch:@react-native/community-cli-plugin@npm%3A0.85.0-nightly-20260114-f15985f4f#./.yarn/patches/@react-native+community-cli-plugin@npm-0.85.0-nightly-20260114-f15985f4f.patch::version=0.85.0-nightly-20260114-f15985f4f&hash=e8e389&locator=react-native-windows-repo%40workspace%3A." - dependencies: - "@react-native/dev-middleware": "npm:0.85.0-nightly-20260114-f15985f4f" - debug: "npm:^4.4.0" - invariant: "npm:^2.2.4" - metro: "npm:^0.83.3" - metro-config: "npm:^0.83.3" - metro-core: "npm:^0.83.3" - semver: "npm:^7.1.3" - peerDependencies: - "@react-native-community/cli": "*" - "@react-native/metro-config": "*" - peerDependenciesMeta: - "@react-native-community/cli": - optional: true - "@react-native/metro-config": - optional: true - checksum: 10c0/047b2bbce1589b5980d6e55f21cb26c9bd945abbe3971951fc76af6e222110f06d32f6f4aefd8b8cde6504935ae2b7e55ddb5e904b675072d99a66d2d5b6a66a - languageName: node - linkType: hard - "@react-native/debugger-frontend@npm:0.85.0-nightly-20260114-f15985f4f": version: 0.85.0-nightly-20260114-f15985f4f resolution: "@react-native/debugger-frontend@npm:0.85.0-nightly-20260114-f15985f4f" From 6c46c73413af274b4535e94a327ed1d3202dc2ed Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Tue, 5 May 2026 18:37:13 -0700 Subject: [PATCH 48/64] Use pipe semantics for Get-AppxPackage in resolveAppName --- .../automation/src/AutomationEnvironment.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index dab9f815c02..7e9cdab563b 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -339,17 +339,20 @@ function resolveAppName(appName: string): string { const useAppxCompatibility = !!process.env.TF_BUILD; const escapedAppName = appName.replace(/'/g, "''"); const packageFamilyNameCommand = useAppxCompatibility - ? `& { Import-Module Appx -UseWindowsPowerShell; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` - : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; - const packageFamilyName = spawnSync(findPowerShell(), [ + ? `& { Import-Module Appx -UseWindowsPowerShell; Get-AppxPackage -Name '${escapedAppName}' | Select-Object -First 1 -ExpandProperty PackageFamilyName }` + : `Get-AppxPackage -Name '${escapedAppName}' | Select-Object -First 1 -ExpandProperty PackageFamilyName`; + const result = spawnSync(findPowerShell(), [ '-NoProfile', '-Command', packageFamilyNameCommand, - ]) - .stdout.toString() - .trim(); - - if (packageFamilyName.length === 0) { + ]); + const packageFamilyName = result.stdout + .toString() + .split(/\r?\n/) + .map(line => line.trim()) + .find(line => line.length > 0); + + if (result.status !== 0 || !packageFamilyName) { // Rethrown below throw new Error(); } From 7d455109a43fe3b2849cf73af0761ebb2f73c3d4 Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Tue, 5 May 2026 19:12:21 -0700 Subject: [PATCH 49/64] Hard-fail if PowerShell 7 cannot be found. Do not fall back to Windows PowerShell (powershell.exe). PowerShell code may not be backwards compatible. --- packages/@react-native-windows/find-dotnet-tools/README.md | 3 ++- .../find-dotnet-tools/src/findDotnetTools.ts | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/@react-native-windows/find-dotnet-tools/README.md b/packages/@react-native-windows/find-dotnet-tools/README.md index e0412013c57..f643400da11 100644 --- a/packages/@react-native-windows/find-dotnet-tools/README.md +++ b/packages/@react-native-windows/find-dotnet-tools/README.md @@ -24,7 +24,8 @@ Locates a PowerShell executable by checking, in order: 1. A `dotnet-tool`-restored copy of `pwsh.exe` (skipped in CI builds) 2. `pwsh.exe` on the system PATH -3. The built-in Windows PowerShell as a last resort + +Throws an error if `pwsh.exe` cannot be found. ```js import {findPowerShell} from '@react-native-windows/find-dotnet-tools'; diff --git a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts index 80faad3d9a2..d622cf66fb0 100644 --- a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts +++ b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts @@ -35,7 +35,8 @@ export function getNugetGlobalPackagesFolder(): string { * Locates a PowerShell executable, checking (in order): * 1. A NuGet-restored copy of pwsh (skipped in CI builds) * 2. pwsh.exe on the system PATH - * 3. The built-in Windows PowerShell as a last resort + * + * Throws if no pwsh.exe can be located. */ export function findPowerShell(): string { // Build agents already have PowerShell (pwsh) installed @@ -63,5 +64,7 @@ export function findPowerShell(): string { } } catch {} - return `${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`; + throw new Error( + 'Unable to find pwsh.exe. Install PowerShell 7 or ensure pwsh.exe is available on PATH.', + ); } From df2a1844a96ee5830b908a3d307542c5df371c0e Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Tue, 5 May 2026 19:26:09 -0700 Subject: [PATCH 50/64] Improve missing pwsh.exe error message --- .../find-dotnet-tools/src/findDotnetTools.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts index d622cf66fb0..d684656bee4 100644 --- a/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts +++ b/packages/@react-native-windows/find-dotnet-tools/src/findDotnetTools.ts @@ -65,6 +65,6 @@ export function findPowerShell(): string { } catch {} throw new Error( - 'Unable to find pwsh.exe. Install PowerShell 7 or ensure pwsh.exe is available on PATH.', + 'Unable to find pwsh.exe. It should have been made available by `yarn install`.', ); } From 5472ecebe0f3fb81711857558dd692d87a2bb98d Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Tue, 5 May 2026 19:43:32 -0700 Subject: [PATCH 51/64] Add package resolution pipeline test --- .ado/jobs/e2e-test.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 9cd5b6a892a..ecb6700ee4f 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -48,6 +48,41 @@ jobs: cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them steps: + #TODO: DELETE BEFORE MERGING! + - powershell: | + $ErrorActionPreference = 'Stop' + $pkg = 'Microsoft.WindowsAlarms' + $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) + + if ([string]::IsNullOrWhiteSpace($pfn)) { + throw "Windows PowerShell: failed to resolve PackageFamilyName for '$pkg'." + } + + Write-Host "SHELL=powershell" + Write-Host "PACKAGE=$pkg" + Write-Host "PFN=$pfn" + + # Optional: expose for later comparison steps + Write-Host "##vso[task.setvariable variable=PackageResolution_PFN_PowerShell]$pfn" + displayName: 'Package resolution via Windows PowerShell' + + - pwsh: | + $ErrorActionPreference = 'Stop' + $pkg = 'Microsoft.WindowsAlarms' + $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) + + if ([string]::IsNullOrWhiteSpace($pfn)) { + throw "PowerShell 7: failed to resolve PackageFamilyName for '$pkg'." + } + + Write-Host "SHELL=pwsh" + Write-Host "PACKAGE=$pkg" + Write-Host "PFN=$pfn" + + # Optional: expose for later comparison steps + Write-Host "##vso[task.setvariable variable=PackageResolution_PFN_Pwsh]$pfn" + displayName: 'Package resolution via PowerShell 7' + - template: ../templates/checkout-shallow.yml - template: ../templates/prepare-js-env.yml From 8c204071b55bac405ee9467bf8b7a58a6cbe34aa Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Tue, 5 May 2026 19:45:21 -0700 Subject: [PATCH 52/64] UseWindowsPowerShell for package resolution test --- .ado/jobs/e2e-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index ecb6700ee4f..73f6a99aeef 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -68,6 +68,7 @@ jobs: - pwsh: | $ErrorActionPreference = 'Stop' + Import-Module Appx -UseWindowsPowerShell $pkg = 'Microsoft.WindowsAlarms' $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) From 10099d0bea3460145d598661d4298b85e4a4da93 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Tue, 5 May 2026 22:56:26 -0700 Subject: [PATCH 53/64] Try to read package Microsoft.PrintDialog --- .ado/jobs/e2e-test.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 73f6a99aeef..930ed895284 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -49,9 +49,14 @@ jobs: steps: #TODO: DELETE BEFORE MERGING! + - powershell: | + Get-AppxPackage -Name Windows.PrintDialog + + Get-AppxPackage + displayName: List appx packages - powershell: | $ErrorActionPreference = 'Stop' - $pkg = 'Microsoft.WindowsAlarms' + $pkg = 'Windows.PrintDialog' $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) if ([string]::IsNullOrWhiteSpace($pfn)) { @@ -69,7 +74,7 @@ jobs: - pwsh: | $ErrorActionPreference = 'Stop' Import-Module Appx -UseWindowsPowerShell - $pkg = 'Microsoft.WindowsAlarms' + $pkg = 'Windows.PrintDialog' $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) if ([string]::IsNullOrWhiteSpace($pfn)) { From a5b016a9b76c4a5d4592a9e133f69a5e6f52a922 Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Wed, 6 May 2026 03:19:06 -0700 Subject: [PATCH 54/64] Replace stderr redirection with -WarningAction --- .../@react-native-windows/cli/src/utils/commandWithProgress.ts | 2 +- packages/@react-native-windows/cli/src/utils/deploy.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts index 1d085b0f45f..9ee9fe56113 100644 --- a/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts +++ b/packages/@react-native-windows/cli/src/utils/commandWithProgress.ts @@ -61,7 +61,7 @@ export async function runPowerShellScriptFunction( try { const printException = verbose ? '$_;' : ''; const importAppx = useAppxCompatibility - ? 'Import-Module Appx -UseWindowsPowerShell 3>$null; ' + ? 'Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; ' : ''; const importScript = script ? `Import-Module '${script}'; ` : ''; const powershellCommand = `${importAppx}${importScript}try { ${funcName} -ErrorAction Stop; $lec = $LASTEXITCODE; } catch { $lec = 1; ${printException} }; exit $lec`; diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index d605a7cc2ae..d5f867eac81 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -466,7 +466,7 @@ export async function deployToDesktop( const escapedAppName = appName.replace(/'/g, "''"); const appFamilyNameCommand = useAppxCompatibility - ? `& { Import-Module Appx -UseWindowsPowerShell 3>$null; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` + ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; const appFamilyName = execFileSync(findPowerShell(), [ '-NoProfile', From 2f5a23a2e1a1c37c1819aedd9440d4b9b84f43db Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Wed, 6 May 2026 03:20:24 -0700 Subject: [PATCH 55/64] Replace stderr redirection with -WarningAction --- .ado/jobs/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 930ed895284..5c8b2dbc97b 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -73,7 +73,7 @@ jobs: - pwsh: | $ErrorActionPreference = 'Stop' - Import-Module Appx -UseWindowsPowerShell + Import-Module -Name Appx -UseWindowsPowerShell -WarningAction SilentlyContinue $pkg = 'Windows.PrintDialog' $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) From 6e70148a35e50d4bd9c62f50908e2b3855ef6dce Mon Sep 17 00:00:00 2001 From: "Julio C. Rocha" Date: Wed, 6 May 2026 04:01:04 -0700 Subject: [PATCH 56/64] Print sample app names on appWindow error --- .../automation/src/AutomationEnvironment.ts | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index 7e9cdab563b..a15696727b6 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -215,11 +215,17 @@ export default class AutomationEnvironment extends NodeEnvironment { const pollInterval = 2000; const deadline = Date.now() + windowTimeout; let appWindow: webdriverio.Element | undefined; + const sampledWindowNames = new Set(); while (Date.now() < deadline) { const allWindows = await rootBrowser.$$('//Window'); for (const window of allWindows) { - if ((await window.getAttribute('Name')) === appName) { + const windowName = ((await window.getAttribute('Name')) ?? '').trim(); + if (windowName.length > 0 && sampledWindowNames.size < 30) { + sampledWindowNames.add(windowName); + } + + if (windowName === appName) { appWindow = window; break; } @@ -231,7 +237,17 @@ export default class AutomationEnvironment extends NodeEnvironment { } if (!appWindow) { - throw new Error(`Unable to find window with Name === '${appName}'.`); + const sampledNames = + sampledWindowNames.size > 0 + ? Array.from(sampledWindowNames) + .slice(0, 20) + .map(name => `'${name}'`) + .join(', ') + : ''; + throw new Error( + `Unable to find window with Name === '${appName}'. ` + + `Sampled window names: ${sampledNames}.`, + ); } // Swap the the window handle for WinAppDriver From 8c10bc4d1abd2afc30240d06eb7cf8a113422a6d Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 15:13:52 -0700 Subject: [PATCH 57/64] Add more diagnostics --- .../automation/src/AutomationEnvironment.ts | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index a15696727b6..75e8e9ac799 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -197,16 +197,33 @@ export default class AutomationEnvironment extends NodeEnvironment { // Extract out the saved window name const appName = (this.webDriverOptions.capabilities! as any) .appTopLevelWindow; + let launchDiagnostics = ''; + let launchExitCode: number | null | undefined; + let resolvedAumid: string | undefined; + const powerShellPath = appName.endsWith('.exe') + ? '' + : findPowerShell(); if (this.rootLaunchApp) { const appPackageName = resolveAppName(appName); - spawnSync('cmd', [ + resolvedAumid = appPackageName; + const launchResult = spawnSync('cmd', [ '/c', 'start', `shell:AppsFolder\\${appPackageName}`, ]); + launchExitCode = launchResult.status; + launchDiagnostics = + `AUMID='${appPackageName}', ` + + `startExitCode=${launchResult.status ?? ''}, ` + + `stdout='${launchResult.stdout?.toString().trim() ?? ''}', ` + + `stderr='${launchResult.stderr?.toString().trim() ?? ''}'`; } + console.log( + `[AutomationEnvironment] Root launch diagnostics: AUMID='${resolvedAumid ?? ''}', pwsh='${powerShellPath}', startExitCode=${launchExitCode ?? ''}`, + ); + // Set up the "Desktop" or Root session const rootBrowser = await webdriverio.remote(this.rootWebDriverOptions); @@ -246,7 +263,8 @@ export default class AutomationEnvironment extends NodeEnvironment { : ''; throw new Error( `Unable to find window with Name === '${appName}'. ` + - `Sampled window names: ${sampledNames}.`, + `Sampled window names: ${sampledNames}. ` + + `Launch diagnostics: ${launchDiagnostics || ''}.`, ); } @@ -366,7 +384,8 @@ function resolveAppName(appName: string): string { .toString() .split(/\r?\n/) .map(line => line.trim()) - .find(line => line.length > 0); + .find(line => line.length > 0) + ?.trim(); if (result.status !== 0 || !packageFamilyName) { // Rethrown below From 0f41c50aaa6c35d924e0ec55ba6e2510da15edf3 Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 17:30:16 -0700 Subject: [PATCH 58/64] Add missing -WarningAction SilentlyContinue --- .../automation/src/AutomationEnvironment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index 75e8e9ac799..a2a3eea80c8 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -373,7 +373,7 @@ function resolveAppName(appName: string): string { const useAppxCompatibility = !!process.env.TF_BUILD; const escapedAppName = appName.replace(/'/g, "''"); const packageFamilyNameCommand = useAppxCompatibility - ? `& { Import-Module Appx -UseWindowsPowerShell; Get-AppxPackage -Name '${escapedAppName}' | Select-Object -First 1 -ExpandProperty PackageFamilyName }` + ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; Get-AppxPackage -Name '${escapedAppName}' | Select-Object -First 1 -ExpandProperty PackageFamilyName }` : `Get-AppxPackage -Name '${escapedAppName}' | Select-Object -First 1 -ExpandProperty PackageFamilyName`; const result = spawnSync(findPowerShell(), [ '-NoProfile', From 926459e86306a87383f2464044bcea7a9cf683e9 Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 18:35:35 -0700 Subject: [PATCH 59/64] Revert "Add more diagnostics" This reverts commit 8c10bc4d1abd2afc30240d06eb7cf8a113422a6d. --- .../automation/src/AutomationEnvironment.ts | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index a2a3eea80c8..320730f37cf 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -197,33 +197,16 @@ export default class AutomationEnvironment extends NodeEnvironment { // Extract out the saved window name const appName = (this.webDriverOptions.capabilities! as any) .appTopLevelWindow; - let launchDiagnostics = ''; - let launchExitCode: number | null | undefined; - let resolvedAumid: string | undefined; - const powerShellPath = appName.endsWith('.exe') - ? '' - : findPowerShell(); if (this.rootLaunchApp) { const appPackageName = resolveAppName(appName); - resolvedAumid = appPackageName; - const launchResult = spawnSync('cmd', [ + spawnSync('cmd', [ '/c', 'start', `shell:AppsFolder\\${appPackageName}`, ]); - launchExitCode = launchResult.status; - launchDiagnostics = - `AUMID='${appPackageName}', ` + - `startExitCode=${launchResult.status ?? ''}, ` + - `stdout='${launchResult.stdout?.toString().trim() ?? ''}', ` + - `stderr='${launchResult.stderr?.toString().trim() ?? ''}'`; } - console.log( - `[AutomationEnvironment] Root launch diagnostics: AUMID='${resolvedAumid ?? ''}', pwsh='${powerShellPath}', startExitCode=${launchExitCode ?? ''}`, - ); - // Set up the "Desktop" or Root session const rootBrowser = await webdriverio.remote(this.rootWebDriverOptions); @@ -263,8 +246,7 @@ export default class AutomationEnvironment extends NodeEnvironment { : ''; throw new Error( `Unable to find window with Name === '${appName}'. ` + - `Sampled window names: ${sampledNames}. ` + - `Launch diagnostics: ${launchDiagnostics || ''}.`, + `Sampled window names: ${sampledNames}.`, ); } @@ -384,8 +366,7 @@ function resolveAppName(appName: string): string { .toString() .split(/\r?\n/) .map(line => line.trim()) - .find(line => line.length > 0) - ?.trim(); + .find(line => line.length > 0); if (result.status !== 0 || !packageFamilyName) { // Rethrown below From 106ab19dddba0a3fa1e20c19104f507f4a533adf Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 18:37:35 -0700 Subject: [PATCH 60/64] Revert "Print sample app names on appWindow error" This reverts commit 6e70148a35e50d4bd9c62f50908e2b3855ef6dce. --- .../automation/src/AutomationEnvironment.ts | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index 320730f37cf..bde20224bc9 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -215,17 +215,11 @@ export default class AutomationEnvironment extends NodeEnvironment { const pollInterval = 2000; const deadline = Date.now() + windowTimeout; let appWindow: webdriverio.Element | undefined; - const sampledWindowNames = new Set(); while (Date.now() < deadline) { const allWindows = await rootBrowser.$$('//Window'); for (const window of allWindows) { - const windowName = ((await window.getAttribute('Name')) ?? '').trim(); - if (windowName.length > 0 && sampledWindowNames.size < 30) { - sampledWindowNames.add(windowName); - } - - if (windowName === appName) { + if ((await window.getAttribute('Name')) === appName) { appWindow = window; break; } @@ -237,17 +231,7 @@ export default class AutomationEnvironment extends NodeEnvironment { } if (!appWindow) { - const sampledNames = - sampledWindowNames.size > 0 - ? Array.from(sampledWindowNames) - .slice(0, 20) - .map(name => `'${name}'`) - .join(', ') - : ''; - throw new Error( - `Unable to find window with Name === '${appName}'. ` + - `Sampled window names: ${sampledNames}.`, - ); + throw new Error(`Unable to find window with Name === '${appName}'.`); } // Swap the the window handle for WinAppDriver From 3ef3061a447be499d7e202d2a173c2cd53d08ea5 Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 18:39:44 -0700 Subject: [PATCH 61/64] Remove CI probing tasks --- .ado/jobs/e2e-test.yml | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 5c8b2dbc97b..9cd5b6a892a 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -48,47 +48,6 @@ jobs: cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them steps: - #TODO: DELETE BEFORE MERGING! - - powershell: | - Get-AppxPackage -Name Windows.PrintDialog - - Get-AppxPackage - displayName: List appx packages - - powershell: | - $ErrorActionPreference = 'Stop' - $pkg = 'Windows.PrintDialog' - $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) - - if ([string]::IsNullOrWhiteSpace($pfn)) { - throw "Windows PowerShell: failed to resolve PackageFamilyName for '$pkg'." - } - - Write-Host "SHELL=powershell" - Write-Host "PACKAGE=$pkg" - Write-Host "PFN=$pfn" - - # Optional: expose for later comparison steps - Write-Host "##vso[task.setvariable variable=PackageResolution_PFN_PowerShell]$pfn" - displayName: 'Package resolution via Windows PowerShell' - - - pwsh: | - $ErrorActionPreference = 'Stop' - Import-Module -Name Appx -UseWindowsPowerShell -WarningAction SilentlyContinue - $pkg = 'Windows.PrintDialog' - $pfn = (Get-AppxPackage -Name $pkg | Select-Object -First 1 -ExpandProperty PackageFamilyName) - - if ([string]::IsNullOrWhiteSpace($pfn)) { - throw "PowerShell 7: failed to resolve PackageFamilyName for '$pkg'." - } - - Write-Host "SHELL=pwsh" - Write-Host "PACKAGE=$pkg" - Write-Host "PFN=$pfn" - - # Optional: expose for later comparison steps - Write-Host "##vso[task.setvariable variable=PackageResolution_PFN_Pwsh]$pfn" - displayName: 'Package resolution via PowerShell 7' - - template: ../templates/checkout-shallow.yml - template: ../templates/prepare-js-env.yml From e323f5420a9485e4db6e73eb4e75b5f49e1ff5e1 Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 18:44:06 -0700 Subject: [PATCH 62/64] Revert "Use pipe semantics for Get-AppxPackage in resolveAppName" This reverts commit 6c46c73413af274b4535e94a327ed1d3202dc2ed. Co-authored-by: Copilot --- .../automation/src/AutomationEnvironment.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index bde20224bc9..93b27db87b8 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -339,20 +339,17 @@ function resolveAppName(appName: string): string { const useAppxCompatibility = !!process.env.TF_BUILD; const escapedAppName = appName.replace(/'/g, "''"); const packageFamilyNameCommand = useAppxCompatibility - ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; Get-AppxPackage -Name '${escapedAppName}' | Select-Object -First 1 -ExpandProperty PackageFamilyName }` - : `Get-AppxPackage -Name '${escapedAppName}' | Select-Object -First 1 -ExpandProperty PackageFamilyName`; - const result = spawnSync(findPowerShell(), [ + ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` + : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; + const packageFamilyName = spawnSync(findPowerShell(), [ '-NoProfile', '-Command', packageFamilyNameCommand, - ]); - const packageFamilyName = result.stdout - .toString() - .split(/\r?\n/) - .map(line => line.trim()) - .find(line => line.length > 0); - - if (result.status !== 0 || !packageFamilyName) { + ]) + .stdout.toString() + .trim(); + + if (packageFamilyName.length === 0) { // Rethrown below throw new Error(); } From 75878dbff6c68d1038971da4bc36cb771bcdf813 Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 19:02:30 -0700 Subject: [PATCH 63/64] Remove unused escaping logic --- .../automation/src/AutomationEnvironment.ts | 5 ++--- packages/@react-native-windows/cli/src/utils/deploy.ts | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts index 93b27db87b8..2306bfa0ec6 100644 --- a/packages/@react-native-windows/automation/src/AutomationEnvironment.ts +++ b/packages/@react-native-windows/automation/src/AutomationEnvironment.ts @@ -337,10 +337,9 @@ function resolveAppName(appName: string): string { try { const useAppxCompatibility = !!process.env.TF_BUILD; - const escapedAppName = appName.replace(/'/g, "''"); const packageFamilyNameCommand = useAppxCompatibility - ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` - : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; + ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${appName}').PackageFamilyName }` + : `(Get-AppxPackage -Name '${appName}').PackageFamilyName`; const packageFamilyName = spawnSync(findPowerShell(), [ '-NoProfile', '-Command', diff --git a/packages/@react-native-windows/cli/src/utils/deploy.ts b/packages/@react-native-windows/cli/src/utils/deploy.ts index d5f867eac81..4335d166c36 100644 --- a/packages/@react-native-windows/cli/src/utils/deploy.ts +++ b/packages/@react-native-windows/cli/src/utils/deploy.ts @@ -464,10 +464,9 @@ export async function deployToDesktop( } } - const escapedAppName = appName.replace(/'/g, "''"); const appFamilyNameCommand = useAppxCompatibility - ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName }` - : `(Get-AppxPackage -Name '${escapedAppName}').PackageFamilyName`; + ? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${appName}').PackageFamilyName }` + : `(Get-AppxPackage -Name '${appName}').PackageFamilyName`; const appFamilyName = execFileSync(findPowerShell(), [ '-NoProfile', '-Command', From ea009398016199e7ec99161c0b90d25ba3822c04 Mon Sep 17 00:00:00 2001 From: Julio Cesar Rocha Date: Wed, 6 May 2026 19:07:37 -0700 Subject: [PATCH 64/64] Re-introduce deleted .lock.json --- .../packages.experimentalwinui3.lock.json | 194 ++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json diff --git a/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json new file mode 100644 index 00000000000..37e573dcf94 --- /dev/null +++ b/vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.experimentalwinui3.lock.json @@ -0,0 +1,194 @@ +{ + "version": 1, + "dependencies": { + "native,Version=v0.0": { + "Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn": { + "type": "Direct", + "requested": "[1.8.1.7, )", + "resolved": "1.8.1.7", + "contentHash": "FxNwT4YpsGdqforqFSTGc5f/e+qfRJ+1wf5G1w0nEEkT5pr5M95E5+fOuswpPUGXPZIXM+M7BSVGnCRcQZjomA==" + }, + "Microsoft.Windows.CppWinRT": { + "type": "Direct", + "requested": "[2.0.230706.1, )", + "resolved": "2.0.230706.1", + "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Direct", + "requested": "[2.0.0-experimental3, )", + "resolved": "2.0.0-experimental3", + "contentHash": "eP4XWWccngqnwyJVTYbdlVDyUyFW7EintimqOyq3ttk/h4dCwvW0FNTjq6qvnzkmWKiSqoXau/d5Dy27wSAKpg==", + "dependencies": { + "Microsoft.WindowsAppSDK.AI": "[2.0.57-experimental]", + "Microsoft.WindowsAppSDK.Base": "[2.0.0-experimental]", + "Microsoft.WindowsAppSDK.DWrite": "[2.0.0-experimental]", + "Microsoft.WindowsAppSDK.Foundation": "[2.0.8-experimental]", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "[2.0.3-experimental]", + "Microsoft.WindowsAppSDK.ML": "[2.0.44-experimental]", + "Microsoft.WindowsAppSDK.Runtime": "[2.0.0-experimental3]", + "Microsoft.WindowsAppSDK.Widgets": "[2.0.2-experimental]", + "Microsoft.WindowsAppSDK.WinUI": "[2.0.3-experimental]" + } + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3405.78", + "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" + }, + "Microsoft.Windows.SDK.BuildTools": { + "type": "Transitive", + "resolved": "10.0.26100.4654", + "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A==" + }, + "Microsoft.Windows.SDK.BuildTools.MSIX": { + "type": "Transitive", + "resolved": "1.7.20250829.1", + "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow==" + }, + "Microsoft.WindowsAppSDK.AI": { + "type": "Transitive", + "resolved": "2.0.57-experimental", + "contentHash": "iCDkCyYFnryJjSRAVU3dmOyZaT3wO8COv+gCMImbDiRK6Kx047pYkJalrs/mOK2GbS8GVzgGAh4pOGaavzQmpw==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.Foundation": "2.0.3-experimental" + } + }, + "Microsoft.WindowsAppSDK.Base": { + "type": "Transitive", + "resolved": "2.0.0-experimental", + "contentHash": "xQY42zJd61lTemFhaEl0GQ+YNHIPeeLnF5sM4lhKfOE0fX3aYCPPH5begOcJBhxsorCk90MGLvCq8dy058sBHg==", + "dependencies": { + "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654", + "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1" + } + }, + "Microsoft.WindowsAppSDK.DWrite": { + "type": "Transitive", + "resolved": "2.0.0-experimental", + "contentHash": "B21j5wUaHab3LbyaOiGXCRlxW+D2Z7hnUZvALenLseEWDPUYyLvClZgXIYJd3s60J3B+CVQOAop9VQiOzRRquw==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" + } + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "2.0.8-experimental", + "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" + } + }, + "Microsoft.WindowsAppSDK.InteractiveExperiences": { + "type": "Transitive", + "resolved": "2.0.3-experimental", + "contentHash": "Ck3QUVmo/KIKYK9Fo5YzL8eoUbjkRoBkGJdTQbcXVI61CFoxkwypnNckoyWyM6PfzS8KoxasHJbI8YSt+DNgfw==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" + } + }, + "Microsoft.WindowsAppSDK.ML": { + "type": "Transitive", + "resolved": "2.0.44-experimental", + "contentHash": "cnPfVfMfOhbVobG417zJVbWLA0P5QZHqrMBEDndQNOcgpUEtKJNY2mC+n3+SLr14P1mKPpzPP9vm/O9APsq4bw==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental" + } + }, + "Microsoft.WindowsAppSDK.Runtime": { + "type": "Transitive", + "resolved": "2.0.0-experimental3", + "contentHash": "ikNSjK07rUFBWdYwkM/2sSQzxieYgRwVDSM7PJxMxIkSGSeAeba8jmDST05oJfDWtXOpNqfn4CTeaZ/6y8yfNw==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" + } + }, + "Microsoft.WindowsAppSDK.Widgets": { + "type": "Transitive", + "resolved": "2.0.2-experimental", + "contentHash": "+Trk3vVSlWxBWomjpUjwy5aOowkLHr2m7o7pVn58a03O2e46joBM3WdIGon/ns+BMKPow7knCS6ne6OBWGlVZg==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental" + } + }, + "Microsoft.WindowsAppSDK.WinUI": { + "type": "Transitive", + "resolved": "2.0.3-experimental", + "contentHash": "OuvJXiPEOqBRlai79qi8f35JK/MfvsaIBGoIMNOA5pZznigPezR1XHjwrF1lWMDR3WwJV9Q/rnKWcWfXYw24/Q==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.3405.78", + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.Foundation": "2.0.8-experimental", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" + } + } + }, + "native,Version=v0.0/win": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3405.78", + "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "2.0.8-experimental", + "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" + } + } + }, + "native,Version=v0.0/win-arm64": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3405.78", + "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "2.0.8-experimental", + "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" + } + } + }, + "native,Version=v0.0/win-x64": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3405.78", + "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "2.0.8-experimental", + "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" + } + } + }, + "native,Version=v0.0/win-x86": { + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.3405.78", + "contentHash": "ceiIKuPHnzOf5CUv9nGpIBx0CWCCMWcBdv05QuonmUnpPtm6XDyAh6osgvin7MTpVD5O0+NbS5ts/WU9sgXgvA==" + }, + "Microsoft.WindowsAppSDK.Foundation": { + "type": "Transitive", + "resolved": "2.0.8-experimental", + "contentHash": "8z2LKsnccAJ2RaXmLNZb7JLrSsX6Ud2nlL3Rz6YO4i1iFu9zYEuIdxz6cxsc/+ZSC8bGSQR8O/4k8NIY+qeXYA==", + "dependencies": { + "Microsoft.WindowsAppSDK.Base": "2.0.0-experimental", + "Microsoft.WindowsAppSDK.InteractiveExperiences": "2.0.3-experimental" + } + } + } + } +} \ No newline at end of file