From 0c1ccdd5b80425248dfdb2197fc4f706507cbfd3 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 30 Sep 2025 09:29:49 +0000
Subject: [PATCH 001/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#18947)

* Backflow from https://github.com/dotnet/dotnet / 8aba88f build 285155

[[ commit created by automation ]]

* Update dependencies from https://github.com/dotnet/dotnet build 285155
No dependency updates to commit

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 es-metadata.yml         | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)
 create mode 100644 es-metadata.yml

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 4c2103c42d6..acbf83c0f9d 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="2dea164f01d307c409cfe0d0ee5cb8a0691e3c94" BarId="283828" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="8aba88f6f12f3ce1dd5740575cff9442f1f9122c" BarId="285155" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/es-metadata.yml b/es-metadata.yml
new file mode 100644
index 00000000000..bcceb48d06c
--- /dev/null
+++ b/es-metadata.yml
@@ -0,0 +1,8 @@
+schemaVersion: 0.0.1
+isProduction: true
+accountableOwners:
+  service: d9a8fd77-4e88-45be-abfa-45268ca1de62
+routing:
+  defaultAreaPath:
+    org: devdiv
+    path: DevDiv\FSharp

From 2c5be8506c52ff9ae70bb7b9e49d93385932ec97 Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Fri, 26 Sep 2025 17:24:28 +0200
Subject: [PATCH 002/102] print stack guard thread jump counts

---
 src/Compiler/Facilities/DiagnosticsLogger.fs  | 51 ++++++++++++++-----
 src/Compiler/Facilities/DiagnosticsLogger.fsi |  8 +--
 .../src/FSharp.Editor/Common/DebugHelpers.fs  |  2 +
 3 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/Compiler/Facilities/DiagnosticsLogger.fs
index eb96a5f6e0b..6f1edd493f6 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fs
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fs
@@ -16,6 +16,7 @@ open System.Runtime.InteropServices
 open Internal.Utilities.Library
 open Internal.Utilities.Library.Extras
 open System.Threading.Tasks
+open System.Collections.Concurrent
 
 /// Represents the style being used to format errors
 [<RequireQualifiedAccess; NoComparison; NoEquality>]
@@ -868,6 +869,33 @@ let internal languageFeatureNotSupportedInLibraryError (langFeature: LanguageFea
     let suggestedVersionStr = LanguageVersion.GetFeatureVersionString langFeature
     error (Error(FSComp.SR.chkFeatureNotSupportedInLibrary (featureStr, suggestedVersionStr), m))
 
+module StackGuardMetrics =
+    open System
+    open System.Diagnostics.Metrics
+
+    let meter = new Meter("FSharp.Compiler.DiagnosticsLogger.StackGuard", "1.0.0")
+
+    let jumpCounter = meter.CreateCounter<int64>("stackguard-jumps", description = "Tracks the number of times the stack guard has jumped to a new thread")
+
+    let jumps = ConcurrentDictionary<string, int64 ref>()
+
+    let Listen () =
+        let listener = new MeterListener()
+
+        listener.EnableMeasurementEvents jumpCounter
+
+        listener.SetMeasurementEventCallback(fun _ v tags _ ->
+            let memberName = nonNull tags[0].Value :?> string
+            let counter = jumps.GetOrAdd(memberName, fun _ -> ref 0L)
+            Interlocked.Add(counter, v) |> ignore)
+
+        listener.Start()
+        listener :> IDisposable
+
+    let StatsToString () =
+        let entries = jumps |> Seq.map (fun kvp -> $"{kvp.Key}: {kvp.Value.Value}") |> String.concat ", "
+        $"StackGuard jumps: {entries} \n"
+
 /// Guard against depth of expression nesting, by moving to new stack when a maximum depth is reached
 type StackGuard(maxDepth: int, name: string) =
 
@@ -877,27 +905,22 @@ type StackGuard(maxDepth: int, name: string) =
     member _.Guard
         (
             f,
-            [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string,
-            [<CallerFilePath; Optional; DefaultParameterValue("")>] path: string,
-            [<CallerLineNumber; Optional; DefaultParameterValue(0)>] line: int
+            [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string
         ) =
 
-        Activity.addEventWithTags
-            "DiagnosticsLogger.StackGuard.Guard"
-            (seq {
-                Activity.Tags.stackGuardName, box name
-                Activity.Tags.stackGuardCurrentDepth, depth
-                Activity.Tags.stackGuardMaxDepth, maxDepth
-                Activity.Tags.callerMemberName, memberName
-                Activity.Tags.callerFilePath, path
-                Activity.Tags.callerLineNumber, line
-            })
-
         depth <- depth + 1
 
         try
             if depth % maxDepth = 0 then
 
+                let tags =
+                    let mutable tags = TagList()
+                    tags.Add("caller", memberName)
+                    tags
+
+
+                StackGuardMetrics.jumpCounter.Add(1L, &tags)
+
                 async {
                     do! Async.SwitchToNewThread()
                     Thread.CurrentThread.Name <- $"F# Extra Compilation Thread for {name} (depth {depth})"
diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fsi b/src/Compiler/Facilities/DiagnosticsLogger.fsi
index 02471dd383b..b2033968f84 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fsi
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fsi
@@ -459,15 +459,17 @@ val tryLanguageFeatureErrorOption:
 
 val languageFeatureNotSupportedInLibraryError: langFeature: LanguageFeature -> m: range -> 'T
 
+module StackGuardMetrics =
+    val Listen: unit -> IDisposable
+    val StatsToString: unit -> string
+
 type StackGuard =
     new: maxDepth: int * name: string -> StackGuard
 
     /// Execute the new function, on a new thread if necessary
     member Guard:
         f: (unit -> 'T) *
-        [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string *
-        [<CallerFilePath; Optional; DefaultParameterValue("")>] path: string *
-        [<CallerLineNumber; Optional; DefaultParameterValue(0)>] line: int ->
+        [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string ->
             'T
 
     member GuardCancellable: Internal.Utilities.Library.Cancellable<'T> -> Internal.Utilities.Library.Cancellable<'T>
diff --git a/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs b/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs
index 51cdd83f8fa..b06461982c5 100644
--- a/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs
+++ b/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs
@@ -123,10 +123,12 @@ module FSharpServiceTelemetry =
     let periodicallyDisplayCacheStats =
         cancellableTask {
             use _ = CacheMetrics.ListenToAll()
+            use _ = FSharp.Compiler.DiagnosticsLogger.StackGuardMetrics.Listen()
 
             while true do
                 do! Task.Delay(TimeSpan.FromSeconds 10.0)
                 FSharpOutputPane.logMsg (CacheMetrics.StatsToString())
+                FSharpOutputPane.logMsg (FSharp.Compiler.DiagnosticsLogger.StackGuardMetrics.StatsToString())
         }
 
 #if DEBUG

From 013227d02c93bf458b348c6dc0ae347cffda7c5f Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Sat, 27 Sep 2025 10:53:29 +0200
Subject: [PATCH 003/102] print with --times

---
 src/Compiler/Driver/fsc.fs                    |  1 +
 src/Compiler/Facilities/DiagnosticsLogger.fs  | 56 ++++++++++++-------
 src/Compiler/Facilities/DiagnosticsLogger.fsi |  6 +-
 src/Compiler/Utilities/Activity.fs            |  3 +
 src/Compiler/Utilities/Activity.fsi           |  5 +-
 src/Compiler/Utilities/Caches.fs              |  2 +-
 tests/FSharp.Test.Utilities/XunitHelpers.fs   |  2 +-
 7 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/src/Compiler/Driver/fsc.fs b/src/Compiler/Driver/fsc.fs
index 2bea066e427..89f196c810f 100644
--- a/src/Compiler/Driver/fsc.fs
+++ b/src/Compiler/Driver/fsc.fs
@@ -569,6 +569,7 @@ let main1
             exiter.Exit 1
 
     if tcConfig.showTimes then
+        StackGuardMetrics.CaptureStatsAndWriteToConsole() |> disposables.Register
         Caches.CacheMetrics.CaptureStatsAndWriteToConsole() |> disposables.Register
         Activity.Profiling.addConsoleListener () |> disposables.Register
 
diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/Compiler/Facilities/DiagnosticsLogger.fs
index 6f1edd493f6..945b0752a1b 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fs
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fs
@@ -870,14 +870,26 @@ let internal languageFeatureNotSupportedInLibraryError (langFeature: LanguageFea
     error (Error(FSComp.SR.chkFeatureNotSupportedInLibrary (featureStr, suggestedVersionStr), m))
 
 module StackGuardMetrics =
-    open System
     open System.Diagnostics.Metrics
 
-    let meter = new Meter("FSharp.Compiler.DiagnosticsLogger.StackGuard", "1.0.0")
+    let meter = FSharp.Compiler.Diagnostics.Metrics.Meter
 
-    let jumpCounter = meter.CreateCounter<int64>("stackguard-jumps", description = "Tracks the number of times the stack guard has jumped to a new thread")
+    let jumpCounter =
+        meter.CreateCounter<int64>(
+            "stackguard-jumps",
+            description = "Tracks the number of times the stack guard has jumped to a new thread"
+        )
 
-    let jumps = ConcurrentDictionary<string, int64 ref>()
+    let countJump memberName =
+        let tags =
+            let mutable tags = TagList()
+            tags.Add("caller", memberName)
+            tags
+
+        jumpCounter.Add(1L, &tags)
+
+    // Used by the self-listener.
+    let jumpsByFunctionName = ConcurrentDictionary<string, int64 ref>()
 
     let Listen () =
         let listener = new MeterListener()
@@ -886,15 +898,31 @@ module StackGuardMetrics =
 
         listener.SetMeasurementEventCallback(fun _ v tags _ ->
             let memberName = nonNull tags[0].Value :?> string
-            let counter = jumps.GetOrAdd(memberName, fun _ -> ref 0L)
+            let counter = jumpsByFunctionName.GetOrAdd(memberName, fun _ -> ref 0L)
             Interlocked.Add(counter, v) |> ignore)
 
         listener.Start()
         listener :> IDisposable
 
     let StatsToString () =
-        let entries = jumps |> Seq.map (fun kvp -> $"{kvp.Key}: {kvp.Value.Value}") |> String.concat ", "
-        $"StackGuard jumps: {entries} \n"
+        let entries =
+            jumpsByFunctionName
+            |> Seq.map (fun kvp -> $"{kvp.Key}: {kvp.Value.Value}")
+            |> String.concat ", "
+
+        if entries.Length > 0 then
+            $"StackGuard jumps: {entries} \n"
+        else
+            ""
+
+    let CaptureStatsAndWriteToConsole () =
+        let listener = Listen()
+
+        { new IDisposable with
+            member _.Dispose() =
+                listener.Dispose()
+                StatsToString() |> printfn "%s"
+        }
 
 /// Guard against depth of expression nesting, by moving to new stack when a maximum depth is reached
 type StackGuard(maxDepth: int, name: string) =
@@ -902,24 +930,14 @@ type StackGuard(maxDepth: int, name: string) =
     let mutable depth = 1
 
     [<DebuggerHidden; DebuggerStepThrough>]
-    member _.Guard
-        (
-            f,
-            [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string
-        ) =
+    member _.Guard(f, [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string) =
 
         depth <- depth + 1
 
         try
             if depth % maxDepth = 0 then
 
-                let tags =
-                    let mutable tags = TagList()
-                    tags.Add("caller", memberName)
-                    tags
-
-
-                StackGuardMetrics.jumpCounter.Add(1L, &tags)
+                StackGuardMetrics.countJump memberName
 
                 async {
                     do! Async.SwitchToNewThread()
diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fsi b/src/Compiler/Facilities/DiagnosticsLogger.fsi
index b2033968f84..f81b24cec45 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fsi
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fsi
@@ -462,15 +462,13 @@ val languageFeatureNotSupportedInLibraryError: langFeature: LanguageFeature -> m
 module StackGuardMetrics =
     val Listen: unit -> IDisposable
     val StatsToString: unit -> string
+    val CaptureStatsAndWriteToConsole: unit -> IDisposable
 
 type StackGuard =
     new: maxDepth: int * name: string -> StackGuard
 
     /// Execute the new function, on a new thread if necessary
-    member Guard:
-        f: (unit -> 'T) *
-        [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string ->
-            'T
+    member Guard: f: (unit -> 'T) * [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string -> 'T
 
     member GuardCancellable: Internal.Utilities.Library.Cancellable<'T> -> Internal.Utilities.Library.Cancellable<'T>
 
diff --git a/src/Compiler/Utilities/Activity.fs b/src/Compiler/Utilities/Activity.fs
index 818d22e6f81..1712d89d6d6 100644
--- a/src/Compiler/Utilities/Activity.fs
+++ b/src/Compiler/Utilities/Activity.fs
@@ -18,6 +18,9 @@ module ActivityNames =
 
     let AllRelevantNames = [| FscSourceName; ProfiledSourceName |]
 
+module Metrics =
+    let Meter = new Metrics.Meter(ActivityNames.FscSourceName, "1.0.0")
+
 [<RequireQualifiedAccess>]
 module internal Activity =
 
diff --git a/src/Compiler/Utilities/Activity.fsi b/src/Compiler/Utilities/Activity.fsi
index 83d4b2772ec..b6381a9a47d 100644
--- a/src/Compiler/Utilities/Activity.fsi
+++ b/src/Compiler/Utilities/Activity.fsi
@@ -2,7 +2,7 @@
 namespace FSharp.Compiler.Diagnostics
 
 open System
-open Internal.Utilities.Library
+open System.Diagnostics.Metrics
 
 /// For activities following the dotnet distributed tracing concept
 /// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations
@@ -16,6 +16,9 @@ module ActivityNames =
 
     val AllRelevantNames: string[]
 
+module Metrics =
+    val Meter: Meter
+
 /// For activities following the dotnet distributed tracing concept
 /// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations
 [<RequireQualifiedAccess>]
diff --git a/src/Compiler/Utilities/Caches.fs b/src/Compiler/Utilities/Caches.fs
index aedc7f7b8e4..21687ea2d89 100644
--- a/src/Compiler/Utilities/Caches.fs
+++ b/src/Compiler/Utilities/Caches.fs
@@ -10,7 +10,7 @@ open System.Diagnostics.Metrics
 open System.IO
 
 module CacheMetrics =
-    let Meter = new Meter("FSharp.Compiler.Cache")
+    let Meter = FSharp.Compiler.Diagnostics.Metrics.Meter
     let adds = Meter.CreateCounter<int64>("adds", "count")
     let updates = Meter.CreateCounter<int64>("updates", "count")
     let hits = Meter.CreateCounter<int64>("hits", "count")
diff --git a/tests/FSharp.Test.Utilities/XunitHelpers.fs b/tests/FSharp.Test.Utilities/XunitHelpers.fs
index 5365a243946..7e907492e65 100644
--- a/tests/FSharp.Test.Utilities/XunitHelpers.fs
+++ b/tests/FSharp.Test.Utilities/XunitHelpers.fs
@@ -175,7 +175,7 @@ type OpenTelemetryExport(testRunName, enable) =
 
             // Configure OpenTelemetry metrics export. Metrics can be viewed in Prometheus or other compatible tools.
             OpenTelemetry.Sdk.CreateMeterProviderBuilder()
-                .AddMeter(CacheMetrics.Meter.Name)
+                .AddMeter(ActivityNames.FscSourceName)
                 .AddMeter("System.Runtime")
                 .ConfigureResource(fun r -> r.AddService(testRunName) |> ignore)
                 .AddOtlpExporter(fun e m ->

From 0248efb8492adc48d4f00834631bd41821c3dbb5 Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Sat, 27 Sep 2025 11:15:01 +0200
Subject: [PATCH 004/102] use known tag name

---
 src/Compiler/Facilities/DiagnosticsLogger.fs | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/Compiler/Facilities/DiagnosticsLogger.fs
index 945b0752a1b..2680b20c0f6 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fs
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fs
@@ -870,7 +870,6 @@ let internal languageFeatureNotSupportedInLibraryError (langFeature: LanguageFea
     error (Error(FSComp.SR.chkFeatureNotSupportedInLibrary (featureStr, suggestedVersionStr), m))
 
 module StackGuardMetrics =
-    open System.Diagnostics.Metrics
 
     let meter = FSharp.Compiler.Diagnostics.Metrics.Meter
 
@@ -883,7 +882,7 @@ module StackGuardMetrics =
     let countJump memberName =
         let tags =
             let mutable tags = TagList()
-            tags.Add("caller", memberName)
+            tags.Add(Activity.Tags.callerMemberName, memberName)
             tags
 
         jumpCounter.Add(1L, &tags)
@@ -892,7 +891,7 @@ module StackGuardMetrics =
     let jumpsByFunctionName = ConcurrentDictionary<string, int64 ref>()
 
     let Listen () =
-        let listener = new MeterListener()
+        let listener = new Metrics.MeterListener()
 
         listener.EnableMeasurementEvents jumpCounter
 

From 9488b2fd55b79759b41145139231dd470025a002 Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Sat, 27 Sep 2025 12:00:42 +0200
Subject: [PATCH 005/102] internal

---
 src/Compiler/Facilities/DiagnosticsLogger.fsi | 2 +-
 src/Compiler/Utilities/Activity.fsi           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fsi b/src/Compiler/Facilities/DiagnosticsLogger.fsi
index f81b24cec45..16dfdf64882 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fsi
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fsi
@@ -459,7 +459,7 @@ val tryLanguageFeatureErrorOption:
 
 val languageFeatureNotSupportedInLibraryError: langFeature: LanguageFeature -> m: range -> 'T
 
-module StackGuardMetrics =
+module internal StackGuardMetrics =
     val Listen: unit -> IDisposable
     val StatsToString: unit -> string
     val CaptureStatsAndWriteToConsole: unit -> IDisposable
diff --git a/src/Compiler/Utilities/Activity.fsi b/src/Compiler/Utilities/Activity.fsi
index b6381a9a47d..50d134d559e 100644
--- a/src/Compiler/Utilities/Activity.fsi
+++ b/src/Compiler/Utilities/Activity.fsi
@@ -16,7 +16,7 @@ module ActivityNames =
 
     val AllRelevantNames: string[]
 
-module Metrics =
+module internal Metrics =
     val Meter: Meter
 
 /// For activities following the dotnet distributed tracing concept

From ad63ff912a70f27ad0e409f867f47304233ff667 Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Mon, 29 Sep 2025 15:01:26 +0200
Subject: [PATCH 006/102] extract table printing to module

---
 src/Compiler/Facilities/DiagnosticsLogger.fs  | 29 +++++++---
 src/Compiler/Facilities/DiagnosticsLogger.fsi |  7 ++-
 src/Compiler/Utilities/Activity.fs            | 45 +++++++++++++++
 src/Compiler/Utilities/Activity.fsi           |  2 +
 src/Compiler/Utilities/Caches.fs              | 55 ++++++-------------
 5 files changed, 91 insertions(+), 47 deletions(-)

diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/Compiler/Facilities/DiagnosticsLogger.fs
index 2680b20c0f6..338c2ec48fd 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fs
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fs
@@ -904,15 +904,18 @@ module StackGuardMetrics =
         listener :> IDisposable
 
     let StatsToString () =
-        let entries =
-            jumpsByFunctionName
-            |> Seq.map (fun kvp -> $"{kvp.Key}: {kvp.Value.Value}")
-            |> String.concat ", "
+        let headers = [ "Caller"; "Jumps" ]
 
-        if entries.Length > 0 then
-            $"StackGuard jumps: {entries} \n"
-        else
+        let data =
+            [
+                for kvp in jumpsByFunctionName do
+                    [ kvp.Key; string kvp.Value.Value ]
+            ]
+
+        if List.isEmpty data then
             ""
+        else
+            $"StackGuard jumps:\n{Metrics.printTable headers data}"
 
     let CaptureStatsAndWriteToConsole () =
         let listener = Listen()
@@ -929,14 +932,22 @@ type StackGuard(maxDepth: int, name: string) =
     let mutable depth = 1
 
     [<DebuggerHidden; DebuggerStepThrough>]
-    member _.Guard(f, [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string) =
+    member _.Guard
+        (
+            f,
+            [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string,
+            [<CallerFilePath; Optional; DefaultParameterValue("")>] path: string,
+            [<CallerLineNumber; Optional; DefaultParameterValue(0)>] line: int
+        ) =
 
         depth <- depth + 1
 
         try
             if depth % maxDepth = 0 then
 
-                StackGuardMetrics.countJump memberName
+                let fileName = System.IO.Path.GetFileName(path)
+
+                StackGuardMetrics.countJump $"{memberName} ({fileName}:{line})"
 
                 async {
                     do! Async.SwitchToNewThread()
diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fsi b/src/Compiler/Facilities/DiagnosticsLogger.fsi
index 16dfdf64882..7bef3d3a15a 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fsi
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fsi
@@ -468,7 +468,12 @@ type StackGuard =
     new: maxDepth: int * name: string -> StackGuard
 
     /// Execute the new function, on a new thread if necessary
-    member Guard: f: (unit -> 'T) * [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string -> 'T
+    member Guard:
+        f: (unit -> 'T) *
+        [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string *
+        [<CallerFilePath; Optional; DefaultParameterValue("")>] path: string *
+        [<CallerLineNumber; Optional; DefaultParameterValue(0)>] line: int ->
+            'T
 
     member GuardCancellable: Internal.Utilities.Library.Cancellable<'T> -> Internal.Utilities.Library.Cancellable<'T>
 
diff --git a/src/Compiler/Utilities/Activity.fs b/src/Compiler/Utilities/Activity.fs
index 1712d89d6d6..c46ca661995 100644
--- a/src/Compiler/Utilities/Activity.fs
+++ b/src/Compiler/Utilities/Activity.fs
@@ -21,6 +21,51 @@ module ActivityNames =
 module Metrics =
     let Meter = new Metrics.Meter(ActivityNames.FscSourceName, "1.0.0")
 
+    let formatTable headers rows =
+        let columnWidths =
+            headers :: rows
+            |> List.transpose
+            |> List.map (List.map String.length >> List.max)
+
+        let center width (cell: string) =
+            String.replicate ((width - cell.Length) / 2) " " + cell |> _.PadRight(width)
+
+        let headers = (columnWidths, headers) ||> List.map2 center
+
+        let printRow (row: string list) =
+            row
+            |> List.mapi (fun i (cell: string) ->
+                if i = 0 then
+                    cell.PadRight(columnWidths[i])
+                else
+                    cell.PadLeft(columnWidths[i]))
+            |> String.concat " | "
+            |> sprintf "| %s |"
+
+        let headerRow = printRow headers
+
+        let divider = headerRow |> String.map (fun c -> if c = '|' then c else '-')
+        let hl = String.replicate divider.Length "-"
+
+        use sw = new StringWriter()
+
+        sw.WriteLine hl
+        sw.WriteLine headerRow
+        sw.WriteLine divider
+
+        for row in rows do
+            sw.WriteLine(printRow row)
+
+        sw.WriteLine hl
+
+        string sw
+
+    let printTable headers rows =
+        try
+            formatTable headers rows
+        with exn ->
+            $"Error formatting table: {exn}"
+
 [<RequireQualifiedAccess>]
 module internal Activity =
 
diff --git a/src/Compiler/Utilities/Activity.fsi b/src/Compiler/Utilities/Activity.fsi
index 50d134d559e..8ff0a4c3494 100644
--- a/src/Compiler/Utilities/Activity.fsi
+++ b/src/Compiler/Utilities/Activity.fsi
@@ -19,6 +19,8 @@ module ActivityNames =
 module internal Metrics =
     val Meter: Meter
 
+    val printTable: headers: string list -> rows: string list list -> string
+
 /// For activities following the dotnet distributed tracing concept
 /// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations
 [<RequireQualifiedAccess>]
diff --git a/src/Compiler/Utilities/Caches.fs b/src/Compiler/Utilities/Caches.fs
index 21687ea2d89..cae35a93015 100644
--- a/src/Compiler/Utilities/Caches.fs
+++ b/src/Compiler/Utilities/Caches.fs
@@ -96,43 +96,24 @@ module CacheMetrics =
         listener :> IDisposable
 
     let StatsToString () =
-        use sw = new StringWriter()
-
-        let nameColumnWidth =
-            [ yield! statsByName.Keys; "Cache name" ] |> Seq.map String.length |> Seq.max
-
-        let columns = allCounters |> List.map _.Name
-        let columnWidths = columns |> List.map String.length |> List.map (max 8)
-
-        let header =
-            "| "
-            + String.concat
-                " | "
-                [
-                    "Cache name".PadRight nameColumnWidth
-                    "hit-ratio"
-                    for w, c in (columnWidths, columns) ||> List.zip do
-                        $"{c.PadLeft w}"
-                ]
-            + " |"
-
-        sw.WriteLine(String('-', header.Length))
-        sw.WriteLine(header)
-        sw.WriteLine(header |> String.map (fun c -> if c = '|' then '|' else '-'))
-
-        for kv in statsByName do
-            let name = kv.Key
-            let stats = kv.Value
-            let totals = stats.GetTotals()
-            sw.Write $"| {name.PadLeft nameColumnWidth} | {stats.Ratio, 9:P2} |"
-
-            for w, c in (columnWidths, columns) ||> List.zip do
-                sw.Write $" {totals[c].ToString().PadLeft(w)} |"
-
-            sw.WriteLine()
-
-        sw.WriteLine(String('-', header.Length))
-        string sw
+        let headers = [ "Cache name"; "hit-ratio" ] @ (allCounters |> List.map _.Name)
+
+        let rows =
+            [
+                for kv in statsByName do
+                    let name = kv.Key
+                    let stats = kv.Value
+                    let totals = stats.GetTotals()
+
+                    [
+                        yield name
+                        yield $"{stats.Ratio:P2}"
+                        for c in allCounters do
+                            yield $"{totals[c.Name]}"
+                    ]
+            ]
+
+        FSharp.Compiler.Diagnostics.Metrics.printTable headers rows
 
     let CaptureStatsAndWriteToConsole () =
         let listener = ListenToAll()

From aee78270966b5893fef5c743ea4f56732cc855dd Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Mon, 29 Sep 2025 15:03:01 +0200
Subject: [PATCH 007/102] remove meter version

---
 src/Compiler/Utilities/Activity.fs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Compiler/Utilities/Activity.fs b/src/Compiler/Utilities/Activity.fs
index c46ca661995..1995e94ad6b 100644
--- a/src/Compiler/Utilities/Activity.fs
+++ b/src/Compiler/Utilities/Activity.fs
@@ -19,7 +19,7 @@ module ActivityNames =
     let AllRelevantNames = [| FscSourceName; ProfiledSourceName |]
 
 module Metrics =
-    let Meter = new Metrics.Meter(ActivityNames.FscSourceName, "1.0.0")
+    let Meter = new Metrics.Meter(ActivityNames.FscSourceName)
 
     let formatTable headers rows =
         let columnWidths =

From c0be66bfd3e4be399543b1d6f72da42174134241 Mon Sep 17 00:00:00 2001
From: Jakub Majocha <1760221+majocha@users.noreply.github.com>
Date: Mon, 29 Sep 2025 22:09:58 +0200
Subject: [PATCH 008/102] separate column for source location

---
 src/Compiler/Facilities/DiagnosticsLogger.fs      | 15 +++++++++------
 .../src/FSharp.Editor/Common/DebugHelpers.fs      |  2 +-
 .../LanguageService/LanguageService.fs            |  2 +-
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/Compiler/Facilities/DiagnosticsLogger.fs
index 338c2ec48fd..2a087283468 100644
--- a/src/Compiler/Facilities/DiagnosticsLogger.fs
+++ b/src/Compiler/Facilities/DiagnosticsLogger.fs
@@ -879,16 +879,17 @@ module StackGuardMetrics =
             description = "Tracks the number of times the stack guard has jumped to a new thread"
         )
 
-    let countJump memberName =
+    let countJump memberName location =
         let tags =
             let mutable tags = TagList()
             tags.Add(Activity.Tags.callerMemberName, memberName)
+            tags.Add("source", location)
             tags
 
         jumpCounter.Add(1L, &tags)
 
     // Used by the self-listener.
-    let jumpsByFunctionName = ConcurrentDictionary<string, int64 ref>()
+    let jumpsByFunctionName = ConcurrentDictionary<_, int64 ref>()
 
     let Listen () =
         let listener = new Metrics.MeterListener()
@@ -897,19 +898,21 @@ module StackGuardMetrics =
 
         listener.SetMeasurementEventCallback(fun _ v tags _ ->
             let memberName = nonNull tags[0].Value :?> string
-            let counter = jumpsByFunctionName.GetOrAdd(memberName, fun _ -> ref 0L)
+            let source = nonNull tags[1].Value :?> string
+            let counter = jumpsByFunctionName.GetOrAdd((memberName, source), fun _ -> ref 0L)
             Interlocked.Add(counter, v) |> ignore)
 
         listener.Start()
         listener :> IDisposable
 
     let StatsToString () =
-        let headers = [ "Caller"; "Jumps" ]
+        let headers = [ "caller"; "source"; "jumps" ]
 
         let data =
             [
                 for kvp in jumpsByFunctionName do
-                    [ kvp.Key; string kvp.Value.Value ]
+                    let (memberName, source) = kvp.Key
+                    [ memberName; source; string kvp.Value.Value ]
             ]
 
         if List.isEmpty data then
@@ -947,7 +950,7 @@ type StackGuard(maxDepth: int, name: string) =
 
                 let fileName = System.IO.Path.GetFileName(path)
 
-                StackGuardMetrics.countJump $"{memberName} ({fileName}:{line})"
+                StackGuardMetrics.countJump memberName $"{fileName}:{line}"
 
                 async {
                     do! Async.SwitchToNewThread()
diff --git a/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs b/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs
index b06461982c5..fa8303b7e60 100644
--- a/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs
+++ b/vsintegration/src/FSharp.Editor/Common/DebugHelpers.fs
@@ -120,7 +120,7 @@ module FSharpServiceTelemetry =
 
         ActivitySource.AddActivityListener(listener)
 
-    let periodicallyDisplayCacheStats =
+    let periodicallyDisplayMetrics =
         cancellableTask {
             use _ = CacheMetrics.ListenToAll()
             use _ = FSharp.Compiler.DiagnosticsLogger.StackGuardMetrics.Listen()
diff --git a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
index 92b6979883a..6c84d3fb810 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
+++ b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
@@ -417,7 +417,7 @@ type internal FSharpPackage() as this =
             false,
             fun _ _ ->
                 task {
-                    DebugHelpers.FSharpServiceTelemetry.periodicallyDisplayCacheStats
+                    DebugHelpers.FSharpServiceTelemetry.periodicallyDisplayMetrics
                     |> CancellableTask.start this.DisposalToken
                     |> ignore
                 }

From 4f0623a60b96a61962a8f05de94cbdf94edfb11e Mon Sep 17 00:00:00 2001
From: Edgar Gonzalez <edgargonzalez.info@gmail.com>
Date: Mon, 29 Sep 2025 16:15:03 +0100
Subject: [PATCH 009/102] Failing test

---
 tests/FSharp.Compiler.Service.Tests/EditorTests.fs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
index 6df9a1dc4a9..a98a100c8cb 100644
--- a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
+++ b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
@@ -2113,7 +2113,7 @@ let rUpdate = { r1 with  }
     hasRecordField "Field1" declarations
     hasRecordField "Field2" declarations
 
-[<Fact(Skip = "Current fails to suggest any record fields")>]
+[<Fact>]
 let ``Record fields are completed in update record with partial field name`` () =
     let parseResults, checkResults =
         getParseAndCheckResults """

From f41ef6d5774e1bc6ba1ea40aaa0324fe5e8abdcf Mon Sep 17 00:00:00 2001
From: Edgar Gonzalez <edgargonzalez.info@gmail.com>
Date: Mon, 29 Sep 2025 16:51:09 +0100
Subject: [PATCH 010/102] Fix

---
 src/Compiler/Service/ServiceParseTreeWalk.fs  | 12 +++++-
 .../EditorTests.fs                            | 38 +++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/src/Compiler/Service/ServiceParseTreeWalk.fs b/src/Compiler/Service/ServiceParseTreeWalk.fs
index 133df625a8a..cb4915902a8 100644
--- a/src/Compiler/Service/ServiceParseTreeWalk.fs
+++ b/src/Compiler/Service/ServiceParseTreeWalk.fs
@@ -528,7 +528,17 @@ module SyntaxTraversal =
                         for SynExprRecordField(fieldName = (field, _); expr = e; blockSeparator = sepOpt) in fields do
                             yield
                                 dive (path, copyOpt, Some field) field.Range (fun r ->
-                                    if rangeContainsPos field.Range pos then
+                                    // Treat the caret placed right after the field name (before '=' or a value) as "inside" the field,
+                                    // but only if the field does not yet have a value.
+                                    //
+                                    // Examples (the '$' marks the caret):
+                                    //   { r with Field1$ }
+                                    //   { r with
+                                    //       Field1$
+                                    //   }
+                                    let isCaretAfterFieldNameWithoutValue = (e.IsNone && posGeq pos field.Range.End)
+
+                                    if rangeContainsPos field.Range pos || isCaretAfterFieldNameWithoutValue then
                                         visitor.VisitRecordField r
                                     else
                                         None)
diff --git a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
index a98a100c8cb..b94e777598e 100644
--- a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
+++ b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
@@ -2144,3 +2144,41 @@ let rUpdate = { r1 with Fi }
 
     hasRecordField "Field1" declarations
     hasRecordField "Field2" declarations
+
+[<Fact>]
+let ``Multiline record fields are completed in update record with partial field name`` () =
+    let parseResults, checkResults =
+        getParseAndCheckResults """
+module Module
+
+type R1 =
+    { Field1: int; Field2: int }
+
+let r1 = { Field1 = 1; Field2 = 2 }
+
+let rUpdate2 =
+    { r1 with
+        Fi
+    }
+"""
+
+    let declarations =
+        checkResults.GetDeclarationListSymbols(
+            Some parseResults,
+            10,
+            "let rUpdate2 =
+                { r1 with
+                    Fi
+                }",
+            {
+                EndColumn = 14
+                LastDotPos = None
+                PartialIdent = "Fi"
+                QualifyingIdents = []
+            },
+            fun _ -> List.empty
+        )
+        |> List.concat
+
+    hasRecordField "Field1" declarations
+    hasRecordField "Field2" declarations

From 5f0ff48664c0cd63711707d5cb57b54a29845ad5 Mon Sep 17 00:00:00 2001
From: Edgar Gonzalez <edgargonzalez.info@gmail.com>
Date: Mon, 29 Sep 2025 20:28:43 +0100
Subject: [PATCH 011/102] Use code completion context

---
 src/Compiler/Service/ServiceParseTreeWalk.fs  |  2 +-
 .../EditorTests.fs                            | 86 +++++++++----------
 2 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/src/Compiler/Service/ServiceParseTreeWalk.fs b/src/Compiler/Service/ServiceParseTreeWalk.fs
index cb4915902a8..f280df1b237 100644
--- a/src/Compiler/Service/ServiceParseTreeWalk.fs
+++ b/src/Compiler/Service/ServiceParseTreeWalk.fs
@@ -536,7 +536,7 @@ module SyntaxTraversal =
                                     //   { r with
                                     //       Field1$
                                     //   }
-                                    let isCaretAfterFieldNameWithoutValue = (e.IsNone && posGeq pos field.Range.End)
+                                    let isCaretAfterFieldNameWithoutValue = (e.IsNone && posEq pos field.Range.End)
 
                                     if rangeContainsPos field.Range pos || isCaretAfterFieldNameWithoutValue then
                                         visitor.VisitRecordField r
diff --git a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
index b94e777598e..6ce135326fc 100644
--- a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
+++ b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs
@@ -1937,6 +1937,15 @@ let hasRecordType (recordTypeName: string) (symbolUses: FSharpSymbolUse list) =
         | _ -> false
     )
     |> fun exists -> Assert.True(exists, $"Record type {recordTypeName} not found.")
+    
+let private assertItemsWithNames contains names (completionInfo: DeclarationListInfo) =
+    let itemNames = completionInfo.Items |> Array.map _.NameInCode |> set
+
+    for name in names do
+        Assert.True(Set.contains name itemNames = contains)
+
+let assertHasItemWithNames names (completionInfo: DeclarationListInfo) =
+    assertItemsWithNames true names completionInfo
 
 [<Fact>]
 let ``Record fields are completed via type name usage`` () =
@@ -2115,8 +2124,7 @@ let rUpdate = { r1 with  }
 
 [<Fact>]
 let ``Record fields are completed in update record with partial field name`` () =
-    let parseResults, checkResults =
-        getParseAndCheckResults """
+    let info = Checker.getCompletionInfo """
 module Module
 
 type R1 =
@@ -2124,31 +2132,14 @@ type R1 =
 
 let r1 = { Field1 = 1; Field2 = 2 }
 
-let rUpdate = { r1 with Fi }
+let rUpdate = { r1 with Fi{caret} }
 """
 
-    let declarations =
-        checkResults.GetDeclarationListSymbols(
-            Some parseResults,
-            9,
-            "let rUpdate = { r1 with Fi }",
-            {
-                EndColumn = 26
-                LastDotPos = None
-                PartialIdent = "Fi"
-                QualifyingIdents = []
-            },
-            fun _ -> List.empty
-        )
-        |> List.concat
-
-    hasRecordField "Field1" declarations
-    hasRecordField "Field2" declarations
+    assertHasItemWithNames ["Field1"; "Field2"] info
 
 [<Fact>]
 let ``Multiline record fields are completed in update record with partial field name`` () =
-    let parseResults, checkResults =
-        getParseAndCheckResults """
+    let info = Checker.getCompletionInfo """
 module Module
 
 type R1 =
@@ -2156,29 +2147,38 @@ type R1 =
 
 let r1 = { Field1 = 1; Field2 = 2 }
 
-let rUpdate2 =
+let rUpdate =
     { r1 with
-        Fi
+        Fi{caret}
     }
 """
 
-    let declarations =
-        checkResults.GetDeclarationListSymbols(
-            Some parseResults,
-            10,
-            "let rUpdate2 =
-                { r1 with
-                    Fi
-                }",
-            {
-                EndColumn = 14
-                LastDotPos = None
-                PartialIdent = "Fi"
-                QualifyingIdents = []
-            },
-            fun _ -> List.empty
-        )
-        |> List.concat
+    assertHasItemWithNames ["Field1"; "Field2"] info
+    
+[<Fact>]
+let ``No record field completion after '=' with missing value in first binding (after =;)`` () =
+    let info = Checker.getCompletionInfo """
+module M
 
-    hasRecordField "Field1" declarations
-    hasRecordField "Field2" declarations
+type X =
+   val field1: int
+   val field2: string
+
+let x = new X()
+let _ = { field1 =; {caret} }
+"""
+    assertItemsWithNames false ["field1"; "field2"] info
+
+[<Fact>]
+let ``No record field completion after '=' with missing value in first binding (after =; f)`` () =
+    let info = Checker.getCompletionInfo """
+module M
+
+type X =
+   val field1: int
+   val field2: string
+
+let x = new X()
+let _ = { field1 =; f{caret} }
+"""
+    assertItemsWithNames false ["field1"; "field2"] info
\ No newline at end of file

From f78abe1bf0be3cac495701c0e3e0e43b95201708 Mon Sep 17 00:00:00 2001
From: Edgar Gonzalez <edgargonzalez.info@gmail.com>
Date: Mon, 29 Sep 2025 21:54:47 +0100
Subject: [PATCH 012/102] release notes

---
 docs/release-notes/.FSharp.Compiler.Service/10.0.100.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md b/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md
index fe1ddaf787d..89afb46101b 100644
--- a/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md
+++ b/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md
@@ -36,6 +36,7 @@
 * Caches: type subsumption cache key perf regression ([Issue #18925](https://github.com/dotnet/fsharp/issues/18925) [PR #18926](https://github.com/dotnet/fsharp/pull/18926))
 * Ensure that line directives are applied to source identifiers (issue [#18908](https://github.com/dotnet/fsharp/issues/18908), PR [#18918](https://github.com/dotnet/fsharp/pull/18918))
 * Fix expected and actual types in ErrorFromAddingTypeEquation message and extended diagnostic data. ([PR #18915](https://github.com/dotnet/fsharp/pull/18915))
+* Editor: Fix Record fields completion in update record with partial field name. ([PR #18946](https://github.com/dotnet/fsharp/pull/18946))
 
 ### Changed
 * Use `errorR` instead of `error` in `CheckDeclarations.fs` when possible. ([PR #18645](https://github.com/dotnet/fsharp/pull/18645))

From 9006615f22e1bf09d982e387f22638d9c119e443 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 30 Sep 2025 17:18:23 +0000
Subject: [PATCH 013/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#18943)

* Update dependencies from https://github.com/dotnet/arcade build 20250926.2
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25426.3 -> To Version 10.0.0-beta.25476.2

* Update dependencies from https://github.com/dotnet/arcade build 20250929.4
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25426.3 -> To Version 10.0.0-beta.25479.4

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                              | 2 +-
 eng/Version.Details.xml                                | 4 ++--
 eng/common/SetupNugetSources.ps1                       | 2 +-
 eng/common/SetupNugetSources.sh                        | 2 +-
 eng/common/core-templates/job/publish-build-assets.yml | 9 ++++++++-
 eng/common/core-templates/jobs/jobs.yml                | 2 ++
 eng/common/post-build/nuget-verification.ps1           | 2 +-
 global.json                                            | 6 +++---
 8 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index e0f3350befd..9cf05d9b6c2 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -18,7 +18,7 @@ This file should be imported by eng/Versions.props
     <SystemReflectionMetadataPackageVersion>9.0.0</SystemReflectionMetadataPackageVersion>
     <SystemThreadingTasksDataflowPackageVersion>9.0.0</SystemThreadingTasksDataflowPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25426.3</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25479.4</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index acbf83c0f9d..9ff3a6513d5 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -44,9 +44,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25426.3">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25479.4">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>5db998e02282e63bc375948a237bcdfef534a5c5</Sha>
+      <Sha>e6f510cb87812d56ad781d93ff0513cdcccd0eb4</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index 792b60b49d4..9445c314325 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -157,7 +157,7 @@ if ($dotnet31Source -ne $null) {
     AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
 }
 
-$dotnetVersions = @('5','6','7','8','9')
+$dotnetVersions = @('5','6','7','8','9','10')
 
 foreach ($dotnetVersion in $dotnetVersions) {
     $feedPrefix = "dotnet" + $dotnetVersion;
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index facb415ca6f..ddf4efc81a4 100755
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -99,7 +99,7 @@ if [ "$?" == "0" ]; then
     PackageSources+=('dotnet3.1-internal-transport')
 fi
 
-DotNetVersions=('5' '6' '7' '8' '9')
+DotNetVersions=('5' '6' '7' '8' '9' '10')
 
 for DotNetVersion in ${DotNetVersions[@]} ; do
     FeedPrefix="dotnet${DotNetVersion}";
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index 348cd16376f..37dff559fc1 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -40,6 +40,8 @@ parameters:
 
   repositoryAlias: self
 
+  officialBuildId: ''
+
 jobs:
 - job: Asset_Registry_Publish
 
@@ -62,6 +64,11 @@ jobs:
       value: false
     # unconditional - needed for logs publishing (redactor tool version)
     - template: /eng/common/core-templates/post-build/common-variables.yml
+  - name: OfficialBuildId
+    ${{ if ne(parameters.officialBuildId, '') }}:
+      value: ${{ parameters.officialBuildId }}
+    ${{ else }}:
+      value: $(Build.BuildNumber)
 
   pool:
     # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
@@ -124,7 +131,7 @@ jobs:
           /p:ManifestsPath='$(Build.StagingDirectory)/AssetManifests'
           /p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }}
           /p:MaestroApiEndpoint=https://maestro.dot.net
-          /p:OfficialBuildId=$(Build.BuildNumber)
+          /p:OfficialBuildId=$(OfficialBuildId)
       condition: ${{ parameters.condition }}
       continueOnError: ${{ parameters.continueOnError }}
     
diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml
index b637cb6e948..01ada747665 100644
--- a/eng/common/core-templates/jobs/jobs.yml
+++ b/eng/common/core-templates/jobs/jobs.yml
@@ -44,6 +44,7 @@ parameters:
   artifacts: {}
   is1ESPipeline: ''
   repositoryAlias: self
+  officialBuildId: ''
 
 # Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
 # and some (Microbuild) should only be applied to non-PR cases for internal builds.
@@ -116,3 +117,4 @@ jobs:
         artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
         signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }}
         repositoryAlias: ${{ parameters.repositoryAlias }}
+        officialBuildId: ${{ parameters.officialBuildId }}
diff --git a/eng/common/post-build/nuget-verification.ps1 b/eng/common/post-build/nuget-verification.ps1
index a365194a938..ac5c69ffcac 100644
--- a/eng/common/post-build/nuget-verification.ps1
+++ b/eng/common/post-build/nuget-verification.ps1
@@ -30,7 +30,7 @@
 [CmdletBinding(PositionalBinding = $false)]
 param(
    [string]$NuGetExePath,
-   [string]$PackageSource = "https://api.nuget.org/v3/index.json",
+   [string]$PackageSource = "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json",
    [string]$DownloadPath,
    [Parameter(ValueFromRemainingArguments = $true)]
    [string[]]$args
diff --git a/global.json b/global.json
index 9904c9b734c..2271576ea50 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.100-rc.1.25411.109",
+    "version": "10.0.100-rc.1.25451.107",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.100-rc.1.25411.109",
+    "dotnet": "10.0.100-rc.1.25451.107",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25426.3",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25479.4",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From e85fd51f9c4dc8cd222602aaea6dde3982f71ef3 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Wed, 1 Oct 2025 16:54:19 +0200
Subject: [PATCH 014/102] Update branch names for F# and VS insertion (#18944)

---
 azure-pipelines.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 403f7373f1f..09783884c3f 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -29,11 +29,11 @@ variables:
   # The future "product" gets developed in main, so should be main in main.
   # When servicing branch gets created, this should maintain the mapping between F# servicing and VS servicing branches
   - name: FSharpReleaseBranchName
-    value: main
+    value: release/dev18.0
   # VS Insertion branch name (NOT the same as F# branch)
   # ( for main we insert into VS main and for all *previous* releases we insert into corresponding VS release),
   - name: VSInsertionTargetBranchName
-    value: main
+    value: rel/d18.0
   - name: _TeamName
     value: FSharp
   - name: TeamName

From 2cb9ee0a5d63b52ad7bfbd9364b90b991a26fd72 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 17:16:39 +0200
Subject: [PATCH 015/102] Double the iterations in StackOverflowRepro - see if
 it fails MacOS (#18952)

---
 .../EmittedIL/TryCatch/StackOverflowRepro.fs                   | 2 +-
 .../EmittedIL/TryCatch/TryCatch.fs                             | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/StackOverflowRepro.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/StackOverflowRepro.fs
index 310a6615aba..22f501c4f85 100644
--- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/StackOverflowRepro.fs
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/StackOverflowRepro.fs
@@ -31,4 +31,4 @@ let main (args:string[]) =
     with
     | ex -> 
         printf "%s" (ex.GetType().ToString())
-        0
\ No newline at end of file
+        0
diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/TryCatch.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/TryCatch.fs
index bc3efb3cae2..b13739fa603 100644
--- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/TryCatch.fs
+++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TryCatch/TryCatch.fs
@@ -63,8 +63,9 @@ module TryCatch =
            let fsharpCoreFile = typeof<voption<_>>.Assembly.Location
            File.Copy(fsharpCoreFile, Path.Combine(Path.GetDirectoryName(dllFile), Path.GetFileName(fsharpCoreFile)), true)
            let result = CompilerAssert.ExecuteAndReturnResult (dllFile, isFsx=false, deps = s.Dependencies, newProcess=true)
+           printfn "%A" result
 
-           Assert.True(result.StdErr.Contains "stack overflow" || result.StdErr.Contains "StackOverflow")
+           Assert.True(result.StdErr.Contains "stack overflow" || result.StdErr.Contains "StackOverflow", result.StdErr)
 
         | _ -> failwith (sprintf "%A" compilationResult)
 

From 10aa648f174bf16dc92444810566a87ff67cf241 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 9 Oct 2025 12:56:40 +0200
Subject: [PATCH 016/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#18972)

* Update dependencies from https://github.com/dotnet/arcade build 20251007.1
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25479.4 -> To Version 10.0.0-beta.25507.1

* Update dependencies from https://github.com/dotnet/arcade build 20251008.4
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25479.4 -> To Version 10.0.0-beta.25508.4

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 9cf05d9b6c2..a258cc872c1 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -18,7 +18,7 @@ This file should be imported by eng/Versions.props
     <SystemReflectionMetadataPackageVersion>9.0.0</SystemReflectionMetadataPackageVersion>
     <SystemThreadingTasksDataflowPackageVersion>9.0.0</SystemThreadingTasksDataflowPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25479.4</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25508.4</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 9ff3a6513d5..bfeaa775309 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -44,9 +44,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25479.4">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25508.4">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>e6f510cb87812d56ad781d93ff0513cdcccd0eb4</Sha>
+      <Sha>7ff6478d902606d65aa33cb8cedc2730e1843fe1</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 2271576ea50..4e1e45d9fbd 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25479.4",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25508.4",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 358b2db7e11f462de6a673d76290592056ea453a Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 10 Oct 2025 10:41:59 +0200
Subject: [PATCH 017/102] Update dependencies from
 https://github.com/dotnet/arcade build 20251009.2 (#18980)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25508.4 -> To Version 10.0.0-beta.25509.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props        |   2 +-
 eng/Version.Details.xml          |   4 +-
 eng/common/SetupNugetSources.ps1 |  71 +++++++------
 eng/common/SetupNugetSources.sh  | 175 ++++++++++++++++++-------------
 global.json                      |   2 +-
 5 files changed, 145 insertions(+), 109 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index a258cc872c1..5c1f7c4f771 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -18,7 +18,7 @@ This file should be imported by eng/Versions.props
     <SystemReflectionMetadataPackageVersion>9.0.0</SystemReflectionMetadataPackageVersion>
     <SystemThreadingTasksDataflowPackageVersion>9.0.0</SystemThreadingTasksDataflowPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25508.4</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25509.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index bfeaa775309..fd474d3c19e 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -44,9 +44,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25508.4">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25509.2">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>7ff6478d902606d65aa33cb8cedc2730e1843fe1</Sha>
+      <Sha>32a401ae573e0b2613c0ec9ce5bb0052d7b79147</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index 9445c314325..fc8d618014e 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -7,7 +7,7 @@
 # See example call for this script below.
 #
 #  - task: PowerShell@2
-#    displayName: Setup Private Feeds Credentials
+#    displayName: Setup internal Feeds Credentials
 #    condition: eq(variables['Agent.OS'], 'Windows_NT')
 #    inputs:
 #      filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
@@ -34,19 +34,28 @@ Set-StrictMode -Version 2.0
 
 . $PSScriptRoot\tools.ps1
 
+# Adds or enables the package source with the given name
+function AddOrEnablePackageSource($sources, $disabledPackageSources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
+    if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource -DisabledPackageSources $disabledPackageSources -Creds $creds -PackageSourceName $SourceName)) {
+        AddPackageSource -Sources $sources -SourceName $SourceName -SourceEndPoint $SourceEndPoint -Creds $creds -Username $userName -pwd $Password
+    }
+}
+
 # Add source entry to PackageSources
 function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
     $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']")
     
     if ($packageSource -eq $null)
     {
+        Write-Host "Adding package source $SourceName"
+
         $packageSource = $doc.CreateElement("add")
         $packageSource.SetAttribute("key", $SourceName)
         $packageSource.SetAttribute("value", $SourceEndPoint)
         $sources.AppendChild($packageSource) | Out-Null
     }
     else {
-        Write-Host "Package source $SourceName already present."
+        Write-Host "Package source $SourceName already present and enabled."
     }
 
     AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd
@@ -59,6 +68,8 @@ function AddCredential($creds, $source, $username, $pwd) {
         return;
     }
 
+    Write-Host "Inserting credential for feed: " $source
+
     # Looks for credential configuration for the given SourceName. Create it if none is found.
     $sourceElement = $creds.SelectSingleNode($Source)
     if ($sourceElement -eq $null)
@@ -91,24 +102,27 @@ function AddCredential($creds, $source, $username, $pwd) {
     $passwordElement.SetAttribute("value", $pwd)
 }
 
-function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) {
-    $maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]")
-
-    Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds."
-    
-    ForEach ($PackageSource in $maestroPrivateSources) {
-        Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key
-        AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd
+# Enable all darc-int package sources.
+function EnableMaestroInternalPackageSources($DisabledPackageSources, $Creds) {
+    $maestroInternalSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
+    ForEach ($DisabledPackageSource in $maestroInternalSources) {
+        EnableInternalPackageSource -DisabledPackageSources $DisabledPackageSources -Creds $Creds -PackageSourceName $DisabledPackageSource.key
     }
 }
 
-function EnablePrivatePackageSources($DisabledPackageSources) {
-    $maestroPrivateSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
-    ForEach ($DisabledPackageSource in $maestroPrivateSources) {
-        Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource"
+# Enables an internal package source by name, if found. Returns true if the package source was found and enabled, false otherwise.
+function EnableInternalPackageSource($DisabledPackageSources, $Creds, $PackageSourceName) {
+    $DisabledPackageSource = $DisabledPackageSources.SelectSingleNode("add[@key='$PackageSourceName']")
+    if ($DisabledPackageSource) {
+        Write-Host "Enabling internal source '$($DisabledPackageSource.key)'."
+        
         # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries
         $DisabledPackageSources.RemoveChild($DisabledPackageSource)
+
+        AddCredential -Creds $creds -Source $DisabledPackageSource.Key -Username $userName -pwd $Password
+        return $true
     }
+    return $false
 }
 
 if (!(Test-Path $ConfigFile -PathType Leaf)) {
@@ -121,15 +135,17 @@ $doc = New-Object System.Xml.XmlDocument
 $filename = (Get-Item $ConfigFile).FullName
 $doc.Load($filename)
 
-# Get reference to <PackageSources> or create one if none exist already
+# Get reference to <PackageSources> - fail if none exist
 $sources = $doc.DocumentElement.SelectSingleNode("packageSources")
 if ($sources -eq $null) {
-    $sources = $doc.CreateElement("packageSources")
-    $doc.DocumentElement.AppendChild($sources) | Out-Null
+    Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile"
+    ExitWithExitCode 1
 }
 
 $creds = $null
+$feedSuffix = "v3/index.json"
 if ($Password) {
+    $feedSuffix = "v2"
     # Looks for a <PackageSourceCredentials> node. Create it if none is found.
     $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials")
     if ($creds -eq $null) {
@@ -138,33 +154,22 @@ if ($Password) {
     }
 }
 
+$userName = "dn-bot"
+
 # Check for disabledPackageSources; we'll enable any darc-int ones we find there
 $disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources")
 if ($disabledSources -ne $null) {
     Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node"
-    EnablePrivatePackageSources -DisabledPackageSources $disabledSources
-}
-
-$userName = "dn-bot"
-
-# Insert credential nodes for Maestro's private feeds
-InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password
-
-# 3.1 uses a different feed url format so it's handled differently here
-$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']")
-if ($dotnet31Source -ne $null) {
-    AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
-    AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
+    EnableMaestroInternalPackageSources -DisabledPackageSources $disabledSources -Creds $creds
 }
-
 $dotnetVersions = @('5','6','7','8','9','10')
 
 foreach ($dotnetVersion in $dotnetVersions) {
     $feedPrefix = "dotnet" + $dotnetVersion;
     $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']")
     if ($dotnetSource -ne $null) {
-        AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
-        AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
+        AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
+        AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
     }
 }
 
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index ddf4efc81a4..dd2564aef01 100755
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -52,78 +52,126 @@ if [[ `uname -s` == "Darwin" ]]; then
     TB=''
 fi
 
-# Ensure there is a <packageSources>...</packageSources> section.
-grep -i "<packageSources>" $ConfigFile
-if [ "$?" != "0" ]; then
-    echo "Adding <packageSources>...</packageSources> section."
-    ConfigNodeHeader="<configuration>"
-    PackageSourcesTemplate="${TB}<packageSources>${NL}${TB}</packageSources>"
+# Enables an internal package source by name, if found. Returns 0 if found and enabled, 1 if not found.
+EnableInternalPackageSource() {
+    local PackageSourceName="$1"
+    
+    # Check if disabledPackageSources section exists
+    grep -i "<disabledPackageSources>" "$ConfigFile" > /dev/null
+    if [ "$?" != "0" ]; then
+        return 1  # No disabled sources section
+    fi
+    
+    # Check if this source name is disabled
+    grep -i "<add key=\"$PackageSourceName\" value=\"true\"" "$ConfigFile" > /dev/null
+    if [ "$?" == "0" ]; then
+        echo "Enabling internal source '$PackageSourceName'."
+        # Remove the disabled entry
+        local OldDisableValue="<add key=\"$PackageSourceName\" value=\"true\" />"
+        local NewDisableValue="<!-- Reenabled for build : $PackageSourceName -->"
+        sed -i.bak "s|$OldDisableValue|$NewDisableValue|" "$ConfigFile"
+        
+        # Add the source name to PackageSources for credential handling
+        PackageSources+=("$PackageSourceName")
+        return 0  # Found and enabled
+    fi
+    
+    return 1  # Not found in disabled sources
+}
+
+# Add source entry to PackageSources
+AddPackageSource() {
+    local SourceName="$1"
+    local SourceEndPoint="$2"
+    
+    # Check if source already exists
+    grep -i "<add key=\"$SourceName\"" "$ConfigFile" > /dev/null
+    if [ "$?" == "0" ]; then
+        echo "Package source $SourceName already present and enabled."
+        PackageSources+=("$SourceName")
+        return
+    fi
+    
+    echo "Adding package source $SourceName"
+    PackageSourcesNodeFooter="</packageSources>"
+    PackageSourceTemplate="${TB}<add key=\"$SourceName\" value=\"$SourceEndPoint\" />"
+    
+    sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" "$ConfigFile"
+    PackageSources+=("$SourceName")
+}
+
+# Adds or enables the package source with the given name
+AddOrEnablePackageSource() {
+    local SourceName="$1"
+    local SourceEndPoint="$2"
+    
+    # Try to enable if disabled, if not found then add new source
+    EnableInternalPackageSource "$SourceName"
+    if [ "$?" != "0" ]; then
+        AddPackageSource "$SourceName" "$SourceEndPoint"
+    fi
+}
 
-    sed -i.bak "s|$ConfigNodeHeader|$ConfigNodeHeader${NL}$PackageSourcesTemplate|" $ConfigFile
-fi
+# Enable all darc-int package sources
+EnableMaestroInternalPackageSources() {
+    # Check if disabledPackageSources section exists
+    grep -i "<disabledPackageSources>" "$ConfigFile" > /dev/null
+    if [ "$?" != "0" ]; then
+        return  # No disabled sources section
+    fi
+    
+    # Find all darc-int disabled sources
+    local DisabledDarcIntSources=()
+    DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' "$ConfigFile" | tr -d '"')
+    
+    for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do
+        if [[ $DisabledSourceName == darc-int* ]]; then
+            EnableInternalPackageSource "$DisabledSourceName"
+        fi
+    done
+}
 
-# Ensure there is a <packageSourceCredentials>...</packageSourceCredentials> section. 
-grep -i "<packageSourceCredentials>" $ConfigFile
+# Ensure there is a <packageSources>...</packageSources> section.
+grep -i "<packageSources>" $ConfigFile
 if [ "$?" != "0" ]; then
-    echo "Adding <packageSourceCredentials>...</packageSourceCredentials> section."
-
-    PackageSourcesNodeFooter="</packageSources>"
-    PackageSourceCredentialsTemplate="${TB}<packageSourceCredentials>${NL}${TB}</packageSourceCredentials>"
-
-    sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile
+    Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile"
+    ExitWithExitCode 1
 fi
 
 PackageSources=()
 
-# Ensure dotnet3.1-internal and dotnet3.1-internal-transport are in the packageSources if the public dotnet3.1 feeds are present
-grep -i "<add key=\"dotnet3.1\"" $ConfigFile
-if [ "$?" == "0" ]; then
-    grep -i "<add key=\"dotnet3.1-internal\"" $ConfigFile
+# Set feed suffix based on whether credentials are provided
+FeedSuffix="v3/index.json"
+if [ -n "$CredToken" ]; then
+    FeedSuffix="v2"
+    
+    # Ensure there is a <packageSourceCredentials>...</packageSourceCredentials> section.
+    grep -i "<packageSourceCredentials>" $ConfigFile
     if [ "$?" != "0" ]; then
-        echo "Adding dotnet3.1-internal to the packageSources."
-        PackageSourcesNodeFooter="</packageSources>"
-        PackageSourceTemplate="${TB}<add key=\"dotnet3.1-internal\" value=\"https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2\" />"
+        echo "Adding <packageSourceCredentials>...</packageSourceCredentials> section."
 
-        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
-    fi
-    PackageSources+=('dotnet3.1-internal')
-
-    grep -i "<add key=\"dotnet3.1-internal-transport\">" $ConfigFile
-    if [ "$?" != "0" ]; then
-        echo "Adding dotnet3.1-internal-transport to the packageSources."
         PackageSourcesNodeFooter="</packageSources>"
-        PackageSourceTemplate="${TB}<add key=\"dotnet3.1-internal-transport\" value=\"https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2\" />"
+        PackageSourceCredentialsTemplate="${TB}<packageSourceCredentials>${NL}${TB}</packageSourceCredentials>"
 
-        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
+        sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile
     fi
-    PackageSources+=('dotnet3.1-internal-transport')
+fi
+
+# Check for disabledPackageSources; we'll enable any darc-int ones we find there
+grep -i "<disabledPackageSources>" $ConfigFile > /dev/null
+if [ "$?" == "0" ]; then
+    echo "Checking for any darc-int disabled package sources in the disabledPackageSources node"
+    EnableMaestroInternalPackageSources
 fi
 
 DotNetVersions=('5' '6' '7' '8' '9' '10')
 
 for DotNetVersion in ${DotNetVersions[@]} ; do
     FeedPrefix="dotnet${DotNetVersion}";
-    grep -i "<add key=\"$FeedPrefix\"" $ConfigFile
+    grep -i "<add key=\"$FeedPrefix\"" $ConfigFile > /dev/null
     if [ "$?" == "0" ]; then
-        grep -i "<add key=\"$FeedPrefix-internal\"" $ConfigFile
-        if [ "$?" != "0" ]; then
-            echo "Adding $FeedPrefix-internal to the packageSources."
-            PackageSourcesNodeFooter="</packageSources>"
-            PackageSourceTemplate="${TB}<add key=\"$FeedPrefix-internal\" value=\"https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal/nuget/v2\" />"
-
-            sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
-        fi
-        PackageSources+=("$FeedPrefix-internal")
-
-        grep -i "<add key=\"$FeedPrefix-internal-transport\">" $ConfigFile
-        if [ "$?" != "0" ]; then
-            echo "Adding $FeedPrefix-internal-transport to the packageSources."
-            PackageSourcesNodeFooter="</packageSources>"
-            PackageSourceTemplate="${TB}<add key=\"$FeedPrefix-internal-transport\" value=\"https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal-transport/nuget/v2\" />"
-
-            sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile
-        fi
-        PackageSources+=("$FeedPrefix-internal-transport")
+        AddOrEnablePackageSource "$FeedPrefix-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal/nuget/$FeedSuffix"
+        AddOrEnablePackageSource "$FeedPrefix-internal-transport" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal-transport/nuget/$FeedSuffix"
     fi
 done
 
@@ -139,29 +187,12 @@ if [ "$CredToken" ]; then
         # Check if there is no existing credential for this FeedName
         grep -i "<$FeedName>" $ConfigFile 
         if [ "$?" != "0" ]; then
-            echo "Adding credentials for $FeedName."
+            echo "	Inserting credential for feed: $FeedName"
 
             PackageSourceCredentialsNodeFooter="</packageSourceCredentials>"
-            NewCredential="${TB}${TB}<$FeedName>${NL}<add key=\"Username\" value=\"dn-bot\" />${NL}<add key=\"ClearTextPassword\" value=\"$CredToken\" />${NL}</$FeedName>"
+            NewCredential="${TB}${TB}<$FeedName>${NL}${TB}<add key=\"Username\" value=\"dn-bot\" />${NL}${TB}${TB}<add key=\"ClearTextPassword\" value=\"$CredToken\" />${NL}${TB}${TB}</$FeedName>"
 
             sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile
         fi
     done
 fi
-
-# Re-enable any entries in disabledPackageSources where the feed name contains darc-int
-grep -i "<disabledPackageSources>" $ConfigFile
-if [ "$?" == "0" ]; then
-    DisabledDarcIntSources=()
-    echo "Re-enabling any disabled \"darc-int\" package sources in $ConfigFile"
-    DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' $ConfigFile  | tr -d '"')
-    for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do
-        if [[ $DisabledSourceName == darc-int* ]]
-            then
-                OldDisableValue="<add key=\"$DisabledSourceName\" value=\"true\" />"
-                NewDisableValue="<!-- Reenabled for build : $DisabledSourceName -->"
-                sed -i.bak "s|$OldDisableValue|$NewDisableValue|" $ConfigFile
-                echo "Neutralized disablePackageSources entry for '$DisabledSourceName'"
-        fi
-    done
-fi
diff --git a/global.json b/global.json
index 4e1e45d9fbd..dc3db6144d7 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25508.4",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25509.2",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From e62989c2a4159ff195f7e6ff7f689052eba26e76 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 14 Oct 2025 10:30:04 +0200
Subject: [PATCH 018/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#18988)

* Update dependencies from https://github.com/dotnet/arcade build 20251010.1
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25509.2 -> To Version 10.0.0-beta.25510.1

* Update dependencies from https://github.com/dotnet/arcade build 20251013.2
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25509.2 -> To Version 10.0.0-beta.25513.2

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props       | 2 +-
 eng/Version.Details.xml         | 4 ++--
 eng/common/SetupNugetSources.sh | 6 ++----
 global.json                     | 2 +-
 4 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 5c1f7c4f771..2c5ef89f26d 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -18,7 +18,7 @@ This file should be imported by eng/Versions.props
     <SystemReflectionMetadataPackageVersion>9.0.0</SystemReflectionMetadataPackageVersion>
     <SystemThreadingTasksDataflowPackageVersion>9.0.0</SystemThreadingTasksDataflowPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25509.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25513.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index fd474d3c19e..1c1cb3c0db6 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -44,9 +44,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25509.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25513.2">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>32a401ae573e0b2613c0ec9ce5bb0052d7b79147</Sha>
+      <Sha>e8ca69398033dd1eea35e9667bf857234465de2b</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index dd2564aef01..b97cc536379 100755
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -66,10 +66,8 @@ EnableInternalPackageSource() {
     grep -i "<add key=\"$PackageSourceName\" value=\"true\"" "$ConfigFile" > /dev/null
     if [ "$?" == "0" ]; then
         echo "Enabling internal source '$PackageSourceName'."
-        # Remove the disabled entry
-        local OldDisableValue="<add key=\"$PackageSourceName\" value=\"true\" />"
-        local NewDisableValue="<!-- Reenabled for build : $PackageSourceName -->"
-        sed -i.bak "s|$OldDisableValue|$NewDisableValue|" "$ConfigFile"
+        # Remove the disabled entry (including any surrounding comments or whitespace on the same line)
+        sed -i.bak "/<add key=\"$PackageSourceName\" value=\"true\" \/>/d" "$ConfigFile"
         
         # Add the source name to PackageSources for credential handling
         PackageSources+=("$PackageSourceName")
diff --git a/global.json b/global.json
index dc3db6144d7..fcfaa76410a 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25509.2",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25513.2",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From a89c75cd6171ee0b8fa5b37f599c753098c8f343 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Tue, 21 Oct 2025 10:53:00 +0200
Subject: [PATCH 019/102] Create 11.0.0.md

Empty file to make backport bot happy
---
 docs/release-notes/.FSharp.Compiler.Service/11.0.0.md | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 docs/release-notes/.FSharp.Compiler.Service/11.0.0.md

diff --git a/docs/release-notes/.FSharp.Compiler.Service/11.0.0.md b/docs/release-notes/.FSharp.Compiler.Service/11.0.0.md
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/docs/release-notes/.FSharp.Compiler.Service/11.0.0.md
@@ -0,0 +1 @@
+

From ffe285285ea73f0d74fa33adebc60a88d2d7f7db Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 2 Oct 2025 12:42:33 +0200
Subject: [PATCH 020/102] Move Roslyn deps from manually managed to darc

---
 eng/Version.Details.xml | 32 ++++++++++++++++++++++++++++++++
 eng/Versions.props      | 19 +++++++++----------
 2 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 1c1cb3c0db6..c1f25fac382 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -42,6 +42,38 @@
       <Uri>https://github.com/dotnet/runtime</Uri>
       <Sha>9d5a6a9aa463d6d10b0b0ba6d5982cc82f363dc3</Sha>
     </Dependency>
+    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
+    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
+    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
+    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
+    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
+    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.25480.7">
+      <Uri>https://github.com/dotnet/roslyn</Uri>
+      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+    </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
     <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25513.2">
diff --git a/eng/Versions.props b/eng/Versions.props
index 1af06f79f5d..7f073043b07 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -94,23 +94,22 @@
     <SystemReflectionEmitVersion>4.7.0</SystemReflectionEmitVersion>
     <MicrosoftDiaSymReaderPortablePdbVersion>1.6.0</MicrosoftDiaSymReaderPortablePdbVersion>
     <!-- Versions for package groups -->
-    <RoslynVersion>5.0.0-1.25276.102</RoslynVersion>
     <VisualStudioEditorPackagesVersion>17.14.188</VisualStudioEditorPackagesVersion>
     <MicrosoftVisualStudioShellPackagesVersion>17.14.40268</MicrosoftVisualStudioShellPackagesVersion>
     <VisualStudioProjectSystemPackagesVersion>17.14.79</VisualStudioProjectSystemPackagesVersion>
     <VisualStudioShellProjectsPackages>17.14.40254</VisualStudioShellProjectsPackages>
     <MicrosoftVisualStudioThreadingPackagesVersion>17.14.15</MicrosoftVisualStudioThreadingPackagesVersion>
     <!-- Roslyn packages -->
-    <MicrosoftCodeAnalysisFeaturesVersion>$(RoslynVersion)</MicrosoftCodeAnalysisFeaturesVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesVersion>$(RoslynVersion)</MicrosoftCodeAnalysisEditorFeaturesVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesTextVersion>$(RoslynVersion)</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesWpfVersion>5.0.0-1.25275.2</MicrosoftCodeAnalysisEditorFeaturesWpfVersion>
-    <MicrosoftCodeAnalysisExternalAccessFSharpVersion>$(RoslynVersion)</MicrosoftCodeAnalysisExternalAccessFSharpVersion>
-    <MicrosoftCodeAnalysisVersion>$(RoslynVersion)</MicrosoftCodeAnalysisVersion>
-    <MicrosoftCodeAnalysisCSharpVersion>$(RoslynVersion)</MicrosoftCodeAnalysisCSharpVersion>
-    <MicrosoftVisualStudioLanguageServicesVersion>$(RoslynVersion)</MicrosoftVisualStudioLanguageServicesVersion>
+    <MicrosoftCodeAnalysisFeaturesVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisFeaturesVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisEditorFeaturesVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesWpfVersion>$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)</MicrosoftCodeAnalysisEditorFeaturesWpfVersion> <!-- This was isolated before as 5.0.0-1.25275. --> 
+    <MicrosoftCodeAnalysisExternalAccessFSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisExternalAccessFSharpVersion>
+    <MicrosoftCodeAnalysisVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisVersion>
+    <MicrosoftCodeAnalysisCSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisCSharpVersion>
+    <MicrosoftVisualStudioLanguageServicesVersion>5.0.0-2.25480.7</MicrosoftVisualStudioLanguageServicesVersion>
     <MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.28</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
-    <MicrosoftCodeAnalysisCompilersVersion>$(RoslynVersion)</MicrosoftCodeAnalysisCompilersVersion>
+    <MicrosoftCodeAnalysisCompilersVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisCompilersVersion>
     <!-- -->
     <!-- Visual Studio Shell packages -->
     <MicrosoftVisualStudioInteropVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioInteropVersion>

From 9a9cf3f591a925ce9aaeb1cc06c40ded15f86185 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 2 Oct 2025 14:04:22 +0200
Subject: [PATCH 021/102] Cascade of consequences

---
 eng/Versions.props | 44 +++++++++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 21 deletions(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index 7f073043b07..0278453decd 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -94,16 +94,17 @@
     <SystemReflectionEmitVersion>4.7.0</SystemReflectionEmitVersion>
     <MicrosoftDiaSymReaderPortablePdbVersion>1.6.0</MicrosoftDiaSymReaderPortablePdbVersion>
     <!-- Versions for package groups -->
-    <VisualStudioEditorPackagesVersion>17.14.188</VisualStudioEditorPackagesVersion>
-    <MicrosoftVisualStudioShellPackagesVersion>17.14.40268</MicrosoftVisualStudioShellPackagesVersion>
+    <VisualStudioEditorPackagesVersion>18.0.332-preview</VisualStudioEditorPackagesVersion>
+    <MicrosoftVisualStudioShellPackagesVersion>18.0.2101-preview.1</MicrosoftVisualStudioShellPackagesVersion>
     <VisualStudioProjectSystemPackagesVersion>17.14.79</VisualStudioProjectSystemPackagesVersion>
-    <VisualStudioShellProjectsPackages>17.14.40254</VisualStudioShellProjectsPackages>
-    <MicrosoftVisualStudioThreadingPackagesVersion>17.14.15</MicrosoftVisualStudioThreadingPackagesVersion>
+    <VisualStudioShellProjectsPackages>18.0.2077-preview.1</VisualStudioShellProjectsPackages>
+    <MicrosoftVisualStudioThreadingPackagesVersion>17.15.20-alpha</MicrosoftVisualStudioThreadingPackagesVersion>
+  
     <!-- Roslyn packages -->
     <MicrosoftCodeAnalysisFeaturesVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisFeaturesVersion>
     <MicrosoftCodeAnalysisEditorFeaturesVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisEditorFeaturesVersion>
     <MicrosoftCodeAnalysisEditorFeaturesTextVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesWpfVersion>$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)</MicrosoftCodeAnalysisEditorFeaturesWpfVersion> <!-- This was isolated before as 5.0.0-1.25275. --> 
+    <MicrosoftCodeAnalysisEditorFeaturesWpfVersion>5.0.0-1.25377.2</MicrosoftCodeAnalysisEditorFeaturesWpfVersion> <!-- This was isolated before as 5.0.0-1.25275. --> 
     <MicrosoftCodeAnalysisExternalAccessFSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisExternalAccessFSharpVersion>
     <MicrosoftCodeAnalysisVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisVersion>
     <MicrosoftCodeAnalysisCSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisCSharpVersion>
@@ -127,12 +128,13 @@
     <MicrosoftVisualStudioManagedInterfacesVersion>$(VisualStudioShellProjectsPackages)</MicrosoftVisualStudioManagedInterfacesVersion>
     <MicrosoftVisualStudioProjectAggregatorVersion>$(VisualStudioShellProjectsPackages)</MicrosoftVisualStudioProjectAggregatorVersion>
     <MicrosoftVisualStudioGraphModelVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioGraphModelVersion>
-    <MicrosoftVisualStudioImagingVersion>17.14.40270</MicrosoftVisualStudioImagingVersion>
+    <MicrosoftVisualStudioImagingVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioImagingVersion>
     <MicrosoftVisualStudioDesignerInterfacesVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioDesignerInterfacesVersion>
-    <MicrosoftVisualStudioUtilitiesVersion>17.14.40270</MicrosoftVisualStudioUtilitiesVersion>
+    <MicrosoftVisualStudioUtilitiesVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioUtilitiesVersion>
     <MicrosoftVisualStudioShellImmutable100Version>10.0.30319</MicrosoftVisualStudioShellImmutable100Version>
     <MicrosoftVisualStudioShellImmutable110Version>11.0.50727</MicrosoftVisualStudioShellImmutable110Version>
     <MicrosoftVisualStudioShellImmutable150Version>15.0.25123-Dev15Preview</MicrosoftVisualStudioShellImmutable150Version>
+
     <!-- -->
     <!-- Visual Studio Editor packages -->
     <MicrosoftVisualStudioCoreUtilityVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioCoreUtilityVersion>
@@ -145,22 +147,22 @@
     <MicrosoftVisualStudioTextUIWpfVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextUIWpfVersion>
     <MicrosoftVisualStudioTextDataVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextDataVersion>
     <MicrosoftVisualStudioTextInternalVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextInternalVersion>
-    <MicrosoftVisualStudioComponentModelHostVersion>17.14.106</MicrosoftVisualStudioComponentModelHostVersion>
+    <MicrosoftVisualStudioComponentModelHostVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioComponentModelHostVersion>
     <NuGetSolutionRestoreManagerInteropVersion>5.6.0</NuGetSolutionRestoreManagerInteropVersion>
-    <MicrosoftVisualStudioExtensibilityTestingVersion>0.1.169-beta</MicrosoftVisualStudioExtensibilityTestingVersion>
+    <MicrosoftVisualStudioExtensibilityTestingVersion>0.1.800-beta</MicrosoftVisualStudioExtensibilityTestingVersion>
     <MicrosoftVisualStudioExtensibilityTestingSourceGeneratorVersion>$(MicrosoftVisualStudioExtensibilityTestingVersion)</MicrosoftVisualStudioExtensibilityTestingSourceGeneratorVersion>
     <MicrosoftVisualStudioExtensibilityTestingXunitVersion>$(MicrosoftVisualStudioExtensibilityTestingVersion)</MicrosoftVisualStudioExtensibilityTestingXunitVersion>
-    <!-- -->
-    <!-- Visual Studio Threading packags -->
+
+    <!-- Visual Studio Threading packages -->
     <MicrosoftVisualStudioThreadingVersion>$(MicrosoftVisualStudioThreadingPackagesVersion)</MicrosoftVisualStudioThreadingVersion>
-    <!-- -->
+
     <!-- Visual Studio Project System packages-->
     <MicrosoftVisualStudioProjectSystemVersion>$(VisualStudioProjectSystemPackagesVersion)</MicrosoftVisualStudioProjectSystemVersion>
     <MicrosoftVisualStudioProjectSystemManagedVersion>2.3.6152103</MicrosoftVisualStudioProjectSystemManagedVersion>
-    <!-- -->
+
     <!-- Misc. Visual Studio packages -->
-    <MicrosoftVSSDKBuildToolsVersion>17.10.2179</MicrosoftVSSDKBuildToolsVersion>
-    <MicrosoftVisualStudioRpcContractsVersion>17.14.20</MicrosoftVisualStudioRpcContractsVersion>
+    <MicrosoftVSSDKBuildToolsVersion>17.13.1100801-preview</MicrosoftVSSDKBuildToolsVersion>
+    <MicrosoftVisualStudioRpcContractsVersion>17.15.25-pre</MicrosoftVisualStudioRpcContractsVersion>
     <MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>17.0.0</MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>
     <MicrosoftVisualStudioValidationVersion>17.8.8</MicrosoftVisualStudioValidationVersion>
     <VSSDKDebuggerVisualizersVersion>12.0.4</VSSDKDebuggerVisualizersVersion>
@@ -172,21 +174,21 @@
     <!-- setup packages -->
     <MicroBuildCoreVersion>0.2.0</MicroBuildCoreVersion>
     <MicroBuildCoreSentinelVersion>1.0.0</MicroBuildCoreSentinelVersion>
-    <MicroBuildPluginsSwixBuildVersion>1.1.33</MicroBuildPluginsSwixBuildVersion>
+    <MicroBuildPluginsSwixBuildVersion>1.1.87</MicroBuildPluginsSwixBuildVersion>
     <!-- -->
     <!-- other packages -->
     <BenchmarkDotNetVersion>0.13.10</BenchmarkDotNetVersion>
     <FsCheckVersion>2.16.5</FsCheckVersion>
     <FSharpDataTypeProvidersVersion>4.3.0.0</FSharpDataTypeProvidersVersion>
-    <MicrosoftCompositionVersion>1.0.31</MicrosoftCompositionVersion>
-    <MicrosoftNetCompilersVersion>4.3.0-1.22220.8</MicrosoftNetCompilersVersion>
+    <MicrosoftCompositionVersion>17.13.50</MicrosoftCompositionVersion>
+    <MicrosoftNetCompilersVersion>4.12.0</MicrosoftNetCompilersVersion>
     <MicrosoftNETCoreAppRefVersion>3.1.0</MicrosoftNETCoreAppRefVersion>
-    <MicrosoftNETCoreILDAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILDAsmVersion>
-    <MicrosoftNETCoreILAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILAsmVersion>
+    <MicrosoftNETCoreILDAsmVersion>6.0.0-rtm.21518.12</MicrosoftNETCoreILDAsmVersion>
+    <MicrosoftNETCoreILAsmVersion>9.0.0-rc.2.24462.10</MicrosoftNETCoreILAsmVersion>
     <MicrosoftNETTestSdkVersion>17.11.1</MicrosoftNETTestSdkVersion>
     <NewtonsoftJsonVersion>13.0.3</NewtonsoftJsonVersion>
     <RoslynToolsSignToolVersion>1.0.0-beta2-dev3</RoslynToolsSignToolVersion>
-    <StreamJsonRpcVersion>2.22.11</StreamJsonRpcVersion>
+    <StreamJsonRpcVersion>2.23.39-alpha</StreamJsonRpcVersion>
     <NerdbankStreamsVersion>2.12.87</NerdbankStreamsVersion>
     <XUnitVersion>2.9.0</XUnitVersion>
     <XUnitRunnerVersion>2.8.2</XUnitRunnerVersion>

From c637c883d247d5d94f416741ca063c64b17961d7 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 2 Oct 2025 14:41:39 +0200
Subject: [PATCH 022/102] no nuget errors, lets see what VS integration says

---
 eng/Versions.props                                          | 6 +++---
 vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj        | 2 +-
 .../FSharp.LanguageService.Base.csproj                      | 2 +-
 .../FSharp.LanguageService/FSharp.LanguageService.fsproj    | 2 +-
 .../FSharp.ProjectSystem.Base.csproj                        | 4 ++--
 .../FSharp.ProjectSystem.FSharp.fsproj                      | 4 ++--
 .../FSharp.ProjectSystem.PropertyPages.vbproj               | 2 +-
 vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj        | 2 +-
 vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj         | 2 +-
 vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj | 2 +-
 10 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index 0278453decd..e9486870f68 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -147,7 +147,7 @@
     <MicrosoftVisualStudioTextUIWpfVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextUIWpfVersion>
     <MicrosoftVisualStudioTextDataVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextDataVersion>
     <MicrosoftVisualStudioTextInternalVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextInternalVersion>
-    <MicrosoftVisualStudioComponentModelHostVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioComponentModelHostVersion>
+    <MicrosoftVisualStudioComponentModelHostVersion>18.0.2551-preview.1</MicrosoftVisualStudioComponentModelHostVersion>
     <NuGetSolutionRestoreManagerInteropVersion>5.6.0</NuGetSolutionRestoreManagerInteropVersion>
     <MicrosoftVisualStudioExtensibilityTestingVersion>0.1.800-beta</MicrosoftVisualStudioExtensibilityTestingVersion>
     <MicrosoftVisualStudioExtensibilityTestingSourceGeneratorVersion>$(MicrosoftVisualStudioExtensibilityTestingVersion)</MicrosoftVisualStudioExtensibilityTestingSourceGeneratorVersion>
@@ -180,8 +180,8 @@
     <BenchmarkDotNetVersion>0.13.10</BenchmarkDotNetVersion>
     <FsCheckVersion>2.16.5</FsCheckVersion>
     <FSharpDataTypeProvidersVersion>4.3.0.0</FSharpDataTypeProvidersVersion>
-    <MicrosoftCompositionVersion>17.13.50</MicrosoftCompositionVersion>
-    <MicrosoftNetCompilersVersion>4.12.0</MicrosoftNetCompilersVersion>
+    <MicrosoftCompositionVersion>1.0.31</MicrosoftCompositionVersion>
+    <MicrosoftNetCompilersVersion>4.3.0-1.22220.8</MicrosoftNetCompilersVersion>
     <MicrosoftNETCoreAppRefVersion>3.1.0</MicrosoftNETCoreAppRefVersion>
     <MicrosoftNETCoreILDAsmVersion>6.0.0-rtm.21518.12</MicrosoftNETCoreILDAsmVersion>
     <MicrosoftNETCoreILAsmVersion>9.0.0-rc.2.24462.10</MicrosoftNETCoreILAsmVersion>
diff --git a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
index 963332abc3c..2c196ea0421 100644
--- a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
+++ b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
@@ -174,7 +174,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.CodeAnalysis.Features" Version="$(MicrosoftCodeAnalysisFeaturesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.Internal.VisualStudio.Interop" Version="$(MicrosoftInternalVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Wpf" Version="$(MicrosoftCodeAnalysisEditorFeaturesWpfVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" NoWarn="NU1608" />
diff --git a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
index fead6828567..5d8e9584365 100644
--- a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
+++ b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
@@ -47,7 +47,7 @@
 
   <ItemGroup>
     <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Language.StandardClassification" Version="$(MicrosoftVisualStudioLanguageStandardClassificationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
diff --git a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
index 9968c121f7c..84ed47c3935 100644
--- a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
+++ b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
@@ -56,7 +56,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj b/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
index c5608f1a6b6..8efa6b01317 100644
--- a/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
+++ b/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
@@ -43,8 +43,8 @@
     <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.CoreUtility" Version="$(MicrosoftVisualStudioCoreUtilityVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj b/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
index 576dc2aa464..643e04d2368 100644
--- a/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
+++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
@@ -104,8 +104,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.CoreUtility" Version="$(MicrosoftVisualStudioCoreUtilityVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.ImageCatalog" Version="$(MicrosoftVisualStudioImageCatalogVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
index 91418865d89..a2082802752 100644
--- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
+++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
@@ -46,7 +46,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.ManagedInterfaces" Version="$(MicrosoftVisualStudioManagedInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
diff --git a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
index 0171cdf9b26..a3c034b3478 100644
--- a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
+++ b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
@@ -58,7 +58,7 @@
 
   <ItemGroup>
     <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="System.ComponentModel.Composition" Version="$(SystemComponentModelCompositionVersion)" />
     <PackageReference Include="System.Composition" Version="$(SystemCompositionVersion)" />
diff --git a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
index e1e657a651a..59aee46dad6 100644
--- a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
+++ b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
@@ -51,7 +51,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.GraphModel" Version="$(MicrosoftVisualStudioGraphModelVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.ImageCatalog" Version="$(MicrosoftVisualStudioImageCatalogVersion)" />
diff --git a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
index 96fde123dcc..2bd2d290517 100644
--- a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
+++ b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
@@ -128,7 +128,7 @@
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Imaging" Version="$(MicrosoftVisualStudioImagingVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Language.Intellisense" Version="$(MicrosoftVisualStudioLanguageIntellisenseVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Language.StandardClassification" Version="$(MicrosoftVisualStudioLanguageStandardClassificationVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Language" Version="$(MicrosoftVisualStudioLanguageVersion)" />

From e429e9a2be2f7692304ca199a61e2952d3062ee3 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 2 Oct 2025 16:49:47 +0200
Subject: [PATCH 023/102] un-harcode csc,ildasm,ilasm deps for testframework

---
 tests/FSharp.Test.Utilities/TestFramework.fs | 36 ++++++++++++++++----
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/tests/FSharp.Test.Utilities/TestFramework.fs b/tests/FSharp.Test.Utilities/TestFramework.fs
index bbb1b556746..72dbfa46f3d 100644
--- a/tests/FSharp.Test.Utilities/TestFramework.fs
+++ b/tests/FSharp.Test.Utilities/TestFramework.fs
@@ -6,6 +6,7 @@ open System
 open System.IO
 open System.Diagnostics
 open System.Reflection
+open System.Xml.Linq
 open Scripting
 open Xunit
 open FSharp.Compiler.IO
@@ -269,8 +270,31 @@ let requireFile dir path =
         | Some _ -> fullPathLower
         | None -> failwith (sprintf "Couldn't find \"%s\" on the following paths: \"%s\", \"%s\". Running 'build test' once might solve this issue" path fullPath fullPathLower)
 
+let SCRIPT_ROOT = __SOURCE_DIRECTORY__
+let repoRoot = SCRIPT_ROOT ++ ".." ++ ".."
+
+let loadVersionsProps () =
+    let versionsPropsPath = repoRoot ++ "eng" ++ "Versions.props"
+    if not (File.Exists versionsPropsPath) then
+        failwithf "Versions.props file not found at %s" versionsPropsPath
+    XDocument.Load(versionsPropsPath)
+
+let getMsbuildPropValue (xdoc: XDocument) (propName: string) =
+    xdoc.Descendants "PropertyGroup"
+        |> Seq.collect (fun pg -> pg.Elements())
+        |> Seq.tryFind (fun el -> el.Name.LocalName = propName)
+        |> function
+            | Some el -> el.Value
+            | None -> failwithf "Property '%s' not found in Versions.props" propName
+
+// Usage example:
+let versionsPropsDoc = loadVersionsProps ()
+let cscVersion = getMsbuildPropValue versionsPropsDoc "MicrosoftNetCompilersVersion"
+let ildasmVersion = getMsbuildPropValue versionsPropsDoc "MicrosoftNETCoreILDAsmVersion"
+let ilasmVersion = getMsbuildPropValue versionsPropsDoc "MicrosoftNETCoreILAsmVersion"
+
 let config configurationName envVars =
-    let SCRIPT_ROOT = __SOURCE_DIRECTORY__
+
     let fsharpCoreArchitecture = "netstandard2.0"
     let fsharpBuildArchitecture = "netstandard2.0"
     let fsharpCompilerInteractiveSettingsArchitecture = "netstandard2.0"
@@ -284,10 +308,8 @@ let config configurationName envVars =
     let fsiArchitecture = dotnetArchitecture
     //let peverifyArchitecture = dotnetArchitecture
 #endif
-    let repoRoot = SCRIPT_ROOT ++ ".." ++ ".."
     let artifactsPath = repoRoot ++ "artifacts"
     let artifactsBinPath = artifactsPath ++ "bin"
-    let coreClrRuntimePackageVersion = "5.0.0-preview.7.20364.11"
     let csc_flags = "/nologo"
     let vbc_flags = "/nologo"
     let fsc_flags = "-r:System.Core.dll --nowarn:20 --define:COMPILED --preferreduilang:en-US" 
@@ -298,12 +320,12 @@ let config configurationName envVars =
     let packagesDir = getPackagesDir ()
     let requirePackage = requireFile packagesDir
     let requireArtifact = requireFile artifactsBinPath
-    let CSC = requirePackage ("Microsoft.Net.Compilers" ++ "4.3.0-1.22220.8" ++ "tools" ++ "csc.exe")
-    let VBC = requirePackage ("Microsoft.Net.Compilers" ++ "4.3.0-1.22220.8" ++ "tools" ++ "vbc.exe")
+    let CSC = requirePackage ("Microsoft.Net.Compilers" ++ cscVersion ++ "tools" ++ "csc.exe")
+    let VBC = requirePackage ("Microsoft.Net.Compilers" ++ cscVersion ++ "tools" ++ "vbc.exe")
     let ILDASM_EXE = if operatingSystem = "win" then "ildasm.exe" else "ildasm"
-    let ILDASM = requirePackage (("runtime." + operatingSystem + "-" + architectureMoniker + ".Microsoft.NETCore.ILDAsm") ++ coreClrRuntimePackageVersion ++ "runtimes" ++ (operatingSystem + "-" + architectureMoniker) ++ "native" ++ ILDASM_EXE)
+    let ILDASM = requirePackage (("runtime." + operatingSystem + "-" + architectureMoniker + ".Microsoft.NETCore.ILDAsm") ++ ildasmVersion ++ "runtimes" ++ (operatingSystem + "-" + architectureMoniker) ++ "native" ++ ILDASM_EXE)
     let ILASM_EXE = if operatingSystem = "win" then "ilasm.exe" else "ilasm"
-    let ILASM = requirePackage (("runtime." + operatingSystem + "-" + architectureMoniker + ".Microsoft.NETCore.ILAsm") ++ coreClrRuntimePackageVersion ++ "runtimes" ++ (operatingSystem + "-" + architectureMoniker) ++ "native" ++ ILASM_EXE)
+    let ILASM = requirePackage (("runtime." + operatingSystem + "-" + architectureMoniker + ".Microsoft.NETCore.ILAsm") ++ ilasmVersion ++ "runtimes" ++ (operatingSystem + "-" + architectureMoniker) ++ "native" ++ ILASM_EXE)
     //let PEVERIFY_EXE = if operatingSystem = "win" then "PEVerify.exe" elif operatingSystem = "osx" then "PEVerify.dll" else "PEVerify"
     let PEVERIFY = "ilverify" //requireArtifact ("PEVerify" ++ configurationName ++ peverifyArchitecture ++ PEVERIFY_EXE)
 //    let FSI_FOR_SCRIPTS = artifactsBinPath ++ "fsi" ++ configurationName ++ fsiArchitecture ++ "fsi.exe"

From 4e32245b51c19c12d229a48152bd34a47a1a0f46 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Fri, 3 Oct 2025 09:32:22 +0200
Subject: [PATCH 024/102] Apply suggestion from @T-Gro

---
 eng/Versions.props | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index e9486870f68..ecbac8b3409 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -183,8 +183,9 @@
     <MicrosoftCompositionVersion>1.0.31</MicrosoftCompositionVersion>
     <MicrosoftNetCompilersVersion>4.3.0-1.22220.8</MicrosoftNetCompilersVersion>
     <MicrosoftNETCoreAppRefVersion>3.1.0</MicrosoftNETCoreAppRefVersion>
-    <MicrosoftNETCoreILDAsmVersion>6.0.0-rtm.21518.12</MicrosoftNETCoreILDAsmVersion>
-    <MicrosoftNETCoreILAsmVersion>9.0.0-rc.2.24462.10</MicrosoftNETCoreILAsmVersion>
+     <!-- Making diff way too large, update separately later. e.g. to 6.0.0-rtm.21518.12 and 9.0.0-rc.2.24462.10 or via darc -->
+    <MicrosoftNETCoreILDAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILDAsmVersion>
+    <MicrosoftNETCoreILAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILAsmVersion>
     <MicrosoftNETTestSdkVersion>17.11.1</MicrosoftNETTestSdkVersion>
     <NewtonsoftJsonVersion>13.0.3</NewtonsoftJsonVersion>
     <RoslynToolsSignToolVersion>1.0.0-beta2-dev3</RoslynToolsSignToolVersion>

From 3bcfbf1d95472256b87716043c5dab8acedb2f75 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Fri, 3 Oct 2025 11:35:05 +0200
Subject: [PATCH 025/102] VSSDK Build Tools

---
 eng/Versions.props | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index ecbac8b3409..c47b55946c3 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -161,7 +161,7 @@
     <MicrosoftVisualStudioProjectSystemManagedVersion>2.3.6152103</MicrosoftVisualStudioProjectSystemManagedVersion>
 
     <!-- Misc. Visual Studio packages -->
-    <MicrosoftVSSDKBuildToolsVersion>17.13.1100801-preview</MicrosoftVSSDKBuildToolsVersion>
+    <MicrosoftVSSDKBuildToolsVersion>17.14.4-preview1</MicrosoftVSSDKBuildToolsVersion>
     <MicrosoftVisualStudioRpcContractsVersion>17.15.25-pre</MicrosoftVisualStudioRpcContractsVersion>
     <MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>17.0.0</MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>
     <MicrosoftVisualStudioValidationVersion>17.8.8</MicrosoftVisualStudioValidationVersion>

From 8a42a70ddaf4e52ac90a14d9a89ff95244e2ab13 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Fri, 3 Oct 2025 11:56:28 +0200
Subject: [PATCH 026/102] adapt roslyn api change

---
 .../src/FSharp.Editor/LanguageService/LanguageService.fs     | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
index 6c84d3fb810..9300b18c9a4 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
+++ b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
@@ -26,6 +26,7 @@ open Microsoft.CodeAnalysis.Host.Mef
 open Microsoft.VisualStudio.FSharp.Editor.Telemetry
 open CancellableTasks
 open FSharp.Compiler.Text
+open Microsoft.VisualStudio.Editor
 
 #nowarn "9" // NativePtr.toNativeInt
 #nowarn "57" // Experimental stuff
@@ -461,11 +462,11 @@ type internal FSharpLanguageService(package: FSharpPackage) =
         let outliningManagerService =
             this.Package.ComponentModel.GetService<IOutliningManagerService>()
 
-        let wpfTextView = this.EditorAdaptersFactoryService.GetWpfTextView(textView)
+        let wpfTextView = this.Package.ComponentModel.GetService<IVsEditorAdaptersFactoryService>().GetWpfTextView(textView)
         let outliningManager = outliningManagerService.GetOutliningManager(wpfTextView)
 
         if not (isNull outliningManager) then
-            let settings = this.Workspace.Services.GetService<EditorOptions>()
+            let settings = this.Workspace.Value.Services.GetService<EditorOptions>()
             outliningManager.Enabled <- settings.Advanced.IsOutliningEnabled
 
 [<Composition.Shared>]

From 5cbbb4a44af5f51f7bf40361ecad82c25f898271 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Fri, 3 Oct 2025 11:58:30 +0200
Subject: [PATCH 027/102] Update LanguageService.fs

---
 .../src/FSharp.Editor/LanguageService/LanguageService.fs      | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
index 9300b18c9a4..cfb90fc9c37 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
+++ b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
@@ -462,7 +462,9 @@ type internal FSharpLanguageService(package: FSharpPackage) =
         let outliningManagerService =
             this.Package.ComponentModel.GetService<IOutliningManagerService>()
 
-        let wpfTextView = this.Package.ComponentModel.GetService<IVsEditorAdaptersFactoryService>().GetWpfTextView(textView)
+        let wpfTextView =
+            this.Package.ComponentModel.GetService<IVsEditorAdaptersFactoryService>().GetWpfTextView(textView)
+
         let outliningManager = outliningManagerService.GetOutliningManager(wpfTextView)
 
         if not (isNull outliningManager) then

From 5475d476263918770c6f81cff6677f5c6b55b49e Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Fri, 3 Oct 2025 14:36:25 +0200
Subject: [PATCH 028/102] Fix CI crashes

---
 eng/Versions.props                                           | 4 ++--
 vsintegration/Vsix/VisualFSharpFull/VisualFSharpDebug.csproj | 4 +++-
 vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj  | 4 +++-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index c47b55946c3..b4dfb6e9217 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -96,9 +96,9 @@
     <!-- Versions for package groups -->
     <VisualStudioEditorPackagesVersion>18.0.332-preview</VisualStudioEditorPackagesVersion>
     <MicrosoftVisualStudioShellPackagesVersion>18.0.2101-preview.1</MicrosoftVisualStudioShellPackagesVersion>
-    <VisualStudioProjectSystemPackagesVersion>17.14.79</VisualStudioProjectSystemPackagesVersion>
+    <VisualStudioProjectSystemPackagesVersion>18.0.1237-pre</VisualStudioProjectSystemPackagesVersion>
     <VisualStudioShellProjectsPackages>18.0.2077-preview.1</VisualStudioShellProjectsPackages>
-    <MicrosoftVisualStudioThreadingPackagesVersion>17.15.20-alpha</MicrosoftVisualStudioThreadingPackagesVersion>
+    <MicrosoftVisualStudioThreadingPackagesVersion>18.0.5</MicrosoftVisualStudioThreadingPackagesVersion>
   
     <!-- Roslyn packages -->
     <MicrosoftCodeAnalysisFeaturesVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisFeaturesVersion>
diff --git a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpDebug.csproj b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpDebug.csproj
index 96fd6dc836d..5a6671c4d24 100644
--- a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpDebug.csproj
+++ b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpDebug.csproj
@@ -8,7 +8,9 @@
     <PackageTargetFallback>netcoreapp1.0</PackageTargetFallback>
     <IsShipping>true</IsShipping>
     <DependencyTargetFramework>net472</DependencyTargetFramework>
-    <DeployExtension>true</DeployExtension>
+    <DeployExtension>true</DeployExtension>    
+    <UseSharedCompilation>false</UseSharedCompilation>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
   </PropertyGroup>
 
   <Import Project="VisualFSharp.Core.targets" />
diff --git a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj
index 10c18b8530e..49f1cc33ab6 100644
--- a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj
+++ b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj
@@ -9,7 +9,9 @@
     <IsShipping>true</IsShipping>
     <DependencyTargetFramework>net472</DependencyTargetFramework>
     <!-- locally you should deploy VisualFSharpDebug.vsix instead -->
-    <DeployExtension>false</DeployExtension>
+    <DeployExtension>false</DeployExtension>    
+    <UseSharedCompilation>false</UseSharedCompilation>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
   </PropertyGroup>
 
   <Import Project="VisualFSharp.Core.targets" />

From 5ff7a7d979adffaf323ad95020e5dc10001e96b3 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Mon, 6 Oct 2025 14:58:11 +0200
Subject: [PATCH 029/102] drastically reduce direct package references for
 vsintegration to avoid nuget conflicts

---
 eng/Versions.props                            |  2 +-
 .../src/FSharp.Editor/FSharp.Editor.fsproj    | 28 ++++---------------
 .../FSharp.LanguageService.Base.csproj        |  6 ----
 .../FSharp.LanguageService.fsproj             |  9 +-----
 .../ProjectSitesAndFiles.fs                   |  1 -
 .../FSharp.ProjectSystem.Base.csproj          | 10 -------
 .../FSharp.ProjectSystem.FSharp.fsproj        | 11 +-------
 .../FSharp.ProjectSystem.PropertyPages.vbproj |  5 ----
 .../src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj    | 10 +------
 .../FSharp.Editor.Tests.fsproj                |  3 --
 .../tests/Salsa/VisualFSharp.Salsa.fsproj     | 12 +-------
 .../UnitTests/VisualFSharp.UnitTests.fsproj   | 22 ---------------
 12 files changed, 10 insertions(+), 109 deletions(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index b4dfb6e9217..a752ff7614b 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -87,7 +87,7 @@
     <SystemMemoryVersion>4.6.0</SystemMemoryVersion>
     <SystemRuntimeCompilerServicesUnsafeVersion>6.1.0</SystemRuntimeCompilerServicesUnsafeVersion>
   </PropertyGroup>
-  <PropertyGroup>
+  <PropertyGroup Name="PackageVersions">
     <!-- System.* packages -->
     <!-- If a System.* package is stuck on version 4.3.x, targets .NET Standard 1.x and hasn't been
     updated in years, you most likely DON'T need it, please exercise caution when adding it to the list. -->
diff --git a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
index 2c196ea0421..4227261091a 100644
--- a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
+++ b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
@@ -170,36 +170,18 @@
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xaml" />
     <Reference Include="WindowsBase" />
+    <Reference Include="System.ComponentModel.Composition" />
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.CodeAnalysis.Features" Version="$(MicrosoftCodeAnalysisFeaturesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
-    <PackageReference Include="Microsoft.Internal.VisualStudio.Interop" Version="$(MicrosoftInternalVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->    
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Wpf" Version="$(MicrosoftCodeAnalysisEditorFeaturesWpfVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" NoWarn="NU1608" />
+    <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Language" Version="$(MicrosoftVisualStudioLanguageVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Language.Intellisense" Version="$(MicrosoftVisualStudioLanguageIntellisenseVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Language.StandardClassification" Version="$(MicrosoftVisualStudioLanguageStandardClassificationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.LanguageServices" Version="$(MicrosoftVisualStudioLanguageServicesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />   
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem" Version="$(MicrosoftVisualStudioProjectSystemVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem.Managed" Version="$(MicrosoftVisualStudioProjectSystemManagedVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.UI" Version="$(MicrosoftVisualStudioTextUIVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.UI.Wpf" Version="$(MicrosoftVisualStudioTextUIWpfVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.2" Condition="'$(Configuration)' == 'Debug'" />
-    <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="StreamJsonRpc" Version="$(StreamJsonRpcVersion)" />
-    <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
+    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.2" Condition="'$(Configuration)' == 'Debug'" />    
   </ItemGroup>
 
   <ItemGroup>
diff --git a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
index 5d8e9584365..b0baabd173d 100644
--- a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
+++ b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
@@ -46,16 +46,10 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
-    <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Language.StandardClassification" Version="$(MicrosoftVisualStudioLanguageStandardClassificationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
index 84ed47c3935..75bfc3dc401 100644
--- a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
+++ b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
@@ -57,23 +57,16 @@
 
   <ItemGroup>
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
-    <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+   
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Language.Intellisense" Version="$(MicrosoftVisualStudioLanguageIntellisenseVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Language.StandardClassification" Version="$(MicrosoftVisualStudioLanguageStandardClassificationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.LanguageServices" Version="$(MicrosoftVisualStudioLanguageServicesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.10.0" Version="$(MicrosoftVisualStudioShellImmutable100Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.11.0" Version="$(MicrosoftVisualStudioShellImmutable110Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="StreamJsonRpc" Version="$(StreamJsonRpcVersion)" />
-    <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs b/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs
index b2a437dc99f..39fe59fc933 100644
--- a/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs
+++ b/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs
@@ -34,7 +34,6 @@ module internal rec Microsoft.VisualStudio.FSharp.LanguageService.SiteProvider
 
 open System
 open System.Collections.Concurrent
-open System.ComponentModel.Composition
 open System.IO
 open System.Diagnostics
 open Microsoft.VisualStudio
diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj b/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
index 8efa6b01317..cf4724a7f62 100644
--- a/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
+++ b/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
@@ -40,22 +40,12 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.VisualFSharp.Microsoft.VisualStudio.Shell.UI.Internal" Version="$(MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.CoreUtility" Version="$(MicrosoftVisualStudioCoreUtilityVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <!-- <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.10.0" Version="$(MicrosoftVisualStudioShellImmutable100Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.11.0" Version="$(MicrosoftVisualStudioShellImmutable110Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.UI.WPF" Version="$(MicrosoftVisualStudioTextUIWPFVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.UI" Version="$(MicrosoftVisualStudioTextUIVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
-    <PackageReference Include="StreamJsonRpc" Version="$(StreamJsonRpcVersion)" />
     <PackageReference Update="Microsoft.VSSDK.BuildTools" Version="$(MicrosoftVSSDKBuildToolsVersion)" />
   </ItemGroup>
 
diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj b/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
index 643e04d2368..66400ffe744 100644
--- a/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
+++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
@@ -106,21 +106,12 @@
   <ItemGroup>
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <!-- <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
-    <PackageReference Include="Microsoft.VisualStudio.CoreUtility" Version="$(MicrosoftVisualStudioCoreUtilityVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ImageCatalog" Version="$(MicrosoftVisualStudioImageCatalogVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.10.0" Version="$(MicrosoftVisualStudioShellImmutable100Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.11.0" Version="$(MicrosoftVisualStudioShellImmutable110Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.15.0" Version="$(MicrosoftVisualStudioShellImmutable150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.Data" Version="$(MicrosoftVisualStudioTextDataVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.UI" Version="$(MicrosoftVisualStudioTextUIVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Text.UI.Wpf" Version="$(MicrosoftVisualStudioTextUIWpfVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
+    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" />
   </ItemGroup>
 
 </Project>
diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
index a2082802752..d7912c88fd8 100644
--- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
+++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
@@ -48,13 +48,8 @@
   <ItemGroup>
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.ManagedInterfaces" Version="$(MicrosoftVisualStudioManagedInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.11.0" Version="$(MicrosoftVisualStudioShellImmutable110Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
index a3c034b3478..c7432b4d5b7 100644
--- a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
+++ b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
@@ -19,7 +19,7 @@
   </ItemGroup>
 
   <ItemGroup>
-	<Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullnessShims.fs"/>
+	<Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullnessShims.fs" />
     <EmbeddedText Include="VFSIstrings.txt" />
     <Compile Include="AssemblyInfo.fs" />
     <Compile Include="FSharp.VS.FSI.Attributes.fs" />
@@ -57,18 +57,10 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="System.ComponentModel.Composition" Version="$(SystemComponentModelCompositionVersion)" />
-    <PackageReference Include="System.Composition" Version="$(SystemCompositionVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.RpcContracts" Version="$(MicrosoftVisualStudioRpcContractsVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Update="Microsoft.VSSDK.BuildTools" Version="$(MicrosoftVSSDKBuildToolsVersion)" />
     <Reference Include="System.ComponentModel.Composition" />
   </ItemGroup>
diff --git a/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj b/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
index c084fc6f06a..94a57d466e2 100644
--- a/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
+++ b/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
@@ -95,12 +95,9 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" />
     <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Platform.VSEditor" Version="$(MicrosoftVisualStudioPlatformVSEditorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
index 59aee46dad6..adec147feaf 100644
--- a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
+++ b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
@@ -16,7 +16,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullnessShims.fs"/>
+    <Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullnessShims.fs" />
     <EmbeddedText Include="$(FSharpSourcesRoot)\Compiler\Facilities\UtilsStrings.txt" />
     <Compile Include="$(FSharpSourcesRoot)\Compiler\Facilities\CompilerLocation.fs">
       <Link>CompilerLocation.fs</Link>
@@ -53,20 +53,10 @@
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" />
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.GraphModel" Version="$(MicrosoftVisualStudioGraphModelVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.ImageCatalog" Version="$(MicrosoftVisualStudioImageCatalogVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Platform.VSEditor" Version="$(MicrosoftVisualStudioPlatformVSEditorVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.Framework" Version="$(MicrosoftVisualStudioShellFrameworkVersion)" />
     <PackageReference Include="Microsoft.Internal.VisualStudio.Shell.Framework" Version="$(MicrosoftInternalVisualStudioShellFrameworkVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.Data" Version="$(MicrosoftVisualStudioTextDataVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.Internal" Version="$(MicrosoftVisualStudioTextInternalVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Utilities" Version="$(MicrosoftVisualStudioUtilitiesVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
     <PackageReference Include="XUnit" Version="$(XUnitVersion)" />
   </ItemGroup>
 
diff --git a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
index 2bd2d290517..c8a8bebb2c2 100644
--- a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
+++ b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
@@ -120,34 +120,12 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" />
     <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" />
-    <PackageReference Include="Microsoft.Internal.VisualStudio.Interop" Version="$(MicrosoftInternalVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.CoreUtility" Version="$(MicrosoftVisualStudioCoreUtilityVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Imaging" Version="$(MicrosoftVisualStudioImagingVersion)" />
     <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="contentFiles;build;analyzers;native" /> -->
-    <PackageReference Include="Microsoft.VisualStudio.Language.Intellisense" Version="$(MicrosoftVisualStudioLanguageIntellisenseVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Language.StandardClassification" Version="$(MicrosoftVisualStudioLanguageStandardClassificationVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Language" Version="$(MicrosoftVisualStudioLanguageVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.LanguageServices" Version="$(MicrosoftVisualStudioLanguageServicesVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Platform.VSEditor" Version="$(MicrosoftVisualStudioPlatformVSEditorVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectAggregator" Version="$(MicrosoftVisualStudioProjectAggregatorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem.Managed" Version="$(MicrosoftVisualStudioProjectSystemManagedVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem" Version="$(MicrosoftVisualStudioProjectSystemVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150Version)" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Shell.Framework" Version="$(MicrosoftVisualStudioShellFrameworkVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.10.0" Version="$(MicrosoftVisualStudioShellImmutable100Version)" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.Internal" Version="$(MicrosoftVisualStudioTextInternalVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Text.UI.Wpf" Version="$(MicrosoftVisualStudioTextUIWpfVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Utilities" Version="$(MicrosoftVisualStudioUtilitiesVersion)" />
-    <PackageReference Include="Microsoft.VisualStudio.Validation" Version="$(MicrosoftVisualStudioValidationVersion)" />
-    <PackageReference Include="StreamJsonRpc" Version="$(StreamJsonRpcVersion)" />
-    <PackageReference Include="Nerdbank.Streams" Version="$(NerdbankStreamsVersion)" />
   </ItemGroup>
 
 </Project>

From d533ddab3576f0e48fb7f7afe235e1a57e30a25f Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Mon, 6 Oct 2025 15:29:00 +0200
Subject: [PATCH 030/102] Remove unneeded versions

---
 eng/Versions.props | 34 +---------------------------------
 1 file changed, 1 insertion(+), 33 deletions(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index a752ff7614b..628190c1691 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -87,7 +87,7 @@
     <SystemMemoryVersion>4.6.0</SystemMemoryVersion>
     <SystemRuntimeCompilerServicesUnsafeVersion>6.1.0</SystemRuntimeCompilerServicesUnsafeVersion>
   </PropertyGroup>
-  <PropertyGroup Name="PackageVersions">
+  <PropertyGroup>
     <!-- System.* packages -->
     <!-- If a System.* package is stuck on version 4.3.x, targets .NET Standard 1.x and hasn't been
     updated in years, you most likely DON'T need it, please exercise caution when adding it to the list. -->
@@ -101,57 +101,38 @@
     <MicrosoftVisualStudioThreadingPackagesVersion>18.0.5</MicrosoftVisualStudioThreadingPackagesVersion>
   
     <!-- Roslyn packages -->
-    <MicrosoftCodeAnalysisFeaturesVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisFeaturesVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisEditorFeaturesVersion>
     <MicrosoftCodeAnalysisEditorFeaturesTextVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesWpfVersion>5.0.0-1.25377.2</MicrosoftCodeAnalysisEditorFeaturesWpfVersion> <!-- This was isolated before as 5.0.0-1.25275. --> 
     <MicrosoftCodeAnalysisExternalAccessFSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisExternalAccessFSharpVersion>
     <MicrosoftCodeAnalysisVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisVersion>
     <MicrosoftCodeAnalysisCSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisCSharpVersion>
     <MicrosoftVisualStudioLanguageServicesVersion>5.0.0-2.25480.7</MicrosoftVisualStudioLanguageServicesVersion>
     <MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.28</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
-    <MicrosoftCodeAnalysisCompilersVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisCompilersVersion>
     <!-- -->
     <!-- Visual Studio Shell packages -->
     <MicrosoftVisualStudioInteropVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioInteropVersion>
-    <MicrosoftInternalVisualStudioInteropVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftInternalVisualStudioInteropVersion>
     <MicrosoftVisualStudioImagingInterop140DesignTimeVersion>$(VisualStudioShellProjectsPackages)</MicrosoftVisualStudioImagingInterop140DesignTimeVersion>
-    <MicrosoftVisualStudioImageCatalogVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioImageCatalogVersion>
     <MicrosoftVisualStudioShellInteropVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioShellInteropVersion>
     <MicrosoftVisualStudioTextManagerInteropVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioTextManagerInteropVersion>
     <MicrosoftVisualStudioOLEInteropVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioOLEInteropVersion>
-    <MicrosoftVisualStudioShell150Version>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioShell150Version>
     <MicrosoftVisualStudioShellDesignVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioShellDesignVersion>
-    <MicrosoftVisualStudioShellFrameworkVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioShellFrameworkVersion>
     <MicrosoftInternalVisualStudioShellFrameworkVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftInternalVisualStudioShellFrameworkVersion>
     <MicrosoftVisualStudioPackageLanguageService150Version>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioPackageLanguageService150Version>
     <MicrosoftVisualStudioManagedInterfacesVersion>$(VisualStudioShellProjectsPackages)</MicrosoftVisualStudioManagedInterfacesVersion>
-    <MicrosoftVisualStudioProjectAggregatorVersion>$(VisualStudioShellProjectsPackages)</MicrosoftVisualStudioProjectAggregatorVersion>
-    <MicrosoftVisualStudioGraphModelVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioGraphModelVersion>
-    <MicrosoftVisualStudioImagingVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioImagingVersion>
     <MicrosoftVisualStudioDesignerInterfacesVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioDesignerInterfacesVersion>
-    <MicrosoftVisualStudioUtilitiesVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioUtilitiesVersion>
     <MicrosoftVisualStudioShellImmutable100Version>10.0.30319</MicrosoftVisualStudioShellImmutable100Version>
     <MicrosoftVisualStudioShellImmutable110Version>11.0.50727</MicrosoftVisualStudioShellImmutable110Version>
     <MicrosoftVisualStudioShellImmutable150Version>15.0.25123-Dev15Preview</MicrosoftVisualStudioShellImmutable150Version>
 
     <!-- -->
     <!-- Visual Studio Editor packages -->
-    <MicrosoftVisualStudioCoreUtilityVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioCoreUtilityVersion>
     <MicrosoftVisualStudioEditorVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioEditorVersion>
     <MicrosoftVisualStudioLanguageStandardClassificationVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioLanguageStandardClassificationVersion>
-    <MicrosoftVisualStudioLanguageVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioLanguageVersion>
     <MicrosoftVisualStudioLanguageIntellisenseVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioLanguageIntellisenseVersion>
     <MicrosoftVisualStudioPlatformVSEditorVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioPlatformVSEditorVersion>
-    <MicrosoftVisualStudioTextUIVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextUIVersion>
     <MicrosoftVisualStudioTextUIWpfVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextUIWpfVersion>
-    <MicrosoftVisualStudioTextDataVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextDataVersion>
-    <MicrosoftVisualStudioTextInternalVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioTextInternalVersion>
-    <MicrosoftVisualStudioComponentModelHostVersion>18.0.2551-preview.1</MicrosoftVisualStudioComponentModelHostVersion>
     <NuGetSolutionRestoreManagerInteropVersion>5.6.0</NuGetSolutionRestoreManagerInteropVersion>
     <MicrosoftVisualStudioExtensibilityTestingVersion>0.1.800-beta</MicrosoftVisualStudioExtensibilityTestingVersion>
     <MicrosoftVisualStudioExtensibilityTestingSourceGeneratorVersion>$(MicrosoftVisualStudioExtensibilityTestingVersion)</MicrosoftVisualStudioExtensibilityTestingSourceGeneratorVersion>
-    <MicrosoftVisualStudioExtensibilityTestingXunitVersion>$(MicrosoftVisualStudioExtensibilityTestingVersion)</MicrosoftVisualStudioExtensibilityTestingXunitVersion>
 
     <!-- Visual Studio Threading packages -->
     <MicrosoftVisualStudioThreadingVersion>$(MicrosoftVisualStudioThreadingPackagesVersion)</MicrosoftVisualStudioThreadingVersion>
@@ -162,14 +143,7 @@
 
     <!-- Misc. Visual Studio packages -->
     <MicrosoftVSSDKBuildToolsVersion>17.14.4-preview1</MicrosoftVSSDKBuildToolsVersion>
-    <MicrosoftVisualStudioRpcContractsVersion>17.15.25-pre</MicrosoftVisualStudioRpcContractsVersion>
     <MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>17.0.0</MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>
-    <MicrosoftVisualStudioValidationVersion>17.8.8</MicrosoftVisualStudioValidationVersion>
-    <VSSDKDebuggerVisualizersVersion>12.0.4</VSSDKDebuggerVisualizersVersion>
-    <VSSDKVSLangProjVersion>7.0.4</VSSDKVSLangProjVersion>
-    <VSSDKVSLangProj8Version>8.0.4</VSSDKVSLangProj8Version>
-    <VSSDKVSLangProj11Version>11.0.4</VSSDKVSLangProj11Version>
-    <VSSDKVSHelpVersion>7.0.4</VSSDKVSHelpVersion>
     <!-- -->
     <!-- setup packages -->
     <MicroBuildCoreVersion>0.2.0</MicroBuildCoreVersion>
@@ -179,22 +153,16 @@
     <!-- other packages -->
     <BenchmarkDotNetVersion>0.13.10</BenchmarkDotNetVersion>
     <FsCheckVersion>2.16.5</FsCheckVersion>
-    <FSharpDataTypeProvidersVersion>4.3.0.0</FSharpDataTypeProvidersVersion>
     <MicrosoftCompositionVersion>1.0.31</MicrosoftCompositionVersion>
     <MicrosoftNetCompilersVersion>4.3.0-1.22220.8</MicrosoftNetCompilersVersion>
-    <MicrosoftNETCoreAppRefVersion>3.1.0</MicrosoftNETCoreAppRefVersion>
      <!-- Making diff way too large, update separately later. e.g. to 6.0.0-rtm.21518.12 and 9.0.0-rc.2.24462.10 or via darc -->
     <MicrosoftNETCoreILDAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILDAsmVersion>
     <MicrosoftNETCoreILAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILAsmVersion>
     <MicrosoftNETTestSdkVersion>17.11.1</MicrosoftNETTestSdkVersion>
     <NewtonsoftJsonVersion>13.0.3</NewtonsoftJsonVersion>
-    <RoslynToolsSignToolVersion>1.0.0-beta2-dev3</RoslynToolsSignToolVersion>
-    <StreamJsonRpcVersion>2.23.39-alpha</StreamJsonRpcVersion>
-    <NerdbankStreamsVersion>2.12.87</NerdbankStreamsVersion>
     <XUnitVersion>2.9.0</XUnitVersion>
     <XUnitRunnerVersion>2.8.2</XUnitRunnerVersion>
     <XunitXmlTestLoggerVersion>3.1.17</XunitXmlTestLoggerVersion>
-    <HumanizerCoreVersion>2.2.0</HumanizerCoreVersion>
     <!-- -->
   </PropertyGroup>
 </Project>

From 4f2102ffd1d1d09a7252a708b28b975689535fb3 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:52:12 +0200
Subject: [PATCH 031/102] Apply suggestion from @T-Gro

---
 eng/Versions.props | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eng/Versions.props b/eng/Versions.props
index 628190c1691..e694e4f4998 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -142,7 +142,7 @@
     <MicrosoftVisualStudioProjectSystemManagedVersion>2.3.6152103</MicrosoftVisualStudioProjectSystemManagedVersion>
 
     <!-- Misc. Visual Studio packages -->
-    <MicrosoftVSSDKBuildToolsVersion>17.14.4-preview1</MicrosoftVSSDKBuildToolsVersion>
+    <MicrosoftVSSDKBuildToolsVersion>17.14.2120</MicrosoftVSSDKBuildToolsVersion>
     <MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>17.0.0</MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>
     <!-- -->
     <!-- setup packages -->

From 6f5fd540ae4409dea708dcb888cf560ec5f63805 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:53:31 +0200
Subject: [PATCH 032/102] Apply suggestion from @T-Gro

---
 vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
index 4227261091a..26621fac1e6 100644
--- a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
+++ b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
@@ -174,7 +174,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->    
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From 0aa473eb4ff05b5e6ae11159ce8015e06a972b21 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:53:42 +0200
Subject: [PATCH 033/102] Apply suggestion from @T-Gro

---
 .../FSharp.LanguageService.Base.csproj                           | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
index b0baabd173d..fbf420a0741 100644
--- a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
+++ b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
@@ -46,7 +46,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Language.StandardClassification" Version="$(MicrosoftVisualStudioLanguageStandardClassificationVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From be3fd0595731c66e6985d74662e9f977876ffe78 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:53:50 +0200
Subject: [PATCH 034/102] Apply suggestion from @T-Gro

---
 .../src/FSharp.LanguageService/FSharp.LanguageService.fsproj     | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
index 75bfc3dc401..ac643efc71b 100644
--- a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
+++ b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
@@ -56,7 +56,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
    
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From 80fcad92537faa3b5e5a09de4df66f56e30768bb Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:53:58 +0200
Subject: [PATCH 035/102] Apply suggestion from @T-Gro

---
 .../src/FSharp.LanguageService/FSharp.LanguageService.fsproj     | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
index ac643efc71b..0d948cc586b 100644
--- a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
+++ b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
@@ -57,7 +57,6 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-   
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Language.Intellisense" Version="$(MicrosoftVisualStudioLanguageIntellisenseVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From 5a3e0201d9c2dda32407ce0e078b4e35b51c40b7 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:54:07 +0200
Subject: [PATCH 036/102] Apply suggestion from @T-Gro

---
 .../FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj  | 2 --
 1 file changed, 2 deletions(-)

diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj b/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
index cf4724a7f62..be6eb82d080 100644
--- a/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
+++ b/vsintegration/src/FSharp.ProjectSystem.Base/FSharp.ProjectSystem.Base.csproj
@@ -41,8 +41,6 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.VisualFSharp.Microsoft.VisualStudio.Shell.UI.Internal" Version="$(MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.10.0" Version="$(MicrosoftVisualStudioShellImmutable100Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.11.0" Version="$(MicrosoftVisualStudioShellImmutable110Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From 0ddd987b375f358f904c0b49e1952f1f2d0485da Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:54:19 +0200
Subject: [PATCH 037/102] Apply suggestion from @T-Gro

---
 .../FSharp.ProjectSystem.FSharp.fsproj                          | 2 --
 1 file changed, 2 deletions(-)

diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj b/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
index 66400ffe744..da59e918292 100644
--- a/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
+++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/FSharp.ProjectSystem.FSharp.fsproj
@@ -104,8 +104,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime" Version="$(MicrosoftVisualStudioImagingInterop140DesignTimeVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.10.0" Version="$(MicrosoftVisualStudioShellImmutable100Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.15.0" Version="$(MicrosoftVisualStudioShellImmutable150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From 56cc10cf427f83029b0cc820baabe28ad786c6b4 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:54:29 +0200
Subject: [PATCH 038/102] Apply suggestion from @T-Gro

---
 .../FSharp.ProjectSystem.PropertyPages.vbproj                    | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
index d7912c88fd8..e964555f55f 100644
--- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
+++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.ProjectSystem.PropertyPages.vbproj
@@ -46,7 +46,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.ManagedInterfaces" Version="$(MicrosoftVisualStudioManagedInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Immutable.11.0" Version="$(MicrosoftVisualStudioShellImmutable110Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From ecf62b7dd3aec3d74d1364369be911514d7f9b94 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:54:39 +0200
Subject: [PATCH 039/102] Apply suggestion from @T-Gro

---
 vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
index c8a8bebb2c2..a1ca5b1fbf0 100644
--- a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
+++ b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
@@ -121,7 +121,6 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" />
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Platform.VSEditor" Version="$(MicrosoftVisualStudioPlatformVSEditorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem.Managed" Version="$(MicrosoftVisualStudioProjectSystemManagedVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem" Version="$(MicrosoftVisualStudioProjectSystemVersion)" />

From 127fc9a05d90cd4c4be628d7a3284438b73d5ae9 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:54:52 +0200
Subject: [PATCH 040/102] Apply suggestion from @T-Gro

---
 vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
index adec147feaf..6396eada6a9 100644
--- a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
+++ b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
@@ -51,7 +51,6 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" />
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Platform.VSEditor" Version="$(MicrosoftVisualStudioPlatformVSEditorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" />

From d0dde7e3a1fdf9fd554a394900ca4198ca6029f2 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 15:55:10 +0200
Subject: [PATCH 041/102] Apply suggestion from @T-Gro

---
 vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj | 1 -
 1 file changed, 1 deletion(-)

diff --git a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
index c7432b4d5b7..2478700de2d 100644
--- a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
+++ b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
@@ -57,7 +57,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <!-- <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> -->
     <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />

From 6eb6275d834ece5163a5c7aba7e86e8b996f2fa5 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 20:21:59 +0200
Subject: [PATCH 042/102] Modify System.Collections.Immutable reference

Updated PackageReference for System.Collections.Immutable to exclude all assets.
---
 tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index 484f8acfbb0..382361ab94c 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -92,8 +92,10 @@
  <NoWarn>$(NoWarn);NU1510</NoWarn> <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path. Also, local NoWarn does not help - This is just me trying to enforce it -->
 </PropertyGroup>
   <ItemGroup>
-    <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path -->
-    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true" NoWarn="NU1510" />
+    <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path .
+     TEST IF WE CAN ELIMINATE THIS DIRECT REFERENCE
+    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true" ExcludeAssets="all" /> --> 
+
     <PackageReference Include="Microsoft.Net.Compilers" Version="$(MicrosoftNetCompilersVersion)" />
     <PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="$(MicrosoftDiaSymReaderPortablePdbVersion)">
       <PrivateAssets>all</PrivateAssets>

From 645747ab3b0f4aa73cbf3225d4091d17cf9b5cd2 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 20:33:17 +0200
Subject: [PATCH 043/102] Apply suggestion from @T-Gro

---
 tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index 382361ab94c..60f64573e0f 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -93,8 +93,8 @@
 </PropertyGroup>
   <ItemGroup>
     <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path .
-     TEST IF WE CAN ELIMINATE THIS DIRECT REFERENCE
-    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true" ExcludeAssets="all" /> --> 
+     TEST IF WE CAN ELIMINATE THIS DIRECT REFERENCE -->
+    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true" ExcludeAssets="all" />  
 
     <PackageReference Include="Microsoft.Net.Compilers" Version="$(MicrosoftNetCompilersVersion)" />
     <PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="$(MicrosoftDiaSymReaderPortablePdbVersion)">

From ca1acf7edc63affabf3714b019d98d17aec22110 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Mon, 6 Oct 2025 20:59:11 +0200
Subject: [PATCH 044/102] Apply suggestion from @T-Gro

---
 tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index 60f64573e0f..4e596ef9cc1 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -92,9 +92,7 @@
  <NoWarn>$(NoWarn);NU1510</NoWarn> <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path. Also, local NoWarn does not help - This is just me trying to enforce it -->
 </PropertyGroup>
   <ItemGroup>
-    <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path .
-     TEST IF WE CAN ELIMINATE THIS DIRECT REFERENCE -->
-    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true" ExcludeAssets="all" />  
+    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true"  />  
 
     <PackageReference Include="Microsoft.Net.Compilers" Version="$(MicrosoftNetCompilersVersion)" />
     <PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="$(MicrosoftDiaSymReaderPortablePdbVersion)">

From 477f0579c2b1a5f325ac951dab6e8d3638cd2285 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Mon, 6 Oct 2025 21:53:36 +0200
Subject: [PATCH 045/102] Update FSharp.Test.Utilities.fsproj

---
 tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index 4e596ef9cc1..c58b4ecdae0 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -92,8 +92,7 @@
  <NoWarn>$(NoWarn);NU1510</NoWarn> <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path. Also, local NoWarn does not help - This is just me trying to enforce it -->
 </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true"  />  
-
+    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true"  />
     <PackageReference Include="Microsoft.Net.Compilers" Version="$(MicrosoftNetCompilersVersion)" />
     <PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="$(MicrosoftDiaSymReaderPortablePdbVersion)">
       <PrivateAssets>all</PrivateAssets>
@@ -102,7 +101,6 @@
     <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(MicrosoftCodeAnalysisVersion)" />
     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
     <PackageReference Include="Microsoft.CodeAnalysis.Test.Resources.Proprietary" Version="$(MicrosoftCodeAnalysisTestResourcesProprietaryVersion)" />
-    <PackageReference Include="Microsoft.NETCore.App.Ref" Version="6.0.0" IncludeAssets="none" PrivateAssets="all" GeneratePathProperty="true" />
     <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.2" />
     <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
   </ItemGroup>

From ccaf4397038888084d597aeccff6f87269e58085 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Tue, 7 Oct 2025 10:44:27 +0200
Subject: [PATCH 046/102] showImmutableVersion

---
 tests/fsharp/Compiler/Language/OptionalInteropTests.fs | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/fsharp/Compiler/Language/OptionalInteropTests.fs b/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
index 17f22bbe378..65d4f9a0a95 100644
--- a/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
+++ b/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
@@ -11,10 +11,17 @@ open Microsoft.CodeAnalysis
 
 module OptionalInteropTests =
 
+    open System.Reflection
+
+    let showImmutableVersion () =
+        let asm = typeof<System.Collections.Immutable.ImmutableArray>.Assembly
+        printfn "Loaded System.Collections.Immutable version: %s" (asm.GetName().Version.ToString())
+
     [<Theory>]
     [<InlineData("5.0")>]
     [<InlineData("preview")>]
     let ``C# method with an optional parameter and called with an option type should compile`` langVersion =
+        showImmutableVersion()
         let csSrc =
             """
 using Microsoft.FSharp.Core;

From a9e3ec73b649ca0c308de6149b63216c1aa708f9 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Tue, 7 Oct 2025 14:16:00 +0200
Subject: [PATCH 047/102] what is wrong with
 System.Collections.Immutable.ImmutableArray.Create

---
 tests/fsharp/Compiler/Language/OptionalInteropTests.fs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/fsharp/Compiler/Language/OptionalInteropTests.fs b/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
index 65d4f9a0a95..6d2c62c28aa 100644
--- a/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
+++ b/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
@@ -14,6 +14,8 @@ module OptionalInteropTests =
     open System.Reflection
 
     let showImmutableVersion () =
+        let x = System.Collections.Immutable.ImmutableArray.Create<int>(System.ReadOnlySpan.op_Implicit([|1;2;3|]))
+        printfn "Created ImmutableArray with length: %d ;; %A" x.Length x
         let asm = typeof<System.Collections.Immutable.ImmutableArray>.Assembly
         printfn "Loaded System.Collections.Immutable version: %s" (asm.GetName().Version.ToString())
 

From fa593f3aacb44d6a24d47ab58007048f7e963e7c Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 9 Oct 2025 12:40:46 +0200
Subject: [PATCH 048/102] Reduce duplicate test deps, downgrade roslyn used for
 testing (keep high one for vsintegration)

---
 FSharp.sln                                    | 11 +++++--
 eng/Versions.props                            |  6 ++--
 .../FSharp.Test.Utilities.fsproj              | 29 ++++++++++++-------
 .../Compiler/Language/OptionalInteropTests.fs | 10 +------
 tests/fsharp/FSharpSuite.Tests.fsproj         | 22 ++------------
 5 files changed, 34 insertions(+), 44 deletions(-)

diff --git a/FSharp.sln b/FSharp.sln
index 094d4302e5c..83933b62da3 100644
--- a/FSharp.sln
+++ b/FSharp.sln
@@ -1,7 +1,7 @@
 ﻿
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.1.32113.165
+# Visual Studio Version 18
+VisualStudioVersion = 18.0.11104.47 d18.0
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core", "src\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}"
 EndProject
@@ -166,6 +166,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".VisualStudio", ".VisualStu
 		docs\release-notes\.VisualStudio\17.9.md = docs\release-notes\.VisualStudio\17.9.md
 	EndProjectSection
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "eng", "eng", "{79E058E4-79E9-4178-AFA4-A87C45373379}"
+	ProjectSection(SolutionItems) = preProject
+		eng\Version.Details.props = eng\Version.Details.props
+		eng\Version.Details.xml = eng\Version.Details.xml
+		eng\Versions.props = eng\Versions.props
+	EndProjectSection
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
diff --git a/eng/Versions.props b/eng/Versions.props
index e694e4f4998..1b84f68b3cd 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -107,6 +107,8 @@
     <MicrosoftCodeAnalysisCSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisCSharpVersion>
     <MicrosoftVisualStudioLanguageServicesVersion>5.0.0-2.25480.7</MicrosoftVisualStudioLanguageServicesVersion>
     <MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.28</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
+	<!-- Roslyn for when we need to compile C# in tests. .dll hell caused by vstest makes newer version fail at runtime -->
+	<RoslynForTestingButNotForVSLayer>4.14.0</RoslynForTestingButNotForVSLayer>
     <!-- -->
     <!-- Visual Studio Shell packages -->
     <MicrosoftVisualStudioInteropVersion>$(MicrosoftVisualStudioShellPackagesVersion)</MicrosoftVisualStudioInteropVersion>
@@ -158,10 +160,10 @@
      <!-- Making diff way too large, update separately later. e.g. to 6.0.0-rtm.21518.12 and 9.0.0-rc.2.24462.10 or via darc -->
     <MicrosoftNETCoreILDAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILDAsmVersion>
     <MicrosoftNETCoreILAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILAsmVersion>
-    <MicrosoftNETTestSdkVersion>17.11.1</MicrosoftNETTestSdkVersion>
+    <MicrosoftNETTestSdkVersion>17.14.1</MicrosoftNETTestSdkVersion>
     <NewtonsoftJsonVersion>13.0.3</NewtonsoftJsonVersion>
     <XUnitVersion>2.9.0</XUnitVersion>
-    <XUnitRunnerVersion>2.8.2</XUnitRunnerVersion>
+    <XUnitRunnerVersion>3.1.4</XUnitRunnerVersion>
     <XunitXmlTestLoggerVersion>3.1.17</XunitXmlTestLoggerVersion>
     <!-- -->
   </PropertyGroup>
diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index c58b4ecdae0..a05373966a7 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -69,8 +69,22 @@
 
   <!-- Runtime dependencies. Beware. -->
   <ItemGroup>
-    <PackageReference Include="Microsoft.NETCore.ILDAsm" Version="$(MicrosoftNETCoreILDAsmVersion)" />
-    <PackageReference Include="Microsoft.NETCore.ILAsm" Version="$(MicrosoftNETCoreILAsmVersion)" />
+	<PackageReference Include="Microsoft.NETCore.ILDAsm" Version="$(MicrosoftNETCoreILDAsmVersion)">
+		<IncludeAssets>runtime; native</IncludeAssets>
+		<PrivateAssets>all</PrivateAssets>
+	</PackageReference>
+	<PackageReference Include="Microsoft.NETCore.ILAsm" Version="$(MicrosoftNETCoreILAsmVersion)">
+		<IncludeAssets>runtime; native</IncludeAssets>
+		<PrivateAssets>all</PrivateAssets>
+	</PackageReference>
+	<PackageReference Include="Microsoft.Net.Compilers" Version="$(MicrosoftNetCompilersVersion)">
+		<IncludeAssets>runtime; native</IncludeAssets>
+		<PrivateAssets>all</PrivateAssets>
+	</PackageReference>
+	<PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="$(MicrosoftDiaSymReaderPortablePdbVersion)">
+		<PrivateAssets>all</PrivateAssets>
+		<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+	</PackageReference>
   </ItemGroup>
 
   <ItemGroup>
@@ -83,8 +97,6 @@
   </ItemGroup>
 
   <ItemGroup Condition="'$(TargetFramework)' != '$(FSharpNetCoreProductTargetFramework)'">
-    <PackageReference Include="System.Memory" Version="$(SystemMemoryVersion)" />
-    <PackageReference Include="System.Buffers" Version="$(SystemBuffersVersion)" />
     <PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />
     <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="$(SystemDiagnosticsDiagnosticSourceVersion)" />
   </ItemGroup>
@@ -93,13 +105,8 @@
 </PropertyGroup>
   <ItemGroup>
     <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true"  />
-    <PackageReference Include="Microsoft.Net.Compilers" Version="$(MicrosoftNetCompilersVersion)" />
-    <PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="$(MicrosoftDiaSymReaderPortablePdbVersion)">
-      <PrivateAssets>all</PrivateAssets>
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-    </PackageReference>
-    <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(MicrosoftCodeAnalysisVersion)" />
-    <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
+    <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(RoslynForTestingButNotForVSLayer)" />
+    <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(RoslynForTestingButNotForVSLayer)" />
     <PackageReference Include="Microsoft.CodeAnalysis.Test.Resources.Proprietary" Version="$(MicrosoftCodeAnalysisTestResourcesProprietaryVersion)" />
     <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.2" />
     <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
diff --git a/tests/fsharp/Compiler/Language/OptionalInteropTests.fs b/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
index 6d2c62c28aa..868d46de779 100644
--- a/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
+++ b/tests/fsharp/Compiler/Language/OptionalInteropTests.fs
@@ -2,6 +2,7 @@
 
 namespace FSharp.Compiler.UnitTests
 
+open System
 open System.Collections.Immutable
 open Xunit
 open FSharp.Test
@@ -11,19 +12,10 @@ open Microsoft.CodeAnalysis
 
 module OptionalInteropTests =
 
-    open System.Reflection
-
-    let showImmutableVersion () =
-        let x = System.Collections.Immutable.ImmutableArray.Create<int>(System.ReadOnlySpan.op_Implicit([|1;2;3|]))
-        printfn "Created ImmutableArray with length: %d ;; %A" x.Length x
-        let asm = typeof<System.Collections.Immutable.ImmutableArray>.Assembly
-        printfn "Loaded System.Collections.Immutable version: %s" (asm.GetName().Version.ToString())
-
     [<Theory>]
     [<InlineData("5.0")>]
     [<InlineData("preview")>]
     let ``C# method with an optional parameter and called with an option type should compile`` langVersion =
-        showImmutableVersion()
         let csSrc =
             """
 using Microsoft.FSharp.Core;
diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj
index b4540de0b33..104ce17eddd 100644
--- a/tests/fsharp/FSharpSuite.Tests.fsproj
+++ b/tests/fsharp/FSharpSuite.Tests.fsproj
@@ -2,7 +2,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net472;$(FSharpNetCoreProductTargetFramework)</TargetFrameworks>
+	<TargetFrameworks>net472;$(FSharpNetCoreProductTargetFramework)</TargetFrameworks>
     <TargetFrameworks Condition="'$(OS)' == 'Unix' or '$(BUILDING_USING_DOTNET)' == 'true'">$(FSharpNetCoreProductTargetFramework)</TargetFrameworks>
     <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
     <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81</AssetTargetFallback>
@@ -112,27 +112,9 @@
     </ProjectReference>
     <ProjectReference Include="$(FSharpSourcesRoot)\fsc\fscAnyCpuProject\fscAnyCpu.fsproj" Condition="'$(TargetFramework)' == 'net472'" />
     <ProjectReference Include="$(FSharpSourcesRoot)\fsi\fsiAnyCpuProject\fsiAnyCpu.fsproj" Condition="'$(TargetFramework)' == 'net472'" />
-    <ProjectReference Include="$(FSharpSourcesRoot)\fsc\fscProject\fsc.fsproj" >
+    <ProjectReference Include="$(FSharpSourcesRoot)\fsc\fscProject\fsc.fsproj">
         <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
   </ItemGroup>
 
-  <!-- Runtime dependencies. Beware. -->
-  <ItemGroup>
-    <PackageReference Include="Microsoft.NETCore.ILDAsm" Version="$(MicrosoftNETCoreILDAsmVersion)" />
-    <PackageReference Include="Microsoft.NETCore.ILAsm" Version="$(MicrosoftNETCoreILAsmVersion)" />
-  </ItemGroup>
-
-  <ItemGroup Condition="'$(TargetFramework)' != '$(FSharpNetCoreProductTargetFramework)'">
-    <PackageReference Include="System.Memory" Version="$(SystemMemoryVersion)" />
-    <PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.Net.Compilers" Version="$(MicrosoftNetCompilersVersion)" />
-    <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(MicrosoftCodeAnalysisVersion)" />
-    <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
-    <PackageReference Include="Microsoft.CodeAnalysis.Test.Resources.Proprietary" Version="$(MicrosoftCodeAnalysisTestResourcesProprietaryVersion)" />
-  </ItemGroup>
-
 </Project>

From 94e6c73cd24c2060bf8a7a8f24cf6d016b4573ec Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 9 Oct 2025 13:20:21 +0200
Subject: [PATCH 049/102] Avoid xunit catastrophic failure caused by
 testcollection ID

---
 tests/FSharp.Test.Utilities/XunitHelpers.fs | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/FSharp.Test.Utilities/XunitHelpers.fs b/tests/FSharp.Test.Utilities/XunitHelpers.fs
index 7e907492e65..7c3e8f16a0c 100644
--- a/tests/FSharp.Test.Utilities/XunitHelpers.fs
+++ b/tests/FSharp.Test.Utilities/XunitHelpers.fs
@@ -77,13 +77,21 @@ module TestCaseCustomizations =
             let oldTestClass = oldTestMethod.TestClass
             let oldTestCollection = oldTestMethod.TestClass.TestCollection
 
+            // Create a DETERMINISTIC collection ID based on the test case's unique ID
+            // This ensures the same test case always gets the same collection ID
+            let collectionId = 
+                use sha = System.Security.Cryptography.SHA256.Create()
+                let bytes = System.Text.Encoding.UTF8.GetBytes(testCase.UniqueID)
+                let hash = sha.ComputeHash(bytes)
+                System.Guid(hash.[0..15])  // Take first 16 bytes for GUID
+
             // Create a new collection with a unique id for the test case.
             let newTestCollection =
                     new TestCollection(
                         oldTestCollection.TestAssembly,
                         oldTestCollection.CollectionDefinition,
                         oldTestCollection.DisplayName,
-                        Guid.NewGuid()
+                        collectionId
                     )
 
             let newTestClass = new TestClass(newTestCollection, oldTestClass.Class)

From 0d7bdff35536572c8e85c45fd1fe5aa276a90cb0 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 9 Oct 2025 13:27:05 +0200
Subject: [PATCH 050/102] IDE tests - enforce roslyn version matching editor
 components

---
 .../tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj     | 5 ++++-
 vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj  | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj b/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
index 94a57d466e2..1625be60b9a 100644
--- a/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
+++ b/vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
@@ -95,7 +95,10 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" />
+	<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
+	<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
+
+	<PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Platform.VSEditor" Version="$(MicrosoftVisualStudioPlatformVSEditorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" />
   </ItemGroup>
diff --git a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
index a1ca5b1fbf0..d5167d28820 100644
--- a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
+++ b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj
@@ -120,7 +120,10 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" />
+	<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
+	<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
+
+	<PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Platform.VSEditor" Version="$(MicrosoftVisualStudioPlatformVSEditorVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem.Managed" Version="$(MicrosoftVisualStudioProjectSystemManagedVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem" Version="$(MicrosoftVisualStudioProjectSystemVersion)" />

From 29abb60a1153ec0ca619f56c7f66754f6e9a8c5c Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 9 Oct 2025 13:33:26 +0200
Subject: [PATCH 051/102] remove obsolete prop

---
 tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj | 1 -
 tests/fsharp/FSharpSuite.Tests.fsproj                    | 1 -
 2 files changed, 2 deletions(-)

diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index a05373966a7..c1aebde1ed3 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -5,7 +5,6 @@
     <TargetFrameworks Condition="'$(OS)' == 'Unix' or '$(BUILDING_USING_DOTNET)' == 'true'">$(FSharpNetCoreProductTargetFramework)</TargetFrameworks>
     <RuntimeIdentifiers>win-x86;win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
     <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81</AssetTargetFallback>
-    <ReferenceVsAssemblies>true</ReferenceVsAssemblies>
     <OutputType>Library</OutputType>
     <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
     <UnitTestType>xunit</UnitTestType>
diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj
index 104ce17eddd..d1b45048e75 100644
--- a/tests/fsharp/FSharpSuite.Tests.fsproj
+++ b/tests/fsharp/FSharpSuite.Tests.fsproj
@@ -6,7 +6,6 @@
     <TargetFrameworks Condition="'$(OS)' == 'Unix' or '$(BUILDING_USING_DOTNET)' == 'true'">$(FSharpNetCoreProductTargetFramework)</TargetFrameworks>
     <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
     <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81</AssetTargetFallback>
-    <ReferenceVsAssemblies>true</ReferenceVsAssemblies>
     <OutputType>Library</OutputType>
     <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
     <Optimize>false</Optimize>

From 47eab8b507f763974d58e2ee31272ecda5bade53 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <tomasgrosup@microsoft.com>
Date: Thu, 9 Oct 2025 14:36:25 +0200
Subject: [PATCH 052/102] workaround xunit bug that treat displayname as if it
 were a unique ID

---
 tests/FSharp.Test.Utilities/XunitHelpers.fs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/FSharp.Test.Utilities/XunitHelpers.fs b/tests/FSharp.Test.Utilities/XunitHelpers.fs
index 7c3e8f16a0c..562ae04ce9b 100644
--- a/tests/FSharp.Test.Utilities/XunitHelpers.fs
+++ b/tests/FSharp.Test.Utilities/XunitHelpers.fs
@@ -85,12 +85,14 @@ module TestCaseCustomizations =
                 let hash = sha.ComputeHash(bytes)
                 System.Guid(hash.[0..15])  // Take first 16 bytes for GUID
 
+            let newDisplayName = $"{oldTestCollection.DisplayName}_{collectionId:N}"
+
             // Create a new collection with a unique id for the test case.
             let newTestCollection =
                     new TestCollection(
                         oldTestCollection.TestAssembly,
                         oldTestCollection.CollectionDefinition,
-                        oldTestCollection.DisplayName,
+                        newDisplayName,
                         collectionId
                     )
 

From db81a081913bbaa32e528305723c07d98fd598b8 Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Wed, 22 Oct 2025 14:47:14 +0200
Subject: [PATCH 053/102] Backport PR #19010: Type relations cache: Add a
 failsafe in case of infinite types (#19022)

---
 src/Compiler/Checking/TypeRelations.fs | 14 ++++++++++----
 src/Compiler/Utilities/TypeHashing.fs  | 15 +++++++++++++--
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/src/Compiler/Checking/TypeRelations.fs b/src/Compiler/Checking/TypeRelations.fs
index 27274f7ebda..cb71ea87de8 100644
--- a/src/Compiler/Checking/TypeRelations.fs
+++ b/src/Compiler/Checking/TypeRelations.fs
@@ -28,8 +28,12 @@ type CanCoerce =
 [<Struct; NoComparison>]
 type TTypeCacheKey =
     | TTypeCacheKey of TypeStructure * TypeStructure * CanCoerce
-    static member FromStrippedTypes(ty1, ty2, canCoerce) =
-        TTypeCacheKey(getTypeStructure ty1, getTypeStructure ty2, canCoerce)
+    static member TryGetFromStrippedTypes(ty1, ty2, canCoerce) =
+        let t1, t2 = getTypeStructure ty1, getTypeStructure ty2
+        if t1.IsPossiblyInfinite || t2.IsPossiblyInfinite then
+            ValueNone
+        else
+            ValueSome (TTypeCacheKey(t1, t2, canCoerce))
 
 let getTypeSubsumptionCache =
     let factory (g: TcGlobals) =
@@ -157,8 +161,10 @@ let rec TypeFeasiblySubsumesType ndeep (g: TcGlobals) (amap: ImportMap) m (ty1:
                     List.exists (TypeFeasiblySubsumesType (ndeep + 1) g amap m ty1 NoCoerce) interfaces
 
     if g.langVersion.SupportsFeature LanguageFeature.UseTypeSubsumptionCache then
-        let key = TTypeCacheKey.FromStrippedTypes(ty1, ty2, canCoerce)
-        (getTypeSubsumptionCache g).GetOrAdd(key, fun _ -> checkSubsumes ty1 ty2)
+        match TTypeCacheKey.TryGetFromStrippedTypes(ty1, ty2, canCoerce) with
+        | ValueSome key ->
+            (getTypeSubsumptionCache g).GetOrAdd(key, fun _ -> checkSubsumes ty1 ty2)
+        | _ -> checkSubsumes ty1 ty2
     else
         checkSubsumes ty1 ty2
 
diff --git a/src/Compiler/Utilities/TypeHashing.fs b/src/Compiler/Utilities/TypeHashing.fs
index af536a9d2b6..8e3752d5d33 100644
--- a/src/Compiler/Utilities/TypeHashing.fs
+++ b/src/Compiler/Utilities/TypeHashing.fs
@@ -401,7 +401,9 @@ module StructuralUtilities =
         | MeasureRational of int * int
         | NeverEqual of never: NeverEqual
 
-    type TypeStructure = TypeStructure of ImmutableArray<TypeToken>
+    type TypeStructure =
+        | TypeStructure of TypeToken[]
+        | PossiblyInfinite of never: NeverEqual
 
     let inline toNullnessToken (n: Nullness) =
         match n.TryEvaluate() with
@@ -464,6 +466,15 @@ module StructuralUtilities =
             | TType_measure m -> yield! accumulateMeasure m
         }
 
+    // If the sequence got too long, just drop it, we could be dealing with an infinite type.
+    let private toTypeStructure tokens =
+        let tokens = tokens |> Seq.truncate 256 |> Array.ofSeq
+
+        if tokens.Length = 256 then
+            PossiblyInfinite NeverEqual.Singleton
+        else
+            TypeStructure tokens
+
     /// Get the full structure of a type as a sequence of tokens, suitable for equality
     let getTypeStructure =
-        Extras.WeakMap.getOrCreate (fun ty -> accumulateTType ty |> ImmutableArray.ofSeq |> TypeStructure)
+        Extras.WeakMap.getOrCreate (fun ty -> accumulateTType ty |> toTypeStructure)

From 3759e167a71ae30a81b21203bc7f14b60d6aa4eb Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 6 Nov 2025 10:23:07 +0000
Subject: [PATCH 054/102] [release/dev18.0] Update dependencies from
 dotnet/roslyn (#19039)

* Update dependencies from https://github.com/dotnet/roslyn build 20251029.2
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.25480.7 -> To Version 5.0.0-2.25529.2

* Update dependencies from https://github.com/dotnet/roslyn build 20251029.7
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.25480.7 -> To Version 5.0.0-2.25529.7

* Update Versions.props

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Tomas Grosup <Tomas.Grosup@gmail.com>
---
 eng/Version.Details.props | 18 ++++++++++++++++++
 eng/Version.Details.xml   | 32 ++++++++++++++++----------------
 eng/Versions.props        |  7 +------
 3 files changed, 35 insertions(+), 22 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 2c5ef89f26d..1bf8dd77a78 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -17,6 +17,15 @@ This file should be imported by eng/Versions.props
     <SystemDiagnosticsDiagnosticSourcePackageVersion>9.0.0</SystemDiagnosticsDiagnosticSourcePackageVersion>
     <SystemReflectionMetadataPackageVersion>9.0.0</SystemReflectionMetadataPackageVersion>
     <SystemThreadingTasksDataflowPackageVersion>9.0.0</SystemThreadingTasksDataflowPackageVersion>
+    <!-- dotnet/roslyn dependencies -->
+    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisPackageVersion>
+    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisCompilersPackageVersion>
+    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisCSharpPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
+    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
+    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
+    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
     <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25513.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
@@ -40,6 +49,15 @@ This file should be imported by eng/Versions.props
     <SystemDiagnosticsDiagnosticSourceVersion>$(SystemDiagnosticsDiagnosticSourcePackageVersion)</SystemDiagnosticsDiagnosticSourceVersion>
     <SystemReflectionMetadataVersion>$(SystemReflectionMetadataPackageVersion)</SystemReflectionMetadataVersion>
     <SystemThreadingTasksDataflowVersion>$(SystemThreadingTasksDataflowPackageVersion)</SystemThreadingTasksDataflowVersion>
+    <!-- dotnet/roslyn dependencies -->
+    <MicrosoftCodeAnalysisVersion>$(MicrosoftCodeAnalysisPackageVersion)</MicrosoftCodeAnalysisVersion>
+    <MicrosoftCodeAnalysisCompilersVersion>$(MicrosoftCodeAnalysisCompilersPackageVersion)</MicrosoftCodeAnalysisCompilersVersion>
+    <MicrosoftCodeAnalysisCSharpVersion>$(MicrosoftCodeAnalysisCSharpPackageVersion)</MicrosoftCodeAnalysisCSharpVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesVersion>$(MicrosoftCodeAnalysisEditorFeaturesPackageVersion)</MicrosoftCodeAnalysisEditorFeaturesVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextVersion>$(MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion)</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
+    <MicrosoftCodeAnalysisExternalAccessFSharpVersion>$(MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion)</MicrosoftCodeAnalysisExternalAccessFSharpVersion>
+    <MicrosoftCodeAnalysisFeaturesVersion>$(MicrosoftCodeAnalysisFeaturesPackageVersion)</MicrosoftCodeAnalysisFeaturesVersion>
+    <MicrosoftVisualStudioLanguageServicesVersion>$(MicrosoftVisualStudioLanguageServicesPackageVersion)</MicrosoftVisualStudioLanguageServicesVersion>
     <!-- dotnet/arcade dependencies -->
     <MicrosoftDotNetArcadeSdkVersion>$(MicrosoftDotNetArcadeSdkPackageVersion)</MicrosoftDotNetArcadeSdkVersion>
     <!-- _git/dotnet-optimization dependencies -->
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index c1f25fac382..c67fec8bff7 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -42,37 +42,37 @@
       <Uri>https://github.com/dotnet/runtime</Uri>
       <Sha>9d5a6a9aa463d6d10b0b0ba6d5982cc82f363dc3</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.25480.7">
+    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.25529.7">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>ebf60fd9876294d15a47407b468709db1b31cc91</Sha>
+      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
diff --git a/eng/Versions.props b/eng/Versions.props
index 1b84f68b3cd..ee0a41feffd 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -100,12 +100,7 @@
     <VisualStudioShellProjectsPackages>18.0.2077-preview.1</VisualStudioShellProjectsPackages>
     <MicrosoftVisualStudioThreadingPackagesVersion>18.0.5</MicrosoftVisualStudioThreadingPackagesVersion>
   
-    <!-- Roslyn packages -->
-    <MicrosoftCodeAnalysisEditorFeaturesTextVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
-    <MicrosoftCodeAnalysisExternalAccessFSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisExternalAccessFSharpVersion>
-    <MicrosoftCodeAnalysisVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisVersion>
-    <MicrosoftCodeAnalysisCSharpVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisCSharpVersion>
-    <MicrosoftVisualStudioLanguageServicesVersion>5.0.0-2.25480.7</MicrosoftVisualStudioLanguageServicesVersion>
+    <!-- Roslyn packages- manually maintained, rest is darc-managed in sibling file -->
     <MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.28</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
 	<!-- Roslyn for when we need to compile C# in tests. .dll hell caused by vstest makes newer version fail at runtime -->
 	<RoslynForTestingButNotForVSLayer>4.14.0</RoslynForTestingButNotForVSLayer>

From b7ef3e159a55e8202d75f45283e8b94222661137 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 10 Nov 2025 16:31:32 +0000
Subject: [PATCH 055/102] Update dependencies from
 https://github.com/dotnet/arcade build 20251020.2 (#19017)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25513.2 -> To Version 10.0.0-beta.25520.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                       |  2 +-
 eng/Version.Details.xml                         |  4 ++--
 eng/common/SetupNugetSources.ps1                | 17 +++++++++++++++--
 eng/common/SetupNugetSources.sh                 | 17 +++++++++++++++--
 .../core-templates/job/publish-build-assets.yml |  5 +++++
 .../core-templates/post-build/post-build.yml    |  5 +++++
 .../core-templates/steps/install-microbuild.yml | 15 +++++++--------
 global.json                                     |  2 +-
 8 files changed, 51 insertions(+), 16 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 1bf8dd77a78..c8725ae976b 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25513.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25555.6</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index c67fec8bff7..cec28533549 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25513.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25555.6">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>e8ca69398033dd1eea35e9667bf857234465de2b</Sha>
+      <Sha>987d1a73ea67d323c0fc7537bce8ec65d87eb43f</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index fc8d618014e..65ed3a8adef 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -1,6 +1,7 @@
 # This script adds internal feeds required to build commits that depend on internal package sources. For instance,
-# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
-# disabled internal Maestro (darc-int*) feeds.
+# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly,
+# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present.
+# In addition, this script also enables disabled internal Maestro (darc-int*) feeds.
 #
 # Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
 #
@@ -173,4 +174,16 @@ foreach ($dotnetVersion in $dotnetVersions) {
     }
 }
 
+# Check for dotnet-eng and add dotnet-eng-internal if present
+$dotnetEngSource = $sources.SelectSingleNode("add[@key='dotnet-eng']")
+if ($dotnetEngSource -ne $null) {
+    AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-eng-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
+}
+
+# Check for dotnet-tools and add dotnet-tools-internal if present
+$dotnetToolsSource = $sources.SelectSingleNode("add[@key='dotnet-tools']")
+if ($dotnetToolsSource -ne $null) {
+    AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-tools-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
+}
+
 $doc.Save($filename)
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index b97cc536379..b2163abbe71 100755
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -1,8 +1,9 @@
 #!/usr/bin/env bash
 
 # This script adds internal feeds required to build commits that depend on internal package sources. For instance,
-# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
-# disabled internal Maestro (darc-int*) feeds.
+# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly,
+# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present.
+# In addition, this script also enables disabled internal Maestro (darc-int*) feeds.
 # 
 # Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
 #
@@ -173,6 +174,18 @@ for DotNetVersion in ${DotNetVersions[@]} ; do
     fi
 done
 
+# Check for dotnet-eng and add dotnet-eng-internal if present
+grep -i "<add key=\"dotnet-eng\"" $ConfigFile > /dev/null
+if [ "$?" == "0" ]; then
+    AddOrEnablePackageSource "dotnet-eng-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$FeedSuffix"
+fi
+
+# Check for dotnet-tools and add dotnet-tools-internal if present
+grep -i "<add key=\"dotnet-tools\"" $ConfigFile > /dev/null
+if [ "$?" == "0" ]; then
+    AddOrEnablePackageSource "dotnet-tools-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$FeedSuffix"
+fi
+
 # I want things split line by line
 PrevIFS=$IFS
 IFS=$'\n'
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index 37dff559fc1..e7daa6d2faf 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -180,6 +180,11 @@ jobs:
           PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
           is1ESPipeline: ${{ parameters.is1ESPipeline }}
 
+      # Darc is targeting 8.0, so make sure it's installed
+      - task: UseDotNet@2
+        inputs:
+          version: 8.0.x
+
       - task: AzureCLI@2
         displayName: Publish Using Darc
         inputs:
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index f6f87fe5c67..55361908c2e 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -307,6 +307,11 @@ stages:
 
         - task: NuGetAuthenticate@1
 
+        # Darc is targeting 8.0, so make sure it's installed
+        - task: UseDotNet@2
+          inputs:
+            version: 8.0.x
+
         - task: AzureCLI@2
           displayName: Publish Using Darc
           inputs:
diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml
index d6b9878f54d..f2248ebfd73 100644
--- a/eng/common/core-templates/steps/install-microbuild.yml
+++ b/eng/common/core-templates/steps/install-microbuild.yml
@@ -11,23 +11,22 @@ parameters:
   # Unfortunately, _SignType can't be used to exclude the use of the service connection in non-real sign scenarios. The
   # variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough.
   microbuildUseESRP: true
-  # Location of the MicroBuild output folder
-  # NOTE: There's something that relies on this being in the "default" source directory for tasks such as Signing to work properly.
-  microBuildOutputFolder: '$(Build.SourcesDirectory)'
 
   continueOnError: false
 
 steps:
   - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
     - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
-      # Needed to download the MicroBuild plugin nupkgs on Mac and Linux when nuget.exe is unavailable
+      # Installing .NET 8 is required to use the MicroBuild signing plugin on non-Windows platforms
       - task: UseDotNet@2
         displayName: Install .NET 8.0 SDK for MicroBuild Plugin
         inputs:
           packageType: sdk
           version: 8.0.x
-          installationPath: ${{ parameters.microBuildOutputFolder }}/.dotnet
-          workingDirectory: ${{ parameters.microBuildOutputFolder }}
+          # Installing the SDK in a '.dotnet-microbuild' directory is required for signing.
+          # See target FindDotNetPathForMicroBuild in arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.proj
+          # Do not remove '.dotnet-microbuild' from the path without changing the corresponding logic.
+          installationPath: $(Agent.TempDirectory)/.dotnet-microbuild
         condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
 
     - script: |
@@ -65,7 +64,7 @@ steps:
             ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
       env:
         TeamName: $(_TeamName)
-        MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
+        MicroBuildOutputFolderOverride: $(Agent.TempDirectory)/MicroBuild
         SYSTEM_ACCESSTOKEN: $(System.AccessToken)
       continueOnError: ${{ parameters.continueOnError }}
       condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))
@@ -85,7 +84,7 @@ steps:
               ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
         env:
           TeamName: $(_TeamName)
-          MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
+          MicroBuildOutputFolderOverride: $(Agent.TempDirectory)/MicroBuild
           SYSTEM_ACCESSTOKEN: $(System.AccessToken)
         continueOnError: ${{ parameters.continueOnError }}
         condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'),  eq(variables['_SignType'], 'real'))
diff --git a/global.json b/global.json
index fcfaa76410a..f51b87f8296 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25513.2",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25555.6",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 1eb464c78b44bb1cf43215f86d4967cca0ae6481 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 11 Nov 2025 12:12:41 +0000
Subject: [PATCH 056/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19053)

* Backflow from https://github.com/dotnet/dotnet / 8ee0cc0 build 289521

[[ commit created by automation ]]

* Update dependencies from https://github.com/dotnet/dotnet build 289521
No dependency updates to commit

* Update dependencies from https://github.com/dotnet/dotnet build 289695
No dependency updates to commit

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Tomas Grosup <Tomas.Grosup@gmail.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index cec28533549..6b9366b3249 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="8aba88f6f12f3ce1dd5740575cff9442f1f9122c" BarId="285155" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="e17b0d08def649f30aed9c09cf4a2c5741a3c76c" BarId="289695" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index ee0a41feffd..259447791b0 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -12,13 +12,13 @@
   <PropertyGroup>
     <!-- Don't use the built in support for pre-release iteration. The nuget repack task doesn't support
          the iteration format at the moment. https://github.com/dotnet/arcade/issues/15919 -->
-    <FSharpPreReleaseIteration>2</FSharpPreReleaseIteration>
-    <PreReleaseVersionLabel>rc$(FSharpPreReleaseIteration)</PreReleaseVersionLabel>
+    <FSharpPreReleaseIteration></FSharpPreReleaseIteration>
+    <PreReleaseVersionLabel>servicing$(FSharpPreReleaseIteration)</PreReleaseVersionLabel>
     <!-- These have to be in sync with latest release branch -->
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>100</FSBuildVersion>
+    <FSBuildVersion>101</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From 5cee16f7d917bc8878a0cbd15362c85fef2b403e Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 14 Nov 2025 10:44:07 +0100
Subject: [PATCH 057/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19088)

* Backflow from https://github.com/dotnet/dotnet / f4701e0 build 290631

[[ commit created by automation ]]

* Update dependencies from https://github.com/dotnet/dotnet build 290631
No dependency updates to commit

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 6b9366b3249..b1a287a5e46 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="e17b0d08def649f30aed9c09cf4a2c5741a3c76c" BarId="289695" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="f4701e048e6a684237a4b52b745e21b1d857278d" BarId="290631" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>

From 8a8642b5fe77df45f3b3910c963a87e0c9ce4426 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 24 Nov 2025 12:54:32 +0000
Subject: [PATCH 058/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19109)

* Merge release/dev18.0 into darc-release/dev18.0-2f272bd7-4d7e-49bb-8cdf-cc6e42aacefd

* Update dependencies from https://github.com/dotnet/dotnet build 291651
No dependency updates to commit

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index b1a287a5e46..4870bf4dc5a 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="f4701e048e6a684237a4b52b745e21b1d857278d" BarId="290631" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="18f6e60aa4755c2be56b2d45165a135d64d4f710" BarId="291651" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index 259447791b0..4aad829b2b1 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -18,7 +18,7 @@
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>101</FSBuildVersion>
+    <FSBuildVersion>102</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From 8987d593b6a8548e2448705c774fab0e7d4c8138 Mon Sep 17 00:00:00 2001
From: Adam Boniecki <20281641+abonie@users.noreply.github.com>
Date: Thu, 11 Dec 2025 20:10:18 +0100
Subject: [PATCH 059/102] Update the agent pool for the PR builds (#19102)
 (#19150)

---
 azure-pipelines-PR.yml                        |  54 ++----
 .../FSharp.Test.Utilities.fsproj              |   5 +-
 .../VSInstallDiscovery.fs                     | 180 ++++++++++++++++++
 .../Helpers/AssemblyResolver.fs               |  56 +-----
 .../tests/Salsa/VisualFSharp.Salsa.fsproj     |   5 +-
 vsintegration/tests/Salsa/VsMocks.fs          |  12 +-
 .../tests/UnitTests/AssemblyResolver.fs       |  47 +----
 7 files changed, 214 insertions(+), 145 deletions(-)
 create mode 100644 tests/FSharp.Test.Utilities/VSInstallDiscovery.fs

diff --git a/azure-pipelines-PR.yml b/azure-pipelines-PR.yml
index cfa5411ee33..eee3e74008b 100644
--- a/azure-pipelines-PR.yml
+++ b/azure-pipelines-PR.yml
@@ -55,6 +55,8 @@ variables:
     value: Release
   - name: _PublishUsingPipelines
     value: true
+  - name: _WindowsMachineQueueName
+    value: windows.vs2026preview.scout.amd64.open
   - name: VisualStudioDropName
     value: Products/$(System.TeamProject)/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber)
   - name: Codeql.Enabled
@@ -101,7 +103,7 @@ stages:
             value: Test
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 90
           strategy:
             maxParallel: 2
@@ -216,12 +218,8 @@ stages:
 
         - job: WindowsLangVersionPreview
           pool:
-            # The PR build definition sets this variable:
-            #   WindowsMachineQueueName=Windows.vs2022.amd64.open
-            # and there is an alternate build definition that sets this to a queue that is always scouting the
-            # next preview of Visual Studio.
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 120
           steps:
           - checkout: self
@@ -256,12 +254,8 @@ stages:
 
         - job: WindowsNoRealsig_testCoreclr
           pool:
-            # The PR build definition sets this variable:
-            #   WindowsMachineQueueName=Windows.vs2022.amd64.open
-            # and there is an alternate build definition that sets this to a queue that is always scouting the
-            # next preview of Visual Studio.
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 120
           steps:
           - checkout: self
@@ -306,12 +300,8 @@ stages:
 
         - job: WindowsNoRealsig_testDesktop
           pool:
-            # The PR build definition sets this variable:
-            #   WindowsMachineQueueName=Windows.vs2022.amd64.open
-            # and there is an alternate build definition that sets this to a queue that is always scouting the
-            # next preview of Visual Studio.
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 120
           strategy:
             parallel: 4
@@ -359,12 +349,8 @@ stages:
 
         - job: WindowsStrictIndentation
           pool:
-            # The PR build definition sets this variable:
-            #   WindowsMachineQueueName=Windows.vs2022.amd64.open
-            # and there is an alternate build definition that sets this to a queue that is always scouting the
-            # next preview of Visual Studio.
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 120
           steps:
           - checkout: self
@@ -400,7 +386,7 @@ stages:
         - job: WindowsNoStrictIndentation
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 120
           steps:
           - checkout: self
@@ -441,12 +427,8 @@ stages:
           - name: __VSNeverShowWhatsNew
             value: 1
           pool:
-            # The PR build definition sets this variable:
-            #   WindowsMachineQueueName=Windows.vs2022.amd64.open
-            # and there is an alternate build definition that sets this to a queue that is always scouting the
-            # next preview of Visual Studio.
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 120
           strategy:
             matrix:
@@ -546,12 +528,8 @@ stages:
           - name: __VSNeverShowWhatsNew
             value: 1
           pool:
-            # The PR build definition sets this variable:
-            #   WindowsMachineQueueName=Windows.vs2022.amd64.open
-            # and there is an alternate build definition that sets this to a queue that is always scouting the
-            # next preview of Visual Studio.
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           timeoutInMinutes: 120
           strategy:
             parallel: 4
@@ -622,7 +600,7 @@ stages:
         - job: MockOfficial
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           steps:
           - checkout: self
             clean: true
@@ -721,7 +699,7 @@ stages:
         - job: EndToEndBuildTests
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           strategy:
             maxParallel: 2
             matrix:
@@ -761,7 +739,7 @@ stages:
         - job: Plain_Build_Windows
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           variables:
           - name: _BuildConfig
             value: Debug
@@ -816,7 +794,7 @@ stages:
         - job: Benchmarks
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           variables:
           - name: _BuildConfig
             value: Release
@@ -832,7 +810,7 @@ stages:
         - job: Build_And_Test_AOT_Windows
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           strategy:
             maxParallel: 2
             matrix:
@@ -873,7 +851,7 @@ stages:
         - job: ILVerify
           pool:
             name: $(DncEngPublicBuildPool)
-            demands: ImageOverride -equals $(WindowsMachineQueueName)
+            demands: ImageOverride -equals $(_WindowsMachineQueueName)
           steps:
           - checkout: self
             clean: true
diff --git a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
index c1aebde1ed3..d899b551e30 100644
--- a/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
+++ b/tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj
@@ -32,6 +32,7 @@
     <Compile Include="TestFramework.fs" />
     <Compile Include="ILChecker.fs" />
     <Compile Include="Utilities.fs" />
+    <Compile Include="VSInstallDiscovery.fs" />
     <Compile Include="CompilerAssert.fs" />
     <Compile Include="ProjectGeneration.fs" />
     <Compile Include="Assert.fs" />
@@ -93,6 +94,7 @@
     <InternalsVisibleTo Include="FSharp.Tests.FSharpSuite" />
     <InternalsVisibleTo Include="LanguageServiceProfiling" />
     <InternalsVisibleTo Include="FSharp.Compiler.Benchmarks" />
+    <InternalsVisibleTo Include="FSharp.Editor.Tests" />
   </ItemGroup>
 
   <ItemGroup Condition="'$(TargetFramework)' != '$(FSharpNetCoreProductTargetFramework)'">
@@ -100,7 +102,8 @@
     <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="$(SystemDiagnosticsDiagnosticSourceVersion)" />
   </ItemGroup>
 <PropertyGroup>
- <NoWarn>$(NoWarn);NU1510</NoWarn> <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path. Also, local NoWarn does not help - This is just me trying to enforce it -->
+ <NoWarn>$(NoWarn);NU1510;44</NoWarn> <!-- NU1510: Project is explicitly referencing the runtime assembly 'System.Collections.Immutable', however, if we remove it, it tries to find it on the wrong path. Also, local NoWarn does not help - This is just me trying to enforce it -->
+ <!-- 44: AssemblyName.CodeBase is deprecated but needed for assembly resolution in VS integration tests -->
 </PropertyGroup>
   <ItemGroup>
     <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" GeneratePathProperty="true"  />
diff --git a/tests/FSharp.Test.Utilities/VSInstallDiscovery.fs b/tests/FSharp.Test.Utilities/VSInstallDiscovery.fs
new file mode 100644
index 00000000000..e59eec8eed2
--- /dev/null
+++ b/tests/FSharp.Test.Utilities/VSInstallDiscovery.fs
@@ -0,0 +1,180 @@
+// Copyright (c) Microsoft Corporation.  All Rights Reserved.  See License.txt in the project root for license information.
+
+namespace FSharp.Test
+
+/// Test-only Visual Studio installation discovery infrastructure.
+/// Provides a centralized, robust, and graceful discovery mechanism for Visual Studio installations 
+/// used by integration/editor/unit tests under vsintegration/tests.
+module VSInstallDiscovery =
+
+    open System
+    open System.IO
+    open System.Diagnostics
+
+    /// Result of VS installation discovery
+    type VSInstallResult = 
+        | Found of installPath: string * source: string
+        | NotFound of reason: string
+
+    /// Attempts to find a Visual Studio installation using multiple fallback strategies
+    let tryFindVSInstallation () : VSInstallResult =
+        
+        /// Check if a path exists and looks like a valid VS installation
+        let validateVSPath path =
+            if String.IsNullOrEmpty(path) then false
+            else
+                try
+                    let fullPath = Path.GetFullPath(path)
+                    Directory.Exists(fullPath) &&
+                    Directory.Exists(Path.Combine(fullPath, "IDE")) &&
+                    (File.Exists(Path.Combine(fullPath, "IDE", "devenv.exe")) ||
+                     File.Exists(Path.Combine(fullPath, "IDE", "VSIXInstaller.exe")))
+                with
+                | _ -> false
+
+        /// Strategy 1: VSAPPIDDIR (derive parent of Common7/IDE)
+        let tryVSAppIdDir () =
+            let envVar = Environment.GetEnvironmentVariable("VSAPPIDDIR")
+            if not (String.IsNullOrEmpty(envVar)) then
+                try
+                    let parentPath = Path.Combine(envVar, "..")
+                    if validateVSPath parentPath then
+                        Some (Found (Path.GetFullPath(parentPath), "VSAPPIDDIR environment variable"))
+                    else None
+                with
+                | _ -> None
+            else None
+
+        /// Strategy 2: Highest version among VS*COMNTOOLS environment variables
+        let tryVSCommonTools () =
+            let vsVersions = [
+                ("VS180COMNTOOLS", 18) // Visual Studio 2026
+                ("VS170COMNTOOLS", 17) // Visual Studio 2022
+                ("VS160COMNTOOLS", 16) // Visual Studio 2019  
+                ("VS150COMNTOOLS", 15) // Visual Studio 2017
+                ("VS140COMNTOOLS", 14) // Visual Studio 2015
+                ("VS120COMNTOOLS", 12) // Visual Studio 2013
+            ]
+            
+            vsVersions
+            |> List.tryPick (fun (envName, version) ->
+                let envVar = Environment.GetEnvironmentVariable(envName)
+                if not (String.IsNullOrEmpty(envVar)) then
+                    try
+                        let parentPath = Path.Combine(envVar, "..")
+                        if validateVSPath parentPath then
+                            Some (Found (Path.GetFullPath(parentPath), $"{envName} environment variable (VS version {version})"))
+                        else None
+                    with
+                    | _ -> None
+                else None)
+
+        /// Strategy 3: vswhere.exe (Visual Studio Installer)
+        let tryVSWhere () =
+            try
+                let programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
+                let vswherePath = Path.Combine(programFiles, "Microsoft Visual Studio", "Installer", "vswhere.exe")
+                
+                if File.Exists(vswherePath) then
+                    let startInfo = ProcessStartInfo(
+                        FileName = vswherePath,
+                        Arguments = "-latest -products * -requires Microsoft.Component.MSBuild -property installationPath",
+                        UseShellExecute = false,
+                        RedirectStandardOutput = true,
+                        RedirectStandardError = true,
+                        CreateNoWindow = true
+                    )
+                    
+                    use proc = Process.Start(startInfo)
+                    proc.WaitForExit(5000) |> ignore // 5 second timeout
+                    
+                    if proc.ExitCode = 0 then
+                        let output = proc.StandardOutput.ReadToEnd().Trim()
+                        if validateVSPath output then
+                            Some (Found (Path.GetFullPath(output), "vswhere.exe discovery"))
+                        else None
+                    else None
+                else None
+            with
+            | _ -> None
+
+        // Try each strategy in order of precedence
+        match tryVSAppIdDir () with
+        | Some result -> result
+        | None ->
+            match tryVSCommonTools () with
+            | Some result -> result
+            | None ->
+                match tryVSWhere () with
+                | Some result -> result
+                | None -> NotFound "No Visual Studio installation found using any discovery method"
+
+    /// Gets the VS installation directory, with graceful fallback behavior.
+    /// Returns None if no VS installation can be found, allowing callers to handle gracefully.
+    let tryGetVSInstallDir () : string option =
+        match tryFindVSInstallation () with
+        | Found (path, _) -> Some path
+        | NotFound _ -> None
+
+    /// Gets the VS installation directory with detailed logging.
+    /// Useful for debugging installation discovery issues in tests.
+    let getVSInstallDirWithLogging (logAction: string -> unit) : string option =
+        match tryFindVSInstallation () with
+        | Found (path, source) -> 
+            logAction $"Visual Studio installation found at: {path} (via {source})"
+            Some path
+        | NotFound reason -> 
+            logAction $"Visual Studio installation not found: {reason}"
+            None
+
+    /// Gets the VS installation directory or fails with a detailed error message.
+    /// This is the recommended method for test scenarios that require VS to be installed.
+    let getVSInstallDirOrFail () : string =
+        match tryFindVSInstallation () with
+        | Found (path, _) -> path
+        | NotFound reason -> 
+            failwith $"Visual Studio installation not found: {reason}. Ensure VS is installed or environment variables (VSAPPIDDIR, VS*COMNTOOLS) are set."
+
+/// Assembly resolver for Visual Studio test infrastructure.
+/// Provides centralized assembly resolution for VS integration tests.
+module VSAssemblyResolver =
+    open System
+    open System.IO
+    open System.Reflection
+    open System.Globalization
+
+    /// Adds an assembly resolver that probes Visual Studio installation directories.
+    /// This should be called early in test initialization to ensure VS assemblies can be loaded.
+    let addResolver () =
+        let vsInstallDir = VSInstallDiscovery.getVSInstallDirOrFail ()
+        
+        let probingPaths =
+            [|
+                Path.Combine(vsInstallDir, @"IDE\CommonExtensions\Microsoft\Editor")
+                Path.Combine(vsInstallDir, @"IDE\PublicAssemblies")
+                Path.Combine(vsInstallDir, @"IDE\PrivateAssemblies")
+                Path.Combine(vsInstallDir, @"IDE\CommonExtensions\Microsoft\ManagedLanguages\VBCSharp\LanguageServices")
+                Path.Combine(vsInstallDir, @"IDE\Extensions\Microsoft\CodeSense\Framework")
+                Path.Combine(vsInstallDir, @"IDE")
+            |]
+
+        AppDomain.CurrentDomain.add_AssemblyResolve(fun _ args ->
+            let found () =
+                probingPaths
+                |> Seq.tryPick (fun p ->
+                    try
+                        let name = AssemblyName(args.Name)
+                        let codebase = Path.GetFullPath(Path.Combine(p, name.Name) + ".dll")
+                        if File.Exists(codebase) then
+                            name.CodeBase <- codebase
+                            name.CultureInfo <- Unchecked.defaultof<CultureInfo>
+                            name.Version <- Unchecked.defaultof<Version>
+                            Some name
+                        else
+                            None
+                    with _ ->
+                        None)
+
+            match found () with
+            | None -> Unchecked.defaultof<Assembly>
+            | Some name -> Assembly.Load(name))
diff --git a/vsintegration/tests/FSharp.Editor.Tests/Helpers/AssemblyResolver.fs b/vsintegration/tests/FSharp.Editor.Tests/Helpers/AssemblyResolver.fs
index f41f10fa138..ef8c01ca908 100644
--- a/vsintegration/tests/FSharp.Editor.Tests/Helpers/AssemblyResolver.fs
+++ b/vsintegration/tests/FSharp.Editor.Tests/Helpers/AssemblyResolver.fs
@@ -2,57 +2,9 @@
 
 namespace FSharp.Editor.Tests.Helpers
 
-open System
-open System.IO
-open System.Reflection
-
 module AssemblyResolver =
-    open System.Globalization
-
-    let vsInstallDir =
-        // use the environment variable to find the VS installdir
-        let vsvar =
-            let var = Environment.GetEnvironmentVariable("VS170COMNTOOLS")
-
-            if String.IsNullOrEmpty var then
-                Environment.GetEnvironmentVariable("VSAPPIDDIR")
-            else
-                var
-
-        if String.IsNullOrEmpty vsvar then
-            failwith "VS170COMNTOOLS and VSAPPIDDIR environment variables not found."
-
-        Path.Combine(vsvar, "..")
-
-    let probingPaths =
-        [|
-            Path.Combine(vsInstallDir, @"IDE\CommonExtensions\Microsoft\Editor")
-            Path.Combine(vsInstallDir, @"IDE\PublicAssemblies")
-            Path.Combine(vsInstallDir, @"IDE\PrivateAssemblies")
-            Path.Combine(vsInstallDir, @"IDE\CommonExtensions\Microsoft\ManagedLanguages\VBCSharp\LanguageServices")
-            Path.Combine(vsInstallDir, @"IDE\Extensions\Microsoft\CodeSense\Framework")
-            Path.Combine(vsInstallDir, @"IDE")
-        |]
-
-    let addResolver () =
-        AppDomain.CurrentDomain.add_AssemblyResolve (fun h args ->
-            let found () =
-                (probingPaths)
-                |> Seq.tryPick (fun p ->
-                    try
-                        let name = AssemblyName(args.Name)
-                        let codebase = Path.GetFullPath(Path.Combine(p, name.Name) + ".dll")
-
-                        if File.Exists(codebase) then
-                            name.CodeBase <- codebase
-                            name.CultureInfo <- Unchecked.defaultof<CultureInfo>
-                            name.Version <- Unchecked.defaultof<Version>
-                            Some(name)
-                        else
-                            None
-                    with _ ->
-                        None)
+    open FSharp.Test.VSAssemblyResolver
 
-            match found () with
-            | None -> Unchecked.defaultof<Assembly>
-            | Some name -> Assembly.Load(name))
+    /// Adds an assembly resolver that probes Visual Studio installation directories.
+    /// This is a compatibility shim that delegates to the centralized implementation.
+    let addResolver = addResolver
diff --git a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
index 6396eada6a9..d41b116c21e 100644
--- a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
+++ b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
@@ -16,7 +16,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullnessShims.fs" />
+    <Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullnessShims.fs"/>
     <EmbeddedText Include="$(FSharpSourcesRoot)\Compiler\Facilities\UtilsStrings.txt" />
     <Compile Include="$(FSharpSourcesRoot)\Compiler\Facilities\CompilerLocation.fs">
       <Link>CompilerLocation.fs</Link>
@@ -24,6 +24,9 @@
     <Compile Include="..\unittests\TestLib.Utils.fs">
       <Link>UnitTests.TestLib.Utils.fs</Link>
     </Compile>
+    <Compile Include="..\..\..\tests\FSharp.Test.Utilities\VSInstallDiscovery.fs">
+      <Link>VSInstallDiscovery.fs</Link>
+    </Compile>
     <Compile Include="FSharpLanguageServiceTestable.fs" />
     <Compile Include="VsMocks.fs" />
     <Compile Include="Salsa.fs" />
diff --git a/vsintegration/tests/Salsa/VsMocks.fs b/vsintegration/tests/Salsa/VsMocks.fs
index 5189b7faec5..54fe8b906de 100644
--- a/vsintegration/tests/Salsa/VsMocks.fs
+++ b/vsintegration/tests/Salsa/VsMocks.fs
@@ -1642,6 +1642,7 @@ module internal VsActual =
     open System.ComponentModel.Composition.Primitives
     open Microsoft.VisualStudio.Text
     open Microsoft.VisualStudio.Threading
+    open FSharp.Test.VSInstallDiscovery
 
     type TestExportJoinableTaskContext () =
 
@@ -1650,16 +1651,7 @@ module internal VsActual =
         [<System.ComponentModel.Composition.Export(typeof<JoinableTaskContext>)>]
         member public _.JoinableTaskContext : JoinableTaskContext = jtc
 
-    let vsInstallDir =
-        // use the environment variable to find the VS installdir
-        let vsvar =
-            let var = Environment.GetEnvironmentVariable("VS170COMNTOOLS")
-            if String.IsNullOrEmpty var then
-                Environment.GetEnvironmentVariable("VSAPPIDDIR")
-            else
-                var
-        if String.IsNullOrEmpty vsvar then failwith "VS170COMNTOOLS and VSAPPIDDIR environment variables not found."
-        Path.Combine(vsvar, "..")
+    let vsInstallDir = getVSInstallDirOrFail ()
 
     let CreateEditorCatalog() =
         let thisAssembly = Assembly.GetExecutingAssembly().Location
diff --git a/vsintegration/tests/UnitTests/AssemblyResolver.fs b/vsintegration/tests/UnitTests/AssemblyResolver.fs
index aab95cc46fc..cf36b723e40 100644
--- a/vsintegration/tests/UnitTests/AssemblyResolver.fs
+++ b/vsintegration/tests/UnitTests/AssemblyResolver.fs
@@ -1,47 +1,8 @@
 namespace Microsoft.VisualStudio.FSharp
 
-open System
-open System.IO
-open System.Reflection
-
 module AssemblyResolver =
-    open System.Globalization
-
-    let vsInstallDir =
-        // use the environment variable to find the VS installdir
-        let vsvar =
-            let var = Environment.GetEnvironmentVariable("VS170COMNTOOLS")
-            if String.IsNullOrEmpty var then
-                Environment.GetEnvironmentVariable("VSAPPIDDIR")
-            else
-                var
-        if String.IsNullOrEmpty vsvar then failwith "VS170COMNTOOLS and VSAPPIDDIR environment variables not found."
-        Path.Combine(vsvar, "..")
-
-    let probingPaths = [|
-        Path.Combine(vsInstallDir, @"IDE\CommonExtensions\Microsoft\Editor")
-        Path.Combine(vsInstallDir, @"IDE\PublicAssemblies")
-        Path.Combine(vsInstallDir, @"IDE\PrivateAssemblies")
-        Path.Combine(vsInstallDir, @"IDE\CommonExtensions\Microsoft\ManagedLanguages\VBCSharp\LanguageServices")
-        Path.Combine(vsInstallDir, @"IDE\Extensions\Microsoft\CodeSense\Framework")
-        Path.Combine(vsInstallDir, @"IDE")
-    |]
+    open FSharp.Test.VSAssemblyResolver
 
-    let addResolver () =
-        AppDomain.CurrentDomain.add_AssemblyResolve(fun h args ->
-            let found () =
-                (probingPaths ) |> Seq.tryPick(fun p ->
-                    try
-                        let name = AssemblyName(args.Name)
-                        let codebase = Path.GetFullPath(Path.Combine(p, name.Name) + ".dll")
-                        if File.Exists(codebase) then
-                            name.CodeBase <- codebase
-                            name.CultureInfo <- Unchecked.defaultof<CultureInfo>
-                            name.Version <- Unchecked.defaultof<Version>
-                            Some (name)
-                        else None
-                    with | _ -> None
-                    )
-            match found() with
-            | None -> Unchecked.defaultof<Assembly>
-            | Some name -> Assembly.Load(name) )
+    /// Adds an assembly resolver that probes Visual Studio installation directories.
+    /// This is a compatibility shim that delegates to the centralized implementation.
+    let addResolver = addResolver

From 09ded387d5379d8d8308c98e2d33ebcedbc069a6 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 12 Dec 2025 09:21:02 +0000
Subject: [PATCH 060/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#19137)

* Update dependencies from https://github.com/dotnet/arcade build 20251203.3
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25555.6 -> To Version 10.0.0-beta.25603.3

* Update dependencies from https://github.com/dotnet/arcade build 20251205.3
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25555.6 -> To Version 10.0.0-beta.25605.3

* Update dependencies from https://github.com/dotnet/arcade build 20251208.3
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25555.6 -> To Version 10.0.0-beta.25608.3

* Update dependencies from https://github.com/dotnet/arcade build 20251209.2
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25555.6 -> To Version 10.0.0-beta.25609.2

* Update dependencies from https://github.com/dotnet/arcade build 20251211.1
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25555.6 -> To Version 10.0.0-beta.25611.1

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Tomas Grosup <Tomas.Grosup@gmail.com>
---
 eng/Version.Details.props                     |  2 +-
 eng/Version.Details.xml                       |  4 +--
 .../job/publish-build-assets.yml              | 13 +++++++
 .../job/source-index-stage1.yml               |  8 ++---
 .../core-templates/post-build/post-build.yml  | 17 +++++++---
 .../steps/install-microbuild.yml              | 34 +++++++++++++++----
 .../core-templates/steps/publish-logs.yml     |  4 ++-
 .../core-templates/steps/source-build.yml     |  2 +-
 eng/common/internal-feed-operations.ps1       |  2 +-
 eng/common/post-build/nuget-verification.ps1  |  2 +-
 eng/common/post-build/publish-using-darc.ps1  |  4 ++-
 eng/common/post-build/redact-logs.ps1         |  5 +--
 eng/common/sdk-task.ps1                       |  4 ++-
 eng/common/tools.ps1                          | 10 +++---
 global.json                                   |  6 ++--
 15 files changed, 83 insertions(+), 34 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index c8725ae976b..420cac279e9 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25555.6</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25611.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 4870bf4dc5a..1c0e55a0165 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25555.6">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25611.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>987d1a73ea67d323c0fc7537bce8ec65d87eb43f</Sha>
+      <Sha>9f286ddee40065ea225611cb43ab0415e48994c2</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index e7daa6d2faf..3437087c80f 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -120,6 +120,14 @@ jobs:
     
     - task: NuGetAuthenticate@1
 
+    # Populate internal runtime variables.
+    - template: /eng/common/templates/steps/enable-internal-sources.yml
+      ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+        parameters:
+            legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
+    
+    - template: /eng/common/templates/steps/enable-internal-runtimes.yml
+
     - task: AzureCLI@2
       displayName: Publish Build Assets
       inputs:
@@ -132,6 +140,9 @@ jobs:
           /p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }}
           /p:MaestroApiEndpoint=https://maestro.dot.net
           /p:OfficialBuildId=$(OfficialBuildId)
+          -runtimeSourceFeed https://ci.dot.net/internal
+          -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
+
       condition: ${{ parameters.condition }}
       continueOnError: ${{ parameters.continueOnError }}
     
@@ -200,6 +211,8 @@ jobs:
             -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
             -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
             -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
+            -runtimeSourceFeed https://ci.dot.net/internal
+            -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
 
     - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
       - template: /eng/common/core-templates/steps/publish-logs.yml
diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml
index 30530359a5d..76baf5c2725 100644
--- a/eng/common/core-templates/job/source-index-stage1.yml
+++ b/eng/common/core-templates/job/source-index-stage1.yml
@@ -3,7 +3,7 @@ parameters:
   sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
   preSteps: []
   binlogPath: artifacts/log/Debug/Build.binlog
-  condition: ''
+  condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')
   dependsOn: ''
   pool: ''
   is1ESPipeline: ''
@@ -25,10 +25,10 @@ jobs:
     pool:
       ${{ if eq(variables['System.TeamProject'], 'public') }}:
         name: $(DncEngPublicBuildPool)
-        image: windows.vs2022.amd64.open
+        image: windows.vs2026preview.scout.amd64.open
       ${{ if eq(variables['System.TeamProject'], 'internal') }}:
         name: $(DncEngInternalBuildPool)
-        image: windows.vs2022.amd64
+        image: windows.vs2026preview.scout.amd64
 
   steps:
   - ${{ if eq(parameters.is1ESPipeline, '') }}:
@@ -41,4 +41,4 @@ jobs:
 
   - template: /eng/common/core-templates/steps/source-index-stage1-publish.yml
     parameters:
-      binLogPath: ${{ parameters.binLogPath }}
\ No newline at end of file
+      binLogPath: ${{ parameters.binLogPath }}
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index 55361908c2e..9423d71ca3a 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -127,11 +127,11 @@ stages:
         ${{ else }}:
           ${{ if eq(parameters.is1ESPipeline, true) }}:
             name: $(DncEngInternalBuildPool)
-            image: windows.vs2022.amd64
+            image: windows.vs2026preview.scout.amd64
             os: windows
           ${{ else }}:
             name: $(DncEngInternalBuildPool)
-            demands: ImageOverride -equals windows.vs2022.amd64
+            demands: ImageOverride -equals windows.vs2026preview.scout.amd64
 
       steps:
         - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
@@ -175,7 +175,7 @@ stages:
             os: windows
           ${{ else }}:
             name: $(DncEngInternalBuildPool)
-            demands: ImageOverride -equals windows.vs2022.amd64          
+            demands: ImageOverride -equals windows.vs2026preview.scout.amd64
       steps:
         - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
           parameters:
@@ -236,7 +236,7 @@ stages:
             os: windows
           ${{ else }}:
             name: $(DncEngInternalBuildPool)
-            demands: ImageOverride -equals windows.vs2022.amd64          
+            demands: ImageOverride -equals windows.vs2026preview.scout.amd64
       steps:
         - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
           parameters:
@@ -307,6 +307,13 @@ stages:
 
         - task: NuGetAuthenticate@1
 
+        # Populate internal runtime variables.
+        - template: /eng/common/templates/steps/enable-internal-sources.yml
+          parameters:
+            legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
+
+        - template: /eng/common/templates/steps/enable-internal-runtimes.yml
+
         # Darc is targeting 8.0, so make sure it's installed
         - task: UseDotNet@2
           inputs:
@@ -328,3 +335,5 @@ stages:
               -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
               -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
               -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
+              -runtimeSourceFeed https://ci.dot.net/internal 
+              -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml
index f2248ebfd73..553fce66b94 100644
--- a/eng/common/core-templates/steps/install-microbuild.yml
+++ b/eng/common/core-templates/steps/install-microbuild.yml
@@ -11,22 +11,41 @@ parameters:
   # Unfortunately, _SignType can't be used to exclude the use of the service connection in non-real sign scenarios. The
   # variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough.
   microbuildUseESRP: true
+  # Microbuild installation directory
+  microBuildOutputFolder: $(Agent.TempDirectory)/MicroBuild
 
   continueOnError: false
 
 steps:
   - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
     - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
-      # Installing .NET 8 is required to use the MicroBuild signing plugin on non-Windows platforms
+      # Needed to download the MicroBuild plugin nupkgs on Mac and Linux when nuget.exe is unavailable
       - task: UseDotNet@2
         displayName: Install .NET 8.0 SDK for MicroBuild Plugin
         inputs:
           packageType: sdk
           version: 8.0.x
-          # Installing the SDK in a '.dotnet-microbuild' directory is required for signing.
-          # See target FindDotNetPathForMicroBuild in arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.proj
-          # Do not remove '.dotnet-microbuild' from the path without changing the corresponding logic.
-          installationPath: $(Agent.TempDirectory)/.dotnet-microbuild
+          installationPath: ${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild
+        condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
+
+      - script: |
+          set -euo pipefail
+
+          # UseDotNet@2 prepends the dotnet executable path to the PATH variable, so we can call dotnet directly
+          version=$(dotnet --version)
+          cat << 'EOF' > ${{ parameters.microBuildOutputFolder }}/global.json
+          {
+            "sdk": {
+              "version": "$version",
+              "paths": [
+                "${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild"
+              ],
+              "errorMessage": "The .NET SDK version $version is required to install the MicroBuild signing plugin."
+            }
+          }
+          EOF
+        displayName: 'Add global.json to MicroBuild Installation path'
+        workingDirectory: ${{ parameters.microBuildOutputFolder }}
         condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
 
     - script: |
@@ -64,7 +83,7 @@ steps:
             ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
       env:
         TeamName: $(_TeamName)
-        MicroBuildOutputFolderOverride: $(Agent.TempDirectory)/MicroBuild
+        MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
         SYSTEM_ACCESSTOKEN: $(System.AccessToken)
       continueOnError: ${{ parameters.continueOnError }}
       condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))
@@ -76,6 +95,7 @@ steps:
           signType: $(_SignType)
           zipSources: false
           feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+          workingDirectory: ${{ parameters.microBuildOutputFolder }}
           ${{ if eq(parameters.microbuildUseESRP, true) }}:
             ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
             ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
@@ -84,7 +104,7 @@ steps:
               ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
         env:
           TeamName: $(_TeamName)
-          MicroBuildOutputFolderOverride: $(Agent.TempDirectory)/MicroBuild
+          MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
           SYSTEM_ACCESSTOKEN: $(System.AccessToken)
         continueOnError: ${{ parameters.continueOnError }}
         condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'),  eq(variables['_SignType'], 'real'))
diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
index 10f825e270a..5a927b4c7bc 100644
--- a/eng/common/core-templates/steps/publish-logs.yml
+++ b/eng/common/core-templates/steps/publish-logs.yml
@@ -26,8 +26,10 @@ steps:
     #  If the file exists - sensitive data for redaction will be sourced from it
     #  (single entry per line, lines starting with '# ' are considered comments and skipped)
     arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' 
-      -BinlogToolVersion ${{parameters.BinlogToolVersion}}
+      -BinlogToolVersion '${{parameters.BinlogToolVersion}}'
       -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
+      -runtimeSourceFeed https://ci.dot.net/internal 
+      -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
       '$(publishing-dnceng-devdiv-code-r-build-re)'
       '$(MaestroAccessToken)'
       '$(dn-bot-all-orgs-artifact-feeds-rw)'
diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml
index acf16ed3496..b9c86c18ae4 100644
--- a/eng/common/core-templates/steps/source-build.yml
+++ b/eng/common/core-templates/steps/source-build.yml
@@ -24,7 +24,7 @@ steps:
     # in the default public locations.
     internalRuntimeDownloadArgs=
     if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
-      internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
+      internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey '$(dotnetbuilds-internal-container-read-token-base64)''
     fi
 
     buildConfig=Release
diff --git a/eng/common/internal-feed-operations.ps1 b/eng/common/internal-feed-operations.ps1
index 92b77347d99..c282d3ae403 100644
--- a/eng/common/internal-feed-operations.ps1
+++ b/eng/common/internal-feed-operations.ps1
@@ -26,7 +26,7 @@ function SetupCredProvider {
   $url = 'https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1'
   
   Write-Host "Writing the contents of 'installcredprovider.ps1' locally..."
-  Invoke-WebRequest $url -OutFile installcredprovider.ps1
+  Invoke-WebRequest $url -UseBasicParsing -OutFile installcredprovider.ps1
   
   Write-Host 'Installing plugin...'
   .\installcredprovider.ps1 -Force
diff --git a/eng/common/post-build/nuget-verification.ps1 b/eng/common/post-build/nuget-verification.ps1
index ac5c69ffcac..eea88e653c9 100644
--- a/eng/common/post-build/nuget-verification.ps1
+++ b/eng/common/post-build/nuget-verification.ps1
@@ -65,7 +65,7 @@ if ($NuGetExePath) {
         Write-Host "Downloading nuget.exe from $nugetExeUrl..."
         $ProgressPreference = 'SilentlyContinue'
         try {
-            Invoke-WebRequest $nugetExeUrl -OutFile $downloadedNuGetExe
+            Invoke-WebRequest $nugetExeUrl -UseBasicParsing -OutFile $downloadedNuGetExe
             $ProgressPreference = 'Continue'
         } catch {
             $ProgressPreference = 'Continue'
diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1
index 1eda208a3bb..48e55598bdd 100644
--- a/eng/common/post-build/publish-using-darc.ps1
+++ b/eng/common/post-build/publish-using-darc.ps1
@@ -7,7 +7,9 @@ param(
   [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters,
   [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters,
   [Parameter(Mandatory=$false)][string] $RequireDefaultChannels,
-  [Parameter(Mandatory=$false)][string] $SkipAssetsPublishing
+  [Parameter(Mandatory=$false)][string] $SkipAssetsPublishing,
+  [Parameter(Mandatory=$false)][string] $runtimeSourceFeed,
+  [Parameter(Mandatory=$false)][string] $runtimeSourceFeedKey
 )
 
 try {
diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1
index b7fc1959150..472d5bb562c 100644
--- a/eng/common/post-build/redact-logs.ps1
+++ b/eng/common/post-build/redact-logs.ps1
@@ -7,8 +7,9 @@ param(
   # File with strings to redact - separated by newlines.
   #  For comments start the line with '# ' - such lines are ignored 
   [Parameter(Mandatory=$false)][string] $TokensFilePath,
-  [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact
-)
+  [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact,
+  [Parameter(Mandatory=$false)][string] $runtimeSourceFeed,
+  [Parameter(Mandatory=$false)][string] $runtimeSourceFeedKey)
 
 try {
   $ErrorActionPreference = 'Stop'
diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1
index b62e132d32a..b64b66a6275 100644
--- a/eng/common/sdk-task.ps1
+++ b/eng/common/sdk-task.ps1
@@ -9,6 +9,8 @@ Param(
   [switch][Alias('nobl')]$excludeCIBinaryLog,
   [switch]$noWarnAsError,
   [switch] $help,
+  [string] $runtimeSourceFeed = '',
+  [string] $runtimeSourceFeedKey = '',
   [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
 )
 
@@ -68,7 +70,7 @@ try {
       $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty
     }
     if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) {
-      $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.13.0" -MemberType NoteProperty
+      $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "18.0.0" -MemberType NoteProperty
     }
     if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") {
         $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 06b44de7870..bef4affa4a4 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -277,7 +277,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) {
 
     Retry({
       Write-Host "GET $uri"
-      Invoke-WebRequest $uri -OutFile $installScript
+      Invoke-WebRequest $uri -UseBasicParsing -OutFile $installScript
     })
   }
 
@@ -394,8 +394,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
 
   # If the version of msbuild is going to be xcopied,
   # use this version. Version matches a package here:
-  # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/17.13.0
-  $defaultXCopyMSBuildVersion = '17.13.0'
+  # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/18.0.0
+  $defaultXCopyMSBuildVersion = '18.0.0'
 
   if (!$vsRequirements) {
     if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') {
@@ -510,7 +510,7 @@ function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) {
     Write-Host "Downloading $packageName $packageVersion"
     $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
     Retry({
-      Invoke-WebRequest "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/flat2/$packageName/$packageVersion/$packageName.$packageVersion.nupkg" -OutFile $packagePath
+      Invoke-WebRequest "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/flat2/$packageName/$packageVersion/$packageName.$packageVersion.nupkg" -UseBasicParsing -OutFile $packagePath
     })
 
     if (!(Test-Path $packagePath)) {
@@ -556,7 +556,7 @@ function LocateVisualStudio([object]$vsRequirements = $null){
     Write-Host "Downloading vswhere $vswhereVersion"
     $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
     Retry({
-      Invoke-WebRequest "https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/vswhere/$vswhereVersion/vswhere.exe" -OutFile $vswhereExe
+      Invoke-WebRequest "https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/vswhere/$vswhereVersion/vswhere.exe" -UseBasicParsing -OutFile $vswhereExe
     })
   }
 
diff --git a/global.json b/global.json
index f51b87f8296..d1f99541d20 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.100-rc.1.25451.107",
+    "version": "10.0.100",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.100-rc.1.25451.107",
+    "dotnet": "10.0.100",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25555.6",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25611.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From d506d825cd8a64034b7fdecfe7a4abbbabbe3cf4 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 15 Dec 2025 11:33:38 +0100
Subject: [PATCH 061/102] Update dependencies from
 https://github.com/dotnet/arcade build 20251212.5 (#19158)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25611.1 -> To Version 10.0.0-beta.25612.5

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props |  2 +-
 eng/Version.Details.xml   |  4 ++--
 eng/common/tools.ps1      | 13 ++++++++++---
 global.json               |  2 +-
 4 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 420cac279e9..05d35643ba6 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25611.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25612.5</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 1c0e55a0165..b7e29891a96 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25611.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25612.5">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>9f286ddee40065ea225611cb43ab0415e48994c2</Sha>
+      <Sha>55631983c8583162122687fddeac13424c1e40a8</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index bef4affa4a4..049fe6db994 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -560,19 +560,26 @@ function LocateVisualStudio([object]$vsRequirements = $null){
     })
   }
 
-  if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs }
+  if (!$vsRequirements) {
+    if (Get-Member -InputObject $GlobalJson.tools -Name 'vs' -ErrorAction SilentlyContinue) {
+      $vsRequirements = $GlobalJson.tools.vs
+    } else {
+      $vsRequirements = $null
+    }
+  }
+
   $args = @('-latest', '-format', 'json', '-requires', 'Microsoft.Component.MSBuild', '-products', '*')
 
   if (!$excludePrereleaseVS) {
     $args += '-prerelease'
   }
 
-  if (Get-Member -InputObject $vsRequirements -Name 'version') {
+  if ($vsRequirements -and (Get-Member -InputObject $vsRequirements -Name 'version' -ErrorAction SilentlyContinue)) {
     $args += '-version'
     $args += $vsRequirements.version
   }
 
-  if (Get-Member -InputObject $vsRequirements -Name 'components') {
+  if ($vsRequirements -and (Get-Member -InputObject $vsRequirements -Name 'components' -ErrorAction SilentlyContinue)) {
     foreach ($component in $vsRequirements.components) {
       $args += '-requires'
       $args += $component
diff --git a/global.json b/global.json
index d1f99541d20..7de8ae8def2 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25611.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25612.5",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From a84178b34b386179d48c38ab02d9510a0bdc5bea Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Tue, 25 Nov 2025 17:15:56 +0100
Subject: [PATCH 062/102] Skip tests using nuget from signed builds  (#19111)

* Skip tests using nuget from signed builds (network isolation need for signed builds)

* Apply suggestions from code review

* Apply suggestion from @T-Gro

* Apply suggestion from @T-Gro
---
 .../DependencyManagerInteractiveTests.fs      | 10 ++---
 .../FSharpScriptTests.fs                      | 22 +++++-----
 .../ProjectAnalysisTests.fs                   |  2 +-
 tests/FSharp.Test.Utilities/Utilities.fs      | 23 ++++++++++
 tests/fsharp/tests.fs                         | 42 +++++++++----------
 5 files changed, 61 insertions(+), 38 deletions(-)

diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs
index 819fe92ec2c..a0163a3f637 100644
--- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs
+++ b/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs
@@ -39,7 +39,7 @@ type DependencyManagerInteractiveTests() =
     let getErrors ((_value: Result<FsiValue option, exn>), (errors: FSharpDiagnostic[])) =
         errors
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``SmokeTest - #r nuget``() =
         let text = """
 #r @"nuget:Newtonsoft.Json, Version=9.0.1"
@@ -50,7 +50,7 @@ type DependencyManagerInteractiveTests() =
         Assert.Equal(typeof<int>, value.ReflectionType)
         Assert.Equal(0, value.ReflectionValue :?> int)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``SmokeTest - #r nuget package not found``() =
         let text = """
 #r @"nuget:System.Collections.Immutable.DoesNotExist, version=1.5.0"
@@ -259,7 +259,7 @@ TorchSharp.Tensor.LongTensor.From([| 0L .. 100L |]).Device
         ()
 
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Use Dependency Manager to restore packages with native dependencies, build and run script that depends on the results``() =
         // Skip test on arm64, because there is not an arm64 native library
         if RuntimeInformation.ProcessArchitecture = Architecture.Arm64 then
@@ -358,7 +358,7 @@ printfn ""%A"" result
         let value = opt.Value
         Assert.Equal(123, value.ReflectionValue :?> int32)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Use NativeResolver to resolve native dlls.``() =
         // Skip test on arm64, because there is not an arm64 native library
         if RuntimeInformation.ProcessArchitecture = Architecture.Arm64 then
@@ -442,7 +442,7 @@ printfn ""%A"" result
         let value = opt.Value
         Assert.Equal(123, value.ReflectionValue :?> int32)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Use AssemblyResolver to resolve assemblies``() =
         // Skip test on arm64, because there is not an arm64 native library
         if RuntimeInformation.ProcessArchitecture = Architecture.Arm64 then
diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs
index e53dc45f877..34faed6114d 100644
--- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs
+++ b/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs
@@ -168,7 +168,7 @@ stacktype.Name = "Stack"
         | Error(ex) -> Assert.IsAssignableFrom(typeof<FsiCompilationException>, ex)
 
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Script using System.Configuration succeeds``() =
         use script = new FSharpScript()
         let result, errors = script.Eval("""
@@ -246,7 +246,7 @@ System.Configuration.ConfigurationManager.AppSettings.Item "Environment" <- "LOC
 
 /// Native dll resolution is not implemented on desktop
 #if NETSTANDARD
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``ML - use assembly with native dependencies``() =
         // Skip test on arm64, because there is not an arm64 native library
         if RuntimeInformation.ProcessArchitecture = Architecture.Arm64 then
@@ -304,7 +304,7 @@ printfn "{@"%A"}" result
         | Ok(_) -> Assert.False(true, "expected a failure")
         | Error(ex) -> Assert.IsAssignableFrom(typeof<FsiCompilationException>, ex)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Eval script with invalid PackageName should fail immediately``() =
         use capture = new TestConsole.ExecutionCapture()
         use script = new FSharpScript(additionalArgs=[| |])
@@ -316,7 +316,7 @@ printfn "{@"%A"}" result
         Assert.True( errors |> Seq.exists (fun error -> error.Message.Contains("error NU1101:")), "Expect to error containing 'error NU1101:'")
         Assert.True( errors |> Seq.exists (fun error -> error.Message.Contains("FSharp.Really.Not.A.Package")), "Expect to error containing 'FSharp.Really.Not.A.Package'")
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Eval script with invalid PackageName should fail immediately and resolve one time only``() =
         use capture = new TestConsole.ExecutionCapture()
         use script = new FSharpScript(additionalArgs=[| |])
@@ -330,7 +330,7 @@ printfn "{@"%A"}" result
         Assert.Equal(1, (errors |> Seq.filter (fun error -> error.Message.Contains("FSharp.Really.Not.A.Package")) |> Seq.length))
         Assert.Equal(1, (errors |> Seq.filter (fun error -> error.Message.Contains("FSharp.Really.Not.Another.Package")) |> Seq.length))
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``FsharpPlus - report errors``() =
         let code = """
 #i "nuget:https://api.nuget.org/v3/index.json"
@@ -366,7 +366,7 @@ printTable [{|Age = 15; Weight = 88; Name = "Blahboolahboogaloo"|}]
         let value = opt.Value
         Assert.Equal(1, downcast value.ReflectionValue)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``ML - use assembly with ref dependencies``() =
         let code = """
 #r "nuget:Microsoft.ML.OnnxTransformer,1.4.0"
@@ -383,7 +383,7 @@ tInput.Length
         let value = opt.Value
         Assert.Equal(4L, downcast value.ReflectionValue)
 
-    [<FSharp.Test.FactForNETCOREAPP>] // usessdkrefs is not a valid option for desktop compiler
+    [<FSharp.Test.FactForNETCOREAPPSkipOnSignedBuild>] // usessdkrefs is not a valid option for desktop compiler
     member _.``ML - use assembly with ref dependencies and without refing SMemory``() =
         let code = """
 #r "nuget:Microsoft.ML.OnnxTransformer,1.4.0"
@@ -399,7 +399,7 @@ tInput.Length
         let value = opt.Value
         Assert.Equal(4L, downcast value.ReflectionValue)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``System.Device.Gpio - Ensure we reference the runtime version of the assembly``() =
         let code = """
 #r "nuget:System.Device.Gpio, 1.0.0"
@@ -512,7 +512,7 @@ let x =
         Assert.False(foundInner)
 
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Script with nuget package that yields out of order dependencies works correctly``() =
         // regression test for: https://github.com/dotnet/fsharp/issues/9217
         let code = """
@@ -535,7 +535,7 @@ test pfloat "1.234"
         let value = opt.Value
         Assert.True(true = downcast value.ReflectionValue)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     member _.``Nuget package with method duplicates differing only in generic arity``() =
         // regression test for: https://github.com/dotnet/fsharp/issues/17796
         // Was an internal error
@@ -549,7 +549,7 @@ let add (col:IServiceCollection) =
         let _value,diag = script.Eval(code)
         Assert.Empty(diag)
 
-    [<Theory>]
+    [<FSharp.Test.TheorySkipOnSignedBuild>]
     [<InlineData("""#r "nuget:envdte,usepackagetargets=true" """, true, "")>]
     [<InlineData("""#r "nuget:envdte,usepackagetargets=false" """, true, "")>]
     [<InlineData("""#r "nuget:envdte,usepackagetargets=invalidvalue" """, false, "input.fsx (1,1)-(1,49) interactive error Invalid value for boolean 'usepackagetargets', valid values: true or false")>]
diff --git a/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs b/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs
index c4261eaeab3..789bd16d6d7 100644
--- a/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs
+++ b/tests/FSharp.Compiler.Service.Tests/ProjectAnalysisTests.fs
@@ -5807,7 +5807,7 @@ let checkContentAsScript content =
 [<Collection(nameof NotThreadSafeResourceCollection)>]
 module ScriptClosureCacheUse =    
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``References from #r nuget are included in script project options`` () =
         let checkResults = checkContentAsScript """
     #i "nuget:https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json"
diff --git a/tests/FSharp.Test.Utilities/Utilities.fs b/tests/FSharp.Test.Utilities/Utilities.fs
index 92b8c1dffa9..3a8a7ae487e 100644
--- a/tests/FSharp.Test.Utilities/Utilities.fs
+++ b/tests/FSharp.Test.Utilities/Utilities.fs
@@ -39,6 +39,29 @@ type FactForDESKTOPAttribute() =
         do base.Skip <- "NETCOREAPP is not supported runtime for this kind of test, it is intended for DESKTOP only"
     #endif
 
+module SignedBuildSkip =
+    let isSignedBuild = System.Environment.GetEnvironmentVariable("SIGNTYPE") = "Real"
+    let skipMessage = "Test skipped on signed builds due to NuGet package restore restrictions"
+    
+    let skipIfSigned (attr: #FactAttribute) =
+        if isSignedBuild then
+            attr.Skip <- skipMessage
+
+type FactSkipOnSignedBuildAttribute() as this =
+    inherit FactAttribute()
+    do SignedBuildSkip.skipIfSigned this
+
+type TheorySkipOnSignedBuildAttribute() as this =
+    inherit TheoryAttribute()
+    do SignedBuildSkip.skipIfSigned this
+
+type FactForNETCOREAPPSkipOnSignedBuildAttribute() as this =
+    inherit FactAttribute()
+    do SignedBuildSkip.skipIfSigned this
+    #if !NETCOREAPP    
+    do base.Skip <- "Only NETCOREAPP is supported runtime for this kind of test."
+    #endif
+
 // This file mimics how Roslyn handles their compilation references for compilation testing
 module Utilities =
 
diff --git a/tests/fsharp/tests.fs b/tests/fsharp/tests.fs
index c8cbfdab257..9147932627e 100644
--- a/tests/fsharp/tests.fs
+++ b/tests/fsharp/tests.fs
@@ -627,46 +627,46 @@ module CoreTests =
         | "" -> ()
         | diffs -> failwithf "'%s' and '%s' differ; %A" diffFileErr expectedFileErr diffs
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing`` () =
          runPrintingTest "--multiemit- --debug+" "output"
 
     // F# 5.0 changed some things printing output
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-langversion47`` () =
          runPrintingTest "--langversion:4.7" "output.47"
 
     // Output should not change with optimization off
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-optimizeoff`` () =
          runPrintingTest "--multiemit- --debug+ --optimize-" "output"
 
     // Legacy one-dynamic-assembly emit is the default for .NET Framework, which these tests are using
     // Turning that off enables multi-assembly-emit.  The printing test is useful for testing multi-assembly-emit
     // as it feeds in many incremental fragments into stdin of the FSI process.
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-multiemit`` () =
          runPrintingTest "--multiemit+ --debug+" "output.multiemit"
 
     // Multi-assembly-emit establishes some slightly different rules regarding internals, and this
     // needs to be tested with optimizations off.  The output should not change.
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-multiemit-optimizeoff`` () =
          runPrintingTest "--multiemit+ --debug+ --optimize-" "output.multiemit"
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-width-1000`` () =
          runPrintingTest "--use:preludePrintSize1000.fsx" "output.1000"
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-width-200`` () =  
          runPrintingTest "--use:preludePrintSize200.fsx" "output.200"
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-off`` () =
          runPrintingTest "--use:preludeShowDeclarationValuesFalse.fsx" "output.off"
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``printing-quiet`` () =
          runPrintingTest "--quiet" "output.quiet"
 
@@ -1645,7 +1645,7 @@ module RegressionTests =
     [<Fact>]
     let ``12383-FSC_OPTIMIZED`` () = singleTestBuildAndRun "regression/12383" FSC_OPTIMIZED
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``13219-bug-FSI`` () = singleTestBuildAndRun "regression/13219" FSI
 
     [<Fact>]
@@ -1653,69 +1653,69 @@ module RegressionTests =
         let cfg = testConfig "regression/4715"
         fsc cfg "%s -o:test.exe --optimize+" cfg.fsc_flags ["date.fs"; "env.fs"; "main.fs"]
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``multi-package-type-provider-test-FSI`` () = singleTestBuildAndRun "regression/13710" FSI
 
 #if NETCOREAPP
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fsc.dll 64-bit fsc.dll .NET SDK generating optimized code`` () =
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:portable --define:PORTABLE_PDB" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY true)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fsc.dll 64-bit .NET SDK generating debug code`` () =
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:portable --define:PORTABLE_PDB" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY false)
 
 #else
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fsc.exe 32-bit .NET Framework generating optimized code, portable PDB`` () =
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:portable --define:PORTABLE_PDB" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY true)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fsc.exe 32-bit .NET Framework generating optimized code, full PDB`` () =
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:full" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY true)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fsc.exe 32-bit .NET Framework generating debug code portable PDB`` () =
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:portable --define:PORTABLE_PDB" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY false)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fsc.exe 32-bit .NET Framework generating debug code, full PDB`` () =
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:full" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY false)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fscAnyCpu.exe 64-bit .NET Framework generating optimized code, portable PDB`` () = 
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with FSC = cfg.FSCANYCPU }
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:portable --define:PORTABLE_PDB" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY true)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``Large inputs 12322 fscAnyCpu.exe 64-bit .NET Framework generating optimized code, full PDB`` () = 
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with FSC = cfg.FSCANYCPU }
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:full " }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY true)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``12322 fscAnyCpu.exe 64-bit .NET Framework generating debug code, portable PDB`` () = 
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with FSC = cfg.FSCANYCPU }
         let cfg = { cfg with fsc_flags = cfg.fsc_flags + " --debug:portable --define:PORTABLE_PDB" }
         singleTestBuildAndRunAux cfg (FSC_BUILDONLY false)
 
-    [<Fact>]
+    [<FSharp.Test.FactSkipOnSignedBuild>]
     let ``12322 fscAnyCpu.exe 64-bit .NET Framework generating debug code, full PDB`` () = 
         let cfg = testConfig "regression/12322"
         let cfg = { cfg with FSC = cfg.FSCANYCPU }

From ed5479a1bf1b07f859a1da776dfe12ad87f80b6a Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 16 Dec 2025 09:35:31 +0000
Subject: [PATCH 063/102] Update dependencies from
 https://github.com/dotnet/dotnet build 294703 (#19164)

No dependency updates to commit

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Tomas Grosup <Tomas.Grosup@gmail.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index b7e29891a96..007360275fd 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="18f6e60aa4755c2be56b2d45165a135d64d4f710" BarId="291651" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="5bc36fd2ff085cd194a443a21eae620dfe13130a" BarId="294703" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index 4aad829b2b1..3a87367c1b8 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -18,7 +18,7 @@
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>102</FSBuildVersion>
+    <FSBuildVersion>103</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From c4ccf58cd107213374237e3910288d4b6b183abb Mon Sep 17 00:00:00 2001
From: Adam Boniecki <20281641+abonie@users.noreply.github.com>
Date: Tue, 16 Dec 2025 13:25:01 +0100
Subject: [PATCH 064/102] Update image to vs2026 in azdo pipeline (#19166)

---
 azure-pipelines.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 09783884c3f..41180a59d7c 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -112,7 +112,7 @@ extends:
           - job: Full_Signed
             pool:
               name: NetCore1ESPool-Svc-Internal
-              image: windows.vs2022preview.amd64
+              image: windows.vs2026preview.scout.amd64
             timeoutInMinutes: 300
             templateContext:
               mb:

From 5ed289e0422ba65732950022eedc8c8010f956a7 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Wed, 31 Dec 2025 12:23:04 +0100
Subject: [PATCH 065/102] Update dependencies from
 https://github.com/dotnet/arcade build 20251226.5 (#19180)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25612.5 -> To Version 10.0.0-beta.25626.5

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 05d35643ba6..be07d9b8921 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25612.5</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25626.5</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 007360275fd..1fdf89af7f3 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25612.5">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25626.5">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>55631983c8583162122687fddeac13424c1e40a8</Sha>
+      <Sha>d8dca0b41b903e7182e64543773390b969dab96b</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 7de8ae8def2..3765500e7cb 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.100",
+    "version": "10.0.101",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.100",
+    "dotnet": "10.0.101",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25612.5",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25626.5",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 461ae6c81071eb8449808f00de651b381a6e592c Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 6 Jan 2026 11:41:03 +0100
Subject: [PATCH 066/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260105.2 (#19192)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.25626.5 -> To Version 10.0.0-beta.26055.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index be07d9b8921..8ee82ea78b1 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.25626.5</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26055.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 1fdf89af7f3..24dee498f1e 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.25626.5">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26055.2">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>d8dca0b41b903e7182e64543773390b969dab96b</Sha>
+      <Sha>a3f5c45f6be2f2959069f69ece11ae8daa880124</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 3765500e7cb..cb1b2f0706d 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25626.5",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26055.2",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 743e1a61b4692ae1dd811b0b4dbf1e5478266700 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 12 Jan 2026 12:16:23 +0100
Subject: [PATCH 067/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260107.1 (#19198)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26055.2 -> To Version 10.0.0-beta.26057.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 8ee82ea78b1..860be90cf5a 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26055.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26057.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 24dee498f1e..3aa2d7e0e0c 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26055.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26057.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>a3f5c45f6be2f2959069f69ece11ae8daa880124</Sha>
+      <Sha>13323fc374efc77953ec0ac9a0927da69f14a584</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index cb1b2f0706d..d545d989428 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26055.2",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26057.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From b417a2032b47d94a2be0641d533ce150d9121b01 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 13 Jan 2026 13:51:48 +0100
Subject: [PATCH 068/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260112.3 (#19207)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26057.1 -> To Version 10.0.0-beta.26062.3

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                              | 2 +-
 eng/Version.Details.xml                                | 4 ++--
 eng/common/core-templates/job/publish-build-assets.yml | 2 +-
 eng/common/core-templates/post-build/post-build.yml    | 4 ++--
 eng/common/templates/variables/pool-providers.yml      | 2 +-
 global.json                                            | 2 +-
 6 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 860be90cf5a..f938c8b332a 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26057.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26062.3</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 3aa2d7e0e0c..8adde7af990 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26057.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26062.3">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>13323fc374efc77953ec0ac9a0927da69f14a584</Sha>
+      <Sha>9f518f2be968c4c0102c2e3f8c793c5b7f28b731</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index 3437087c80f..b955fac6e13 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -80,7 +80,7 @@ jobs:
     # If it's not devdiv, it's dnceng
     ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
       name: NetCore1ESPool-Publishing-Internal
-      image: windows.vs2019.amd64
+      image: windows.vs2022.amd64
       os: windows
   steps:
   - ${{ if eq(parameters.is1ESPipeline, '') }}:
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index 9423d71ca3a..b942a79ef02 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -293,11 +293,11 @@ stages:
         ${{ else }}:
           ${{ if eq(parameters.is1ESPipeline, true) }}:          
             name: NetCore1ESPool-Publishing-Internal
-            image: windows.vs2019.amd64
+            image: windows.vs2022.amd64
             os: windows
           ${{ else }}:
             name: NetCore1ESPool-Publishing-Internal
-            demands: ImageOverride -equals windows.vs2019.amd64          
+            demands: ImageOverride -equals windows.vs2022.amd64          
       steps:
         - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
           parameters:
diff --git a/eng/common/templates/variables/pool-providers.yml b/eng/common/templates/variables/pool-providers.yml
index e0b19c14a07..18693ea120d 100644
--- a/eng/common/templates/variables/pool-providers.yml
+++ b/eng/common/templates/variables/pool-providers.yml
@@ -23,7 +23,7 @@
 #
 #        pool:
 #           name: $(DncEngInternalBuildPool)
-#           demands: ImageOverride -equals windows.vs2019.amd64
+#           demands: ImageOverride -equals windows.vs2022.amd64
 variables:
   - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
     - template: /eng/common/templates-official/variables/pool-providers.yml
diff --git a/global.json b/global.json
index d545d989428..8159278ab80 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26057.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26062.3",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 660af4d19f36e039680697257cff8cae93632b83 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 23 Jan 2026 10:22:18 +0100
Subject: [PATCH 069/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19239)

* Backflow from https://github.com/dotnet/dotnet / 3633524 build 298455

[[ commit created by automation ]]

* Update dependencies

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 8adde7af990..3b2bdda5b63 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="5bc36fd2ff085cd194a443a21eae620dfe13130a" BarId="294703" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="3633524e6b0b93b2b43f66b663b5532e32d70136" BarId="298455" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index 3a87367c1b8..0c74aec7ff9 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -18,7 +18,7 @@
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>103</FSBuildVersion>
+    <FSBuildVersion>104</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From cf8c7421faa49e7c9a2132dce83832f9f4cbbbd7 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 2 Feb 2026 14:21:03 +0100
Subject: [PATCH 070/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#19245)

* Update dependencies from https://github.com/dotnet/arcade build 20260116.3
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26062.3 -> To Version 10.0.0-beta.26066.3

* Update dependencies from https://github.com/dotnet/arcade build 20260130.4
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26062.3 -> To Version 10.0.0-beta.26080.4

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                      | 2 +-
 eng/Version.Details.xml                        | 4 ++--
 eng/common/core-templates/job/source-build.yml | 8 ++++----
 global.json                                    | 2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index f938c8b332a..f0fa4804ad8 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26062.3</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26080.4</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 3b2bdda5b63..b5299f6ec55 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26062.3">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26080.4">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>9f518f2be968c4c0102c2e3f8c793c5b7f28b731</Sha>
+      <Sha>b0f891cf7c1febc0ebbae7dd787f8a0b4c0cbc95</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml
index d805d5faeb9..4cb769473f7 100644
--- a/eng/common/core-templates/job/source-build.yml
+++ b/eng/common/core-templates/job/source-build.yml
@@ -60,19 +60,19 @@ jobs:
       pool:
         ${{ if eq(variables['System.TeamProject'], 'public') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
-          demands: ImageOverride -equals build.ubuntu.2004.amd64
+          demands: ImageOverride -equals Azure-Linux-3-Amd64-Public
         ${{ if eq(variables['System.TeamProject'], 'internal') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
-          image: 1es-mariner-2
+          image: Azure-Linux-3-Amd64
           os: linux
     ${{ else }}:
       pool:
         ${{ if eq(variables['System.TeamProject'], 'public') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
-          demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open
+          demands: ImageOverride -equals Azure-Linux-3-Amd64-Public
         ${{ if eq(variables['System.TeamProject'], 'internal') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
-          demands: ImageOverride -equals Build.Ubuntu.2204.Amd64
+          demands: ImageOverride -equals Azure-Linux-3-Amd64
   ${{ if ne(parameters.platform.pool, '') }}:
     pool: ${{ parameters.platform.pool }}
 
diff --git a/global.json b/global.json
index 8159278ab80..02bb24aecdb 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26062.3",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26080.4",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From ebb6639590221ea38fb41e043eed70441fcb0179 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 5 Feb 2026 14:19:07 +0000
Subject: [PATCH 071/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260204.6 (#19257)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26080.4 -> To Version 10.0.0-beta.26104.6

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index f0fa4804ad8..1585be78276 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26080.4</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26104.6</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index b5299f6ec55..b4907634357 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26080.4">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26104.6">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>b0f891cf7c1febc0ebbae7dd787f8a0b4c0cbc95</Sha>
+      <Sha>c45c9fbade8b6406d22f8100575a102a3a2c053f</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 02bb24aecdb..0b2508b5551 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26080.4",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26104.6",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From bc3a758c77c09160f919cf785350bf5b6f1d3df7 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Wed, 11 Feb 2026 18:37:43 +0100
Subject: [PATCH 072/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#19261)

* Update dependencies from https://github.com/dotnet/arcade build 20260206.4
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26104.6 -> To Version 10.0.0-beta.26106.4

* Update dependencies from https://github.com/dotnet/arcade build 20260210.1
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26104.6 -> To Version 10.0.0-beta.26110.1

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                      | 2 +-
 eng/Version.Details.xml                        | 4 ++--
 eng/common/core-templates/job/source-build.yml | 8 ++++----
 global.json                                    | 2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 1585be78276..23b6b3a9602 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26104.6</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26110.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index b4907634357..49d0cd8999b 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26104.6">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26110.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>c45c9fbade8b6406d22f8100575a102a3a2c053f</Sha>
+      <Sha>4bf37ce670528cf2aef4d9b1cd892554b1b02d9d</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml
index 4cb769473f7..1997c2ae00d 100644
--- a/eng/common/core-templates/job/source-build.yml
+++ b/eng/common/core-templates/job/source-build.yml
@@ -60,19 +60,19 @@ jobs:
       pool:
         ${{ if eq(variables['System.TeamProject'], 'public') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
-          demands: ImageOverride -equals Azure-Linux-3-Amd64-Public
+          demands: ImageOverride -equals build.azurelinux.3.amd64.open
         ${{ if eq(variables['System.TeamProject'], 'internal') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
-          image: Azure-Linux-3-Amd64
+          image: build.azurelinux.3.amd64
           os: linux
     ${{ else }}:
       pool:
         ${{ if eq(variables['System.TeamProject'], 'public') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
-          demands: ImageOverride -equals Azure-Linux-3-Amd64-Public
+          demands: ImageOverride -equals build.azurelinux.3.amd64.open
         ${{ if eq(variables['System.TeamProject'], 'internal') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
-          demands: ImageOverride -equals Azure-Linux-3-Amd64
+          demands: ImageOverride -equals build.azurelinux.3.amd64
   ${{ if ne(parameters.platform.pool, '') }}:
     pool: ${{ parameters.platform.pool }}
 
diff --git a/global.json b/global.json
index 0b2508b5551..857848028ae 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26104.6",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26110.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 1335e686764472bd9bbfa50a1e637497950e2b14 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 20 Feb 2026 11:40:46 +0000
Subject: [PATCH 073/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#19327)

* Update dependencies from https://github.com/dotnet/arcade build 20260217.6
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26110.1 -> To Version 10.0.0-beta.26117.6

* Update dependencies from https://github.com/dotnet/arcade build 20260219.2
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26110.1 -> To Version 10.0.0-beta.26119.2

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props               |  2 +-
 eng/Version.Details.xml                 |  4 +--
 eng/common/templates/steps/vmr-sync.yml | 21 --------------
 eng/common/templates/vmr-build-pr.yml   |  1 +
 eng/common/tools.ps1                    |  5 ++++
 eng/common/tools.sh                     |  8 +++++-
 eng/common/vmr-sync.ps1                 | 38 +++++++++++++++++++++----
 eng/common/vmr-sync.sh                  | 30 +++++++++++++++----
 global.json                             |  2 +-
 9 files changed, 74 insertions(+), 37 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 23b6b3a9602..7d9eb5924ba 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26110.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26119.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 49d0cd8999b..eb829a9426f 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26110.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26119.2">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>4bf37ce670528cf2aef4d9b1cd892554b1b02d9d</Sha>
+      <Sha>062ea8ab27da7dbb7d4f630bd50aeab94c9ffb93</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/templates/steps/vmr-sync.yml b/eng/common/templates/steps/vmr-sync.yml
index 599afb6186b..eb619c50268 100644
--- a/eng/common/templates/steps/vmr-sync.yml
+++ b/eng/common/templates/steps/vmr-sync.yml
@@ -38,27 +38,6 @@ steps:
   displayName: Label PR commit
   workingDirectory: $(Agent.BuildDirectory)/repo
 
-- script: |
-    vmr_sha=$(grep -oP '(?<=Sha=")[^"]*' $(Agent.BuildDirectory)/repo/eng/Version.Details.xml)
-    echo "##vso[task.setvariable variable=vmr_sha]$vmr_sha"
-  displayName: Obtain the vmr sha from Version.Details.xml (Unix)
-  condition: ne(variables['Agent.OS'], 'Windows_NT')
-  workingDirectory: $(Agent.BuildDirectory)/repo
-
-- powershell: |
-    [xml]$xml = Get-Content -Path $(Agent.BuildDirectory)/repo/eng/Version.Details.xml
-    $vmr_sha = $xml.SelectSingleNode("//Source").Sha
-    Write-Output "##vso[task.setvariable variable=vmr_sha]$vmr_sha"
-  displayName: Obtain the vmr sha from Version.Details.xml (Windows)
-  condition: eq(variables['Agent.OS'], 'Windows_NT')
-  workingDirectory: $(Agent.BuildDirectory)/repo
-
-- script: |
-    git fetch --all
-    git checkout $(vmr_sha)
-  displayName: Checkout VMR at correct sha for repo flow
-  workingDirectory: ${{ parameters.vmrPath }}
-
 - script: |
     git config --global user.name "dotnet-maestro[bot]"
     git config --global user.email "dotnet-maestro[bot]@users.noreply.github.com"
diff --git a/eng/common/templates/vmr-build-pr.yml b/eng/common/templates/vmr-build-pr.yml
index ce3c29a62fa..2f3694fa132 100644
--- a/eng/common/templates/vmr-build-pr.yml
+++ b/eng/common/templates/vmr-build-pr.yml
@@ -34,6 +34,7 @@ resources:
     type: github
     name: dotnet/dotnet
     endpoint: dotnet
+    ref: refs/heads/main # Set to whatever VMR branch the PR build should insert into
 
 stages:
 - template: /eng/pipelines/templates/stages/vmr-build.yml@vmr
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 049fe6db994..977a2d4b103 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -824,6 +824,11 @@ function MSBuild-Core() {
 
   $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse /p:ContinuousIntegrationBuild=$ci"
 
+  # Add -mt flag for MSBuild multithreaded mode if enabled via environment variable
+  if ($env:MSBUILD_MT_ENABLED -eq "1") {
+    $cmdArgs += ' -mt'
+  }
+
   if ($warnAsError) {
     $cmdArgs += ' /warnaserror /p:TreatWarningsAsErrors=true'
   }
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index c1841c9dfd0..1b296f646c2 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -526,7 +526,13 @@ function MSBuild-Core {
     }
   }
 
-  RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@"
+  # Add -mt flag for MSBuild multithreaded mode if enabled via environment variable
+  local mt_switch=""
+  if [[ "${MSBUILD_MT_ENABLED:-}" == "1" ]]; then
+    mt_switch="-mt"
+  fi
+
+  RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch $mt_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@"
 }
 
 function GetDarc {
diff --git a/eng/common/vmr-sync.ps1 b/eng/common/vmr-sync.ps1
index 97302f3205b..b37992d91cf 100644
--- a/eng/common/vmr-sync.ps1
+++ b/eng/common/vmr-sync.ps1
@@ -103,12 +103,20 @@ Set-StrictMode -Version Latest
 Highlight 'Installing .NET, preparing the tooling..'
 . .\eng\common\tools.ps1
 $dotnetRoot = InitializeDotNetCli -install:$true
+$env:DOTNET_ROOT = $dotnetRoot
 $darc = Get-Darc
-$dotnet = "$dotnetRoot\dotnet.exe"
 
 Highlight "Starting the synchronization of VMR.."
 
 # Synchronize the VMR
+$versionDetailsPath = Resolve-Path (Join-Path $PSScriptRoot '..\Version.Details.xml') | Select-Object -ExpandProperty Path
+[xml]$versionDetails = Get-Content -Path $versionDetailsPath
+$repoName = $versionDetails.SelectSingleNode('//Source').Mapping
+if (-not $repoName) {
+  Fail "Failed to resolve repo mapping from $versionDetailsPath"
+  exit 1
+}
+
 $darcArgs = (
   "vmr", "forwardflow",
   "--tmp", $tmpDir,
@@ -130,9 +138,27 @@ if ($LASTEXITCODE -eq 0) {
   Highlight "Synchronization succeeded"
 }
 else {
-  Fail "Synchronization of repo to VMR failed!"
-  Fail "'$vmrDir' is left in its last state (re-run of this script will reset it)."
-  Fail "Please inspect the logs which contain path to the failing patch file (use -debugOutput to get all the details)."
-  Fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script."
-  exit 1
+  Highlight "Failed to flow code into the local VMR. Falling back to resetting the VMR to match repo contents..."
+  git -C $vmrDir reset --hard
+
+  $resetArgs = (
+    "vmr", "reset",
+    "${repoName}:HEAD",
+    "--vmr", $vmrDir,
+    "--tmp", $tmpDir,
+    "--additional-remotes", "${repoName}:${repoRoot}"
+  )
+
+  & "$darc" $resetArgs
+
+  if ($LASTEXITCODE -eq 0) {
+    Highlight "Successfully reset the VMR using 'darc vmr reset'"
+  }
+  else {
+    Fail "Synchronization of repo to VMR failed!"
+    Fail "'$vmrDir' is left in its last state (re-run of this script will reset it)."
+    Fail "Please inspect the logs which contain path to the failing patch file (use -debugOutput to get all the details)."
+    Fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script."
+    exit 1
+  }
 }
diff --git a/eng/common/vmr-sync.sh b/eng/common/vmr-sync.sh
index 44239e331c0..198caec59bd 100644
--- a/eng/common/vmr-sync.sh
+++ b/eng/common/vmr-sync.sh
@@ -186,6 +186,13 @@ fi
 
 # Synchronize the VMR
 
+version_details_path=$(cd "$scriptroot/.."; pwd -P)/Version.Details.xml
+repo_name=$(grep -m 1 '<Source ' "$version_details_path" | sed -n 's/.*Mapping="\([^"]*\)".*/\1/p')
+if [[ -z "$repo_name" ]]; then
+  fail "Failed to resolve repo mapping from $version_details_path"
+  exit 1
+fi
+
 export DOTNET_ROOT="$dotnetDir"
 
 "$darc_tool" vmr forwardflow \
@@ -199,9 +206,22 @@ export DOTNET_ROOT="$dotnetDir"
 if [[ $? == 0 ]]; then
   highlight "Synchronization succeeded"
 else
-  fail "Synchronization of repo to VMR failed!"
-  fail "'$vmr_dir' is left in its last state (re-run of this script will reset it)."
-  fail "Please inspect the logs which contain path to the failing patch file (use --debug to get all the details)."
-  fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script."
-  exit 1
+  highlight "Failed to flow code into the local VMR. Falling back to resetting the VMR to match repo contents..."
+  git -C "$vmr_dir" reset --hard
+
+  "$darc_tool" vmr reset \
+    "$repo_name:HEAD"                              \
+    --vmr "$vmr_dir"                               \
+    --tmp "$tmp_dir"                               \
+    --additional-remotes "$repo_name:$repo_root"
+
+  if [[ $? == 0 ]]; then
+    highlight "Successfully reset the VMR using 'darc vmr reset'"
+  else
+    fail "Synchronization of repo to VMR failed!"
+    fail "'$vmr_dir' is left in its last state (re-run of this script will reset it)."
+    fail "Please inspect the logs which contain path to the failing patch file (use --debug to get all the details)."
+    fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script."
+    exit 1
+  fi
 fi
diff --git a/global.json b/global.json
index 857848028ae..fda678391e7 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26110.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26119.2",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 78ecb437723d467e21a50708af5be7811b25e134 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 2 Mar 2026 17:29:40 +0100
Subject: [PATCH 074/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260223.2 (#19355)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26119.2 -> To Version 10.0.0-beta.26123.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 7d9eb5924ba..521e39617da 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26119.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26123.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index eb829a9426f..bcfa3038471 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26119.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26123.2">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>062ea8ab27da7dbb7d4f630bd50aeab94c9ffb93</Sha>
+      <Sha>4d898652733deb7dd274237ac06d27ee2ad85b36</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index fda678391e7..2fc9d9b231d 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26119.2",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26123.2",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 7c395932f37c6fdb8c8201bf3c7ae20973069677 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 13:57:00 +0100
Subject: [PATCH 075/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19381)

* Backflow from https://github.com/dotnet/dotnet / 12c3cef build 304097

[[ commit created by automation ]]

* Update dependencies from build 304097
No dependency updates to commit
[[ commit created by automation ]]

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index bcfa3038471..930a6850e2d 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="3633524e6b0b93b2b43f66b663b5532e32d70136" BarId="298455" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="12c3cef498be4615913f63b1ae356b475efa2488" BarId="304097" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index 0c74aec7ff9..827ff769373 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -18,7 +18,7 @@
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>104</FSBuildVersion>
+    <FSBuildVersion>106</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From 896260539e0e50ca39abdca907e5bc866e422c56 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 13:53:19 +0000
Subject: [PATCH 076/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260302.1 (#19382)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26123.2 -> To Version 10.0.0-beta.26152.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 521e39617da..ab1815f0105 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26123.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26152.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 930a6850e2d..948b28ceb33 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26123.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26152.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>4d898652733deb7dd274237ac06d27ee2ad85b36</Sha>
+      <Sha>bea9ad37b2362138e9019ee9e23577357403f806</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 2fc9d9b231d..629706093b7 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26123.2",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26152.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From a28447181cb479b828971aae5dfe2fc150d1e987 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 6 Mar 2026 23:01:56 +0100
Subject: [PATCH 077/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260303.3 (#19388)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26152.1 -> To Version 10.0.0-beta.26153.3

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                        | 2 +-
 eng/Version.Details.xml                          | 4 ++--
 eng/common/core-templates/steps/publish-logs.yml | 1 -
 global.json                                      | 2 +-
 4 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index ab1815f0105..1f6e5eb087c 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26152.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26153.3</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 948b28ceb33..b1af4134174 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26152.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26153.3">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>bea9ad37b2362138e9019ee9e23577357403f806</Sha>
+      <Sha>5976b9d3d62aaac137169c638af21096bd8e8fcd</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
index 5a927b4c7bc..a9ea99ba6aa 100644
--- a/eng/common/core-templates/steps/publish-logs.yml
+++ b/eng/common/core-templates/steps/publish-logs.yml
@@ -31,7 +31,6 @@ steps:
       -runtimeSourceFeed https://ci.dot.net/internal 
       -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
       '$(publishing-dnceng-devdiv-code-r-build-re)'
-      '$(MaestroAccessToken)'
       '$(dn-bot-all-orgs-artifact-feeds-rw)'
       '$(akams-client-id)'
       '$(microsoft-symbol-server-pat)'
diff --git a/global.json b/global.json
index 629706093b7..19b741a68dd 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26152.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26153.3",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From f97e900ee078ddebc7a6bccdcd744742c295db6c Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 10 Mar 2026 11:50:37 +0100
Subject: [PATCH 078/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260309.1 (#19412)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26153.3 -> To Version 10.0.0-beta.26159.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 68 +++++++++++++++++++--------------------
 eng/Version.Details.xml   |  4 +--
 global.json               |  6 ++--
 3 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 1f6e5eb087c..7cd4e77c639 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -5,19 +5,20 @@ This file should be imported by eng/Versions.props
 -->
 <Project>
   <PropertyGroup>
-    <!-- dotnet/msbuild dependencies -->
+    <!-- dotnet-arcade dependencies -->
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26159.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildFrameworkPackageVersion>
     <MicrosoftBuildTasksCorePackageVersion>18.0.0-preview-25476-03</MicrosoftBuildTasksCorePackageVersion>
     <MicrosoftBuildUtilitiesCorePackageVersion>18.0.0-preview-25476-03</MicrosoftBuildUtilitiesCorePackageVersion>
-    <!-- dotnet/runtime dependencies -->
-    <SystemCollectionsImmutablePackageVersion>9.0.0</SystemCollectionsImmutablePackageVersion>
-    <SystemComponentModelCompositionPackageVersion>9.0.0</SystemComponentModelCompositionPackageVersion>
-    <SystemCompositionPackageVersion>9.0.0</SystemCompositionPackageVersion>
-    <SystemDiagnosticsDiagnosticSourcePackageVersion>9.0.0</SystemDiagnosticsDiagnosticSourcePackageVersion>
-    <SystemReflectionMetadataPackageVersion>9.0.0</SystemReflectionMetadataPackageVersion>
-    <SystemThreadingTasksDataflowPackageVersion>9.0.0</SystemThreadingTasksDataflowPackageVersion>
-    <!-- dotnet/roslyn dependencies -->
+    <!-- dotnet-optimization dependencies -->
+    <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
+    <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
+    <optimizationwindows_ntarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntarm64MIBCRuntimePackageVersion>
+    <optimizationwindows_ntx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx64MIBCRuntimePackageVersion>
+    <optimizationwindows_ntx86MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx86MIBCRuntimePackageVersion>
+    <!-- dotnet-roslyn dependencies -->
     <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisPackageVersion>
     <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisCompilersPackageVersion>
     <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisCSharpPackageVersion>
@@ -26,30 +27,30 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
-    <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26153.3</MicrosoftDotNetArcadeSdkPackageVersion>
-    <!-- _git/dotnet-optimization dependencies -->
-    <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
-    <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
-    <optimizationwindows_ntarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntarm64MIBCRuntimePackageVersion>
-    <optimizationwindows_ntx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx64MIBCRuntimePackageVersion>
-    <optimizationwindows_ntx86MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx86MIBCRuntimePackageVersion>
+    <!-- dotnet-runtime dependencies -->
+    <SystemCollectionsImmutablePackageVersion>9.0.0</SystemCollectionsImmutablePackageVersion>
+    <SystemComponentModelCompositionPackageVersion>9.0.0</SystemComponentModelCompositionPackageVersion>
+    <SystemCompositionPackageVersion>9.0.0</SystemCompositionPackageVersion>
+    <SystemDiagnosticsDiagnosticSourcePackageVersion>9.0.0</SystemDiagnosticsDiagnosticSourcePackageVersion>
+    <SystemReflectionMetadataPackageVersion>9.0.0</SystemReflectionMetadataPackageVersion>
+    <SystemThreadingTasksDataflowPackageVersion>9.0.0</SystemThreadingTasksDataflowPackageVersion>
   </PropertyGroup>
   <!--Property group for alternate package version names-->
   <PropertyGroup>
-    <!-- dotnet/msbuild dependencies -->
+    <!-- dotnet-arcade dependencies -->
+    <MicrosoftDotNetArcadeSdkVersion>$(MicrosoftDotNetArcadeSdkPackageVersion)</MicrosoftDotNetArcadeSdkVersion>
+    <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildVersion>$(MicrosoftBuildPackageVersion)</MicrosoftBuildVersion>
     <MicrosoftBuildFrameworkVersion>$(MicrosoftBuildFrameworkPackageVersion)</MicrosoftBuildFrameworkVersion>
     <MicrosoftBuildTasksCoreVersion>$(MicrosoftBuildTasksCorePackageVersion)</MicrosoftBuildTasksCoreVersion>
     <MicrosoftBuildUtilitiesCoreVersion>$(MicrosoftBuildUtilitiesCorePackageVersion)</MicrosoftBuildUtilitiesCoreVersion>
-    <!-- dotnet/runtime dependencies -->
-    <SystemCollectionsImmutableVersion>$(SystemCollectionsImmutablePackageVersion)</SystemCollectionsImmutableVersion>
-    <SystemComponentModelCompositionVersion>$(SystemComponentModelCompositionPackageVersion)</SystemComponentModelCompositionVersion>
-    <SystemCompositionVersion>$(SystemCompositionPackageVersion)</SystemCompositionVersion>
-    <SystemDiagnosticsDiagnosticSourceVersion>$(SystemDiagnosticsDiagnosticSourcePackageVersion)</SystemDiagnosticsDiagnosticSourceVersion>
-    <SystemReflectionMetadataVersion>$(SystemReflectionMetadataPackageVersion)</SystemReflectionMetadataVersion>
-    <SystemThreadingTasksDataflowVersion>$(SystemThreadingTasksDataflowPackageVersion)</SystemThreadingTasksDataflowVersion>
-    <!-- dotnet/roslyn dependencies -->
+    <!-- dotnet-optimization dependencies -->
+    <optimizationlinuxarm64MIBCRuntimeVersion>$(optimizationlinuxarm64MIBCRuntimePackageVersion)</optimizationlinuxarm64MIBCRuntimeVersion>
+    <optimizationlinuxx64MIBCRuntimeVersion>$(optimizationlinuxx64MIBCRuntimePackageVersion)</optimizationlinuxx64MIBCRuntimeVersion>
+    <optimizationwindows_ntarm64MIBCRuntimeVersion>$(optimizationwindows_ntarm64MIBCRuntimePackageVersion)</optimizationwindows_ntarm64MIBCRuntimeVersion>
+    <optimizationwindows_ntx64MIBCRuntimeVersion>$(optimizationwindows_ntx64MIBCRuntimePackageVersion)</optimizationwindows_ntx64MIBCRuntimeVersion>
+    <optimizationwindows_ntx86MIBCRuntimeVersion>$(optimizationwindows_ntx86MIBCRuntimePackageVersion)</optimizationwindows_ntx86MIBCRuntimeVersion>
+    <!-- dotnet-roslyn dependencies -->
     <MicrosoftCodeAnalysisVersion>$(MicrosoftCodeAnalysisPackageVersion)</MicrosoftCodeAnalysisVersion>
     <MicrosoftCodeAnalysisCompilersVersion>$(MicrosoftCodeAnalysisCompilersPackageVersion)</MicrosoftCodeAnalysisCompilersVersion>
     <MicrosoftCodeAnalysisCSharpVersion>$(MicrosoftCodeAnalysisCSharpPackageVersion)</MicrosoftCodeAnalysisCSharpVersion>
@@ -58,13 +59,12 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisExternalAccessFSharpVersion>$(MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion)</MicrosoftCodeAnalysisExternalAccessFSharpVersion>
     <MicrosoftCodeAnalysisFeaturesVersion>$(MicrosoftCodeAnalysisFeaturesPackageVersion)</MicrosoftCodeAnalysisFeaturesVersion>
     <MicrosoftVisualStudioLanguageServicesVersion>$(MicrosoftVisualStudioLanguageServicesPackageVersion)</MicrosoftVisualStudioLanguageServicesVersion>
-    <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkVersion>$(MicrosoftDotNetArcadeSdkPackageVersion)</MicrosoftDotNetArcadeSdkVersion>
-    <!-- _git/dotnet-optimization dependencies -->
-    <optimizationlinuxarm64MIBCRuntimeVersion>$(optimizationlinuxarm64MIBCRuntimePackageVersion)</optimizationlinuxarm64MIBCRuntimeVersion>
-    <optimizationlinuxx64MIBCRuntimeVersion>$(optimizationlinuxx64MIBCRuntimePackageVersion)</optimizationlinuxx64MIBCRuntimeVersion>
-    <optimizationwindows_ntarm64MIBCRuntimeVersion>$(optimizationwindows_ntarm64MIBCRuntimePackageVersion)</optimizationwindows_ntarm64MIBCRuntimeVersion>
-    <optimizationwindows_ntx64MIBCRuntimeVersion>$(optimizationwindows_ntx64MIBCRuntimePackageVersion)</optimizationwindows_ntx64MIBCRuntimeVersion>
-    <optimizationwindows_ntx86MIBCRuntimeVersion>$(optimizationwindows_ntx86MIBCRuntimePackageVersion)</optimizationwindows_ntx86MIBCRuntimeVersion>
+    <!-- dotnet-runtime dependencies -->
+    <SystemCollectionsImmutableVersion>$(SystemCollectionsImmutablePackageVersion)</SystemCollectionsImmutableVersion>
+    <SystemComponentModelCompositionVersion>$(SystemComponentModelCompositionPackageVersion)</SystemComponentModelCompositionVersion>
+    <SystemCompositionVersion>$(SystemCompositionPackageVersion)</SystemCompositionVersion>
+    <SystemDiagnosticsDiagnosticSourceVersion>$(SystemDiagnosticsDiagnosticSourcePackageVersion)</SystemDiagnosticsDiagnosticSourceVersion>
+    <SystemReflectionMetadataVersion>$(SystemReflectionMetadataPackageVersion)</SystemReflectionMetadataVersion>
+    <SystemThreadingTasksDataflowVersion>$(SystemThreadingTasksDataflowPackageVersion)</SystemThreadingTasksDataflowVersion>
   </PropertyGroup>
 </Project>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index b1af4134174..814daea4fab 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26153.3">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26159.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>5976b9d3d62aaac137169c638af21096bd8e8fcd</Sha>
+      <Sha>6f1da2af699e35f16100c86933b8c65e36fa6f38</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 19b741a68dd..b14cc303c67 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.101",
+    "version": "10.0.103",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.101",
+    "dotnet": "10.0.103",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26153.3",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26159.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 3fb447ea916367f64eb1912db21f45a857f5068a Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 13 Mar 2026 10:56:49 +0100
Subject: [PATCH 079/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19426)

* Backflow from https://github.com/dotnet/dotnet / 7b28be7 build 305997

[[ commit created by automation ]]

* Update dependencies from build 305997
No dependency updates to commit
[[ commit created by automation ]]

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml                        | 2 +-
 src/FSharp.Build/Microsoft.FSharp.NetSdk.props | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 814daea4fab..37d86ec9969 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="12c3cef498be4615913f63b1ae356b475efa2488" BarId="304097" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="7b28be752296e052a57e85fac1b2be81917fe569" BarId="305997" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/src/FSharp.Build/Microsoft.FSharp.NetSdk.props b/src/FSharp.Build/Microsoft.FSharp.NetSdk.props
index e45f864ce22..e0d5f5bd81e 100644
--- a/src/FSharp.Build/Microsoft.FSharp.NetSdk.props
+++ b/src/FSharp.Build/Microsoft.FSharp.NetSdk.props
@@ -94,7 +94,7 @@ WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
   <Import Project="Microsoft.FSharp.Core.NetSdk.props" />                       <!-- Sets initial value of FSharp.Core -->
 
   <PropertyGroup>
-    <ValueTupleImplicitPackageVersion>4.6.1</ValueTupleImplicitPackageVersion>
+    <ValueTupleImplicitPackageVersion>4.6.2</ValueTupleImplicitPackageVersion>
   </PropertyGroup>
 
   <ItemGroup>

From 46918ff07863af151801ad7bc290845d8fdcad03 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 13 Mar 2026 10:56:55 +0100
Subject: [PATCH 080/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260310.1 (#19424)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26159.1 -> To Version 10.0.0-beta.26160.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 7cd4e77c639..ac8d58ea16f 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26159.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26160.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 37d86ec9969..e149f2c26a2 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26159.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26160.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>6f1da2af699e35f16100c86933b8c65e36fa6f38</Sha>
+      <Sha>8b0ca8dba65be0853690ce98ae8f950a25ff8421</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index b14cc303c67..38e59654a46 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26159.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26160.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From bba29df14208537b5d5cf6568719de1a71ad9c38 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 11:01:55 +0100
Subject: [PATCH 081/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260314.1 (#19432)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26160.1 -> To Version 10.0.0-beta.26164.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index ac8d58ea16f..e8cb9df183a 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26160.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26164.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index e149f2c26a2..84b03e4fd7a 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26160.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26164.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>8b0ca8dba65be0853690ce98ae8f950a25ff8421</Sha>
+      <Sha>e365cfcb58176841c2fb80d1a40926f394776970</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 38e59654a46..a665ac7419c 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.103",
+    "version": "10.0.104",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.103",
+    "dotnet": "10.0.104",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26160.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26164.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 635b0b8a8aa5af576507aa0b3c159c1d3b6f182d Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 23 Mar 2026 12:43:32 +0100
Subject: [PATCH 082/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260318.1 (#19453)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26164.1 -> To Version 10.0.0-beta.26168.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index e8cb9df183a..2990dbbbd06 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26164.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26168.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 84b03e4fd7a..d5361294a98 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26164.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26168.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>e365cfcb58176841c2fb80d1a40926f394776970</Sha>
+      <Sha>3907f62e877e105b6196b1bd9c309203d6362a0a</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index a665ac7419c..49cd90f7082 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.104",
+    "version": "10.0.105",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.104",
+    "dotnet": "10.0.105",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26164.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26168.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From f583c194b77dfbc3596d051cc57b7660289c8806 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 24 Mar 2026 21:34:03 +0100
Subject: [PATCH 083/102] [release/dev18.0] Update dependencies from
 dotnet/roslyn (#19095)

* Update dependencies from https://github.com/dotnet/roslyn build 20260315.6

Microsoft.CodeAnalysis, Microsoft.CodeAnalysis.Compilers,
Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.EditorFeatures,
Microsoft.CodeAnalysis.EditorFeatures.Text,
Microsoft.CodeAnalysis.ExternalAccess.FSharp,
Microsoft.CodeAnalysis.Features, Microsoft.VisualStudio.LanguageServices
From Version 5.0.0-2.25529.7 -> To Version 5.0.0-2.26165.6

Reset branch to release/dev18.0 base to remove incorrectly
merged main branch changes that introduced IFSharpInlineHintsService2
(not available in the release/dev18.0 Roslyn version).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update MSBuild dependencies from 18.0.0-preview-25476-03 to 18.0.2

Update Microsoft.Build, Microsoft.Build.Framework, Microsoft.Build.Tasks.Core,
and Microsoft.Build.Utilities.Core to stable version 18.0.2 (SHA 995a3dce).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update dependencies from https://github.com/dotnet/roslyn build 20260317.2
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.25529.7 -> To Version 5.0.0-2.26167.2

* Update dependencies from https://github.com/dotnet/roslyn build 20260318.3
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.25529.7 -> To Version 5.0.0-2.26168.3

* Update dependencies from https://github.com/dotnet/roslyn build 20260319.2
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.25529.7 -> To Version 5.0.0-2.26169.2

---------

Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 24 ++++++++++----------
 eng/Version.Details.xml   | 48 +++++++++++++++++++--------------------
 2 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 2990dbbbd06..8f3cfb33ad2 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -8,10 +8,10 @@ This file should be imported by eng/Versions.props
     <!-- dotnet-arcade dependencies -->
     <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26168.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
-    <MicrosoftBuildPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildPackageVersion>
-    <MicrosoftBuildFrameworkPackageVersion>18.0.0-preview-25476-03</MicrosoftBuildFrameworkPackageVersion>
-    <MicrosoftBuildTasksCorePackageVersion>18.0.0-preview-25476-03</MicrosoftBuildTasksCorePackageVersion>
-    <MicrosoftBuildUtilitiesCorePackageVersion>18.0.0-preview-25476-03</MicrosoftBuildUtilitiesCorePackageVersion>
+    <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
+    <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
+    <MicrosoftBuildTasksCorePackageVersion>18.0.2</MicrosoftBuildTasksCorePackageVersion>
+    <MicrosoftBuildUtilitiesCorePackageVersion>18.0.2</MicrosoftBuildUtilitiesCorePackageVersion>
     <!-- dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationlinuxx64MIBCRuntimePackageVersion>
@@ -19,14 +19,14 @@ This file should be imported by eng/Versions.props
     <optimizationwindows_ntx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx64MIBCRuntimePackageVersion>
     <optimizationwindows_ntx86MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx86MIBCRuntimePackageVersion>
     <!-- dotnet-roslyn dependencies -->
-    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisPackageVersion>
-    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisCompilersPackageVersion>
-    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisCSharpPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
-    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
-    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25529.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
-    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25529.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
+    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisPackageVersion>
+    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisCompilersPackageVersion>
+    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisCSharpPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
+    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
+    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisFeaturesPackageVersion>
+    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26169.2</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet-runtime dependencies -->
     <SystemCollectionsImmutablePackageVersion>9.0.0</SystemCollectionsImmutablePackageVersion>
     <SystemComponentModelCompositionPackageVersion>9.0.0</SystemComponentModelCompositionPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index d5361294a98..afa2cd3c905 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -2,21 +2,21 @@
 <Dependencies>
   <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="7b28be752296e052a57e85fac1b2be81917fe569" BarId="305997" />
   <ProductDependencies>
-    <Dependency Name="Microsoft.Build" Version="18.0.0-preview-25476-03">
+    <Dependency Name="Microsoft.Build" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>
-      <Sha>5480b47bbc592c6feedca7c57c9863ba01e0c52c</Sha>
+      <Sha>995a3dce41788caebf2b8ca6602a7431f08bfd06</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.Build.Framework" Version="18.0.0-preview-25476-03">
+    <Dependency Name="Microsoft.Build.Framework" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>
-      <Sha>5480b47bbc592c6feedca7c57c9863ba01e0c52c</Sha>
+      <Sha>995a3dce41788caebf2b8ca6602a7431f08bfd06</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.Build.Tasks.Core" Version="18.0.0-preview-25476-03">
+    <Dependency Name="Microsoft.Build.Tasks.Core" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>
-      <Sha>5480b47bbc592c6feedca7c57c9863ba01e0c52c</Sha>
+      <Sha>995a3dce41788caebf2b8ca6602a7431f08bfd06</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.Build.Utilities.Core" Version="18.0.0-preview-25476-03">
+    <Dependency Name="Microsoft.Build.Utilities.Core" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>
-      <Sha>5480b47bbc592c6feedca7c57c9863ba01e0c52c</Sha>
+      <Sha>995a3dce41788caebf2b8ca6602a7431f08bfd06</Sha>
     </Dependency>
     <Dependency Name="System.Reflection.Metadata" Version="9.0.0">
       <Uri>https://github.com/dotnet/runtime</Uri>
@@ -42,37 +42,37 @@
       <Uri>https://github.com/dotnet/runtime</Uri>
       <Sha>9d5a6a9aa463d6d10b0b0ba6d5982cc82f363dc3</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.25529.7">
+    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26169.2">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>68a9207cafc10bb08d345e32f06dd1a91ab7a6a2</Sha>
+      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>

From 838e13c1b9510744d8a55edcd237b492af1d03a9 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 30 Mar 2026 16:07:55 +0200
Subject: [PATCH 084/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260327.7 (#19513)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26168.1 -> To Version 10.0.0-beta.26177.7

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                        |  2 +-
 eng/Version.Details.xml                          |  4 ++--
 eng/common/core-templates/job/onelocbuild.yml    |  4 ++--
 .../core-templates/job/publish-build-assets.yml  |  4 ++--
 .../core-templates/post-build/post-build.yml     | 16 ++++++++--------
 .../variables/pool-providers.yml                 |  2 +-
 .../templates/variables/pool-providers.yml       |  2 +-
 global.json                                      |  2 +-
 8 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 8f3cfb33ad2..03c15e46581 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26168.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26177.7</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index afa2cd3c905..f40f2ad9f08 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26168.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26177.7">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>3907f62e877e105b6196b1bd9c309203d6362a0a</Sha>
+      <Sha>62dc2defffeadabf6761a9ed7e142692107330c0</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml
index c5788829a87..eefed3b667a 100644
--- a/eng/common/core-templates/job/onelocbuild.yml
+++ b/eng/common/core-templates/job/onelocbuild.yml
@@ -52,13 +52,13 @@ jobs:
       # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
       ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
         name: AzurePipelines-EO
-        image: 1ESPT-Windows2022
+        image: 1ESPT-Windows2025
         demands: Cmd
         os: windows
       # If it's not devdiv, it's dnceng
       ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
         name: $(DncEngInternalBuildPool)
-        image: 1es-windows-2022
+        image: windows.vs2026.amd64
         os: windows
 
   steps:
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index b955fac6e13..9afcb8ae159 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -74,13 +74,13 @@ jobs:
     # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
     ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
       name: AzurePipelines-EO
-      image: 1ESPT-Windows2022
+      image: 1ESPT-Windows2025
       demands: Cmd
       os: windows
     # If it's not devdiv, it's dnceng
     ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
       name: NetCore1ESPool-Publishing-Internal
-      image: windows.vs2022.amd64
+      image: windows.vs2026.amd64
       os: windows
   steps:
   - ${{ if eq(parameters.is1ESPipeline, '') }}:
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index b942a79ef02..2df4acb7685 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -120,7 +120,7 @@ stages:
         # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
         ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
           name: AzurePipelines-EO
-          image: 1ESPT-Windows2022
+          image: 1ESPT-Windows2025
           demands: Cmd
           os: windows
         # If it's not devdiv, it's dnceng
@@ -164,14 +164,14 @@ stages:
         # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
         ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
           name: AzurePipelines-EO
-          image: 1ESPT-Windows2022
+          image: 1ESPT-Windows2025
           demands: Cmd
           os: windows
         # If it's not devdiv, it's dnceng
         ${{ else }}:
           ${{ if eq(parameters.is1ESPipeline, true) }}:        
             name: $(DncEngInternalBuildPool)
-            image: 1es-windows-2022
+            image: windows.vs2026.amd64
             os: windows
           ${{ else }}:
             name: $(DncEngInternalBuildPool)
@@ -225,14 +225,14 @@ stages:
         # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
         ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
           name: AzurePipelines-EO
-          image: 1ESPT-Windows2022
+          image: 1ESPT-Windows2025
           demands: Cmd
           os: windows
         # If it's not devdiv, it's dnceng
         ${{ else }}:
           ${{ if eq(parameters.is1ESPipeline, true) }}:          
             name: $(DncEngInternalBuildPool)
-            image: 1es-windows-2022
+            image: windows.vs2026.amd64
             os: windows
           ${{ else }}:
             name: $(DncEngInternalBuildPool)
@@ -286,18 +286,18 @@ stages:
         # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
         ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
           name: AzurePipelines-EO
-          image: 1ESPT-Windows2022
+          image: 1ESPT-Windows2025
           demands: Cmd
           os: windows
         # If it's not devdiv, it's dnceng
         ${{ else }}:
           ${{ if eq(parameters.is1ESPipeline, true) }}:          
             name: NetCore1ESPool-Publishing-Internal
-            image: windows.vs2022.amd64
+            image: windows.vs2026.amd64
             os: windows
           ${{ else }}:
             name: NetCore1ESPool-Publishing-Internal
-            demands: ImageOverride -equals windows.vs2022.amd64          
+            demands: ImageOverride -equals windows.vs2026.amd64
       steps:
         - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
           parameters:
diff --git a/eng/common/templates-official/variables/pool-providers.yml b/eng/common/templates-official/variables/pool-providers.yml
index 1f308b24efc..2cc3ae305d5 100644
--- a/eng/common/templates-official/variables/pool-providers.yml
+++ b/eng/common/templates-official/variables/pool-providers.yml
@@ -23,7 +23,7 @@
 #
 #        pool:
 #           name: $(DncEngInternalBuildPool)
-#           image: 1es-windows-2022
+#           image: windows.vs2026.amd64
 
 variables:
   # Coalesce the target and source branches so we know when a PR targets a release branch
diff --git a/eng/common/templates/variables/pool-providers.yml b/eng/common/templates/variables/pool-providers.yml
index 18693ea120d..587770f0add 100644
--- a/eng/common/templates/variables/pool-providers.yml
+++ b/eng/common/templates/variables/pool-providers.yml
@@ -23,7 +23,7 @@
 #
 #        pool:
 #           name: $(DncEngInternalBuildPool)
-#           demands: ImageOverride -equals windows.vs2022.amd64
+#           demands: ImageOverride -equals windows.vs2026.amd64
 variables:
   - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
     - template: /eng/common/templates-official/variables/pool-providers.yml
diff --git a/global.json b/global.json
index 49cd90f7082..815b400acb5 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26168.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26177.7",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 4525f2e2a970e52f3331448d8f101dd5bdb9fdb4 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Mon, 30 Mar 2026 16:08:07 +0200
Subject: [PATCH 085/102] [release/dev18.0] Update dependencies from
 dotnet/roslyn (#19492)

* Update dependencies from https://github.com/dotnet/roslyn build 20260324.4
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26169.2 -> To Version 5.0.0-2.26174.4

* Update dependencies from https://github.com/dotnet/roslyn build 20260325.11
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26169.2 -> To Version 5.0.0-2.26175.11

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 16 ++++++++--------
 eng/Version.Details.xml   | 32 ++++++++++++++++----------------
 2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 03c15e46581..6a8bdc6aa46 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -19,14 +19,14 @@ This file should be imported by eng/Versions.props
     <optimizationwindows_ntx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx64MIBCRuntimePackageVersion>
     <optimizationwindows_ntx86MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx86MIBCRuntimePackageVersion>
     <!-- dotnet-roslyn dependencies -->
-    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisPackageVersion>
-    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisCompilersPackageVersion>
-    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisCSharpPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
-    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
-    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26169.2</MicrosoftCodeAnalysisFeaturesPackageVersion>
-    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26169.2</MicrosoftVisualStudioLanguageServicesPackageVersion>
+    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisPackageVersion>
+    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisCompilersPackageVersion>
+    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisCSharpPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
+    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
+    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisFeaturesPackageVersion>
+    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26175.11</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet-runtime dependencies -->
     <SystemCollectionsImmutablePackageVersion>9.0.0</SystemCollectionsImmutablePackageVersion>
     <SystemComponentModelCompositionPackageVersion>9.0.0</SystemComponentModelCompositionPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index f40f2ad9f08..26d2c5b2b38 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -42,37 +42,37 @@
       <Uri>https://github.com/dotnet/runtime</Uri>
       <Sha>9d5a6a9aa463d6d10b0b0ba6d5982cc82f363dc3</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26169.2">
+    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26175.11">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>a15753528c05d19fd9bcab418b3ec4bd97e38e54</Sha>
+      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>

From 38e8b673241e0d29c01321d8d79dfad0771027eb Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 9 Apr 2026 12:47:03 +0200
Subject: [PATCH 086/102] [release/dev18.0] Update dependencies from
 dotnet/arcade (#19545)

* Update dependencies from https://github.com/dotnet/arcade build 20260401.4
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26177.7 -> To Version 10.0.0-beta.26201.4

* Update dependencies from https://github.com/dotnet/arcade build 20260408.2
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26177.7 -> To Version 10.0.0-beta.26208.2

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                     |   2 +-
 eng/Version.Details.xml                       |   4 +-
 eng/common/core-templates/job/job.yml         |   5 +-
 .../job/publish-build-assets.yml              |  14 ++-
 eng/common/core-templates/jobs/jobs.yml       |   5 +
 .../core-templates/post-build/post-build.yml  | 105 ++++++++++++------
 .../post-build/setup-maestro-vars.yml         |   5 +-
 .../steps/component-governance.yml            |  16 ---
 .../core-templates/steps/generate-sbom.yml    |  60 ++--------
 .../core-templates/steps/publish-logs.yml     |   9 +-
 .../core-templates/steps/source-build.yml     |   2 +-
 eng/common/generate-sbom-prep.ps1             |  29 -----
 eng/common/generate-sbom-prep.sh              |  39 -------
 eng/common/template-guidance.md               |   2 -
 eng/common/templates-official/job/job.yml     |  64 ++++++-----
 .../steps/component-governance.yml            |   7 --
 .../steps/publish-pipeline-artifacts.yml      |   4 +-
 eng/common/templates/job/job.yml              |  57 +++++-----
 .../templates/steps/component-governance.yml  |   7 --
 global.json                                   |   2 +-
 20 files changed, 176 insertions(+), 262 deletions(-)
 delete mode 100644 eng/common/core-templates/steps/component-governance.yml
 delete mode 100644 eng/common/generate-sbom-prep.ps1
 delete mode 100755 eng/common/generate-sbom-prep.sh
 delete mode 100644 eng/common/templates-official/steps/component-governance.yml
 delete mode 100644 eng/common/templates/steps/component-governance.yml

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 6a8bdc6aa46..bea0b05c118 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26177.7</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26208.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 26d2c5b2b38..5cc5adb2fac 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26177.7">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26208.2">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>62dc2defffeadabf6761a9ed7e142692107330c0</Sha>
+      <Sha>bfe01369a7304a011f6913a1184316c2bb217d9d</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml
index 5ce51840619..eaed6d87e65 100644
--- a/eng/common/core-templates/job/job.yml
+++ b/eng/common/core-templates/job/job.yml
@@ -24,12 +24,12 @@ parameters:
   enablePublishBuildArtifacts: false
   enablePublishBuildAssets: false
   enablePublishTestResults: false
+  enablePublishing: false
   enableBuildRetry: false
   mergeTestResults: false
   testRunTitle: ''
   testResultsFormat: ''
   name: ''
-  componentGovernanceSteps: []
   preSteps: []
   artifactPublishSteps: []
   runAsPublic: false
@@ -146,9 +146,6 @@ jobs:
   - ${{ each step in parameters.steps }}:
     - ${{ step }}
 
-  - ${{ each step in parameters.componentGovernanceSteps }}:
-    - ${{ step }}
-
   - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
     - template: /eng/common/core-templates/steps/cleanup-microbuild.yml
       parameters:
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index 9afcb8ae159..06f2eed0323 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -172,17 +172,18 @@ jobs:
             targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml'
             artifactName: AssetManifests
             displayName: 'Publish Merged Manifest'
-            retryCountOnTaskFailure: 10 # for any logs being locked
-            sbomEnabled: false  # we don't need SBOM for logs
+            retryCountOnTaskFailure: 10 # for any files being locked
+            isProduction: false # just metadata for publishing
 
-    - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+    - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
       parameters:
         is1ESPipeline: ${{ parameters.is1ESPipeline }}
         args:
           displayName: Publish ReleaseConfigs Artifact
-          pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs'
-          publishLocation: Container
+          targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'
           artifactName: ReleaseConfigs
+          retryCountOnTaskFailure: 10 # for any files being locked
+          isProduction: false # just metadata for publishing
 
     - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}:
       - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
@@ -218,4 +219,5 @@ jobs:
       - template: /eng/common/core-templates/steps/publish-logs.yml
         parameters:
           is1ESPipeline: ${{ parameters.is1ESPipeline }}
-          JobLabel: 'Publish_Artifacts_Logs'     
+          StageLabel: 'BuildAssetRegistry'
+          JobLabel: 'Publish_Artifacts_Logs'
diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml
index 01ada747665..cc8cce45278 100644
--- a/eng/common/core-templates/jobs/jobs.yml
+++ b/eng/common/core-templates/jobs/jobs.yml
@@ -43,6 +43,10 @@ parameters:
 
   artifacts: {}
   is1ESPipeline: ''
+
+  # Publishing version w/default.
+  publishingVersion: 3
+
   repositoryAlias: self
   officialBuildId: ''
 
@@ -102,6 +106,7 @@ jobs:
       parameters:
         is1ESPipeline: ${{ parameters.is1ESPipeline }}
         continueOnError: ${{ parameters.continueOnError }}
+        publishingVersion: ${{ parameters.publishingVersion }}
         dependsOn:
         - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
           - ${{ each job in parameters.publishBuildAssetsDependsOn }}:
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index 2df4acb7685..905a6315e2d 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -9,6 +9,7 @@ parameters:
     default: 3
     values:
     - 3
+    - 4
 
   - name: BARBuildId
     displayName: BAR Build Id
@@ -140,16 +141,30 @@ stages:
             PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
             is1ESPipeline: ${{ parameters.is1ESPipeline }}
 
-        - task: DownloadBuildArtifacts@0
-          displayName: Download Package Artifacts
-          inputs:
-            buildType: specific
-            buildVersionToDownload: specific
-            project: $(AzDOProjectName)
-            pipeline: $(AzDOPipelineId)
-            buildId: $(AzDOBuildId)
-            artifactName: PackageArtifacts
-            checkDownloadedFiles: true
+        - ${{ if ne(parameters.publishingInfraVersion, 4) }}:
+          - task: DownloadBuildArtifacts@0
+            displayName: Download Package Artifacts
+            inputs:
+              buildType: specific
+              buildVersionToDownload: specific
+              project: $(AzDOProjectName)
+              pipeline: $(AzDOPipelineId)
+              buildId: $(AzDOBuildId)
+              artifactName: PackageArtifacts
+              checkDownloadedFiles: true
+        - ${{ if eq(parameters.publishingInfraVersion, 4) }}:
+          - task: DownloadPipelineArtifact@2
+            displayName: Download Pipeline Artifacts (V4)
+            inputs:
+              itemPattern: '*/packages/**/*.nupkg'
+              targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+          - task: CopyFiles@2
+            displayName: Flatten packages to PackageArtifacts
+            inputs:
+              SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+              Contents: '**/*.nupkg'
+              TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
+              flattenFolders: true
 
         - task: PowerShell@2
           displayName: Validate
@@ -183,16 +198,30 @@ stages:
             PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
             is1ESPipeline: ${{ parameters.is1ESPipeline }}
 
-        - task: DownloadBuildArtifacts@0
-          displayName: Download Package Artifacts
-          inputs:
-            buildType: specific
-            buildVersionToDownload: specific
-            project: $(AzDOProjectName)
-            pipeline: $(AzDOPipelineId)
-            buildId: $(AzDOBuildId)
-            artifactName: PackageArtifacts
-            checkDownloadedFiles: true
+        - ${{ if ne(parameters.publishingInfraVersion, 4) }}:
+          - task: DownloadBuildArtifacts@0
+            displayName: Download Package Artifacts
+            inputs:
+              buildType: specific
+              buildVersionToDownload: specific
+              project: $(AzDOProjectName)
+              pipeline: $(AzDOPipelineId)
+              buildId: $(AzDOBuildId)
+              artifactName: PackageArtifacts
+              checkDownloadedFiles: true
+        - ${{ if eq(parameters.publishingInfraVersion, 4) }}:
+          - task: DownloadPipelineArtifact@2
+            displayName: Download Pipeline Artifacts (V4)
+            inputs:
+              itemPattern: '*/packages/**/*.nupkg'
+              targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+          - task: CopyFiles@2
+            displayName: Flatten packages to PackageArtifacts
+            inputs:
+              SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+              Contents: '**/*.nupkg'
+              TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
+              flattenFolders: true
 
         # This is necessary whenever we want to publish/restore to an AzDO private feed
         # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
@@ -244,16 +273,30 @@ stages:
             PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
             is1ESPipeline: ${{ parameters.is1ESPipeline }}
 
-        - task: DownloadBuildArtifacts@0
-          displayName: Download Blob Artifacts
-          inputs:
-            buildType: specific
-            buildVersionToDownload: specific
-            project: $(AzDOProjectName)
-            pipeline: $(AzDOPipelineId)
-            buildId: $(AzDOBuildId)
-            artifactName: BlobArtifacts
-            checkDownloadedFiles: true
+        - ${{ if ne(parameters.publishingInfraVersion, 4) }}:
+          - task: DownloadBuildArtifacts@0
+            displayName: Download Blob Artifacts
+            inputs:
+              buildType: specific
+              buildVersionToDownload: specific
+              project: $(AzDOProjectName)
+              pipeline: $(AzDOPipelineId)
+              buildId: $(AzDOBuildId)
+              artifactName: BlobArtifacts
+              checkDownloadedFiles: true
+        - ${{ if eq(parameters.publishingInfraVersion, 4) }}:
+          - task: DownloadPipelineArtifact@2
+            displayName: Download Pipeline Artifacts (V4)
+            inputs:
+              itemPattern: '*/assets/**'
+              targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+          - task: CopyFiles@2
+            displayName: Flatten assets to BlobArtifacts
+            inputs:
+              SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+              Contents: '**/*'
+              TargetFolder: '$(Build.ArtifactStagingDirectory)/BlobArtifacts'
+              flattenFolders: true
 
         - task: PowerShell@2
           displayName: Validate
@@ -328,7 +371,7 @@ stages:
             scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
             arguments: >
               -BuildId $(BARBuildId)
-              -PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
+              -PublishingInfraVersion 3
               -AzdoToken '$(System.AccessToken)'
               -WaitPublishingFinish true
               -RequireDefaultChannels ${{ parameters.requireDefaultChannels }}
diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml
index a7abd58c4bb..6dfa99ec5e3 100644
--- a/eng/common/core-templates/post-build/setup-maestro-vars.yml
+++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml
@@ -8,12 +8,11 @@ steps:
     - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
 
   - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
-    - task: DownloadBuildArtifacts@0
+    - task: DownloadPipelineArtifact@2
       displayName: Download Release Configs
       inputs:
-        buildType: current
         artifactName: ReleaseConfigs
-        checkDownloadedFiles: true
+        targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'
 
   - task: AzureCLI@2
     name: setReleaseVars
diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml
deleted file mode 100644
index cf0649aa956..00000000000
--- a/eng/common/core-templates/steps/component-governance.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-parameters:
-  disableComponentGovernance: false
-  componentGovernanceIgnoreDirectories: ''
-  is1ESPipeline: false
-  displayName: 'Component Detection'
-
-steps:
-- ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
-  - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
-    displayName: Set skipComponentGovernanceDetection variable
-- ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
-  - task: ComponentGovernanceComponentDetection@0
-    continueOnError: true
-    displayName: ${{ parameters.displayName }}
-    inputs:
-      ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml
index c05f6502797..aad0a8aeda3 100644
--- a/eng/common/core-templates/steps/generate-sbom.yml
+++ b/eng/common/core-templates/steps/generate-sbom.yml
@@ -1,54 +1,14 @@
-# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated.
-# PackageName - The name of the package this SBOM represents.
-# PackageVersion - The version of the package this SBOM represents. 
-# ManifestDirPath - The path of the directory where the generated manifest files will be placed
-# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector.
-
 parameters:
-  PackageVersion: 10.0.0
-  BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
-  PackageName: '.NET'
-  ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
-  IgnoreDirectories: ''
-  sbomContinueOnError: true
-  is1ESPipeline: false
-  # disable publishArtifacts if some other step is publishing the artifacts (like job.yml).
-  publishArtifacts: true
+  PackageVersion: unused
+  BuildDropPath: unused
+  PackageName: unused
+  ManifestDirPath: unused
+  IgnoreDirectories: unused
+  sbomContinueOnError: unused
+  is1ESPipeline: unused
+  publishArtifacts: unused
 
 steps:
-- task: PowerShell@2 
-  displayName: Prep for SBOM generation in (Non-linux)
-  condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin'))
-  inputs: 
-    filePath: ./eng/common/generate-sbom-prep.ps1
-    arguments: ${{parameters.manifestDirPath}}
-
-# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461
 - script: |
-    chmod +x ./eng/common/generate-sbom-prep.sh
-    ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}}
-  displayName: Prep for SBOM generation in (Linux)
-  condition: eq(variables['Agent.Os'], 'Linux')
-  continueOnError: ${{ parameters.sbomContinueOnError }}
-
-- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
-  displayName: 'Generate SBOM manifest'
-  continueOnError: ${{ parameters.sbomContinueOnError }}
-  inputs:
-      PackageName: ${{ parameters.packageName }}
-      BuildDropPath: ${{ parameters.buildDropPath }}
-      PackageVersion: ${{ parameters.packageVersion }}
-      ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME)
-      ${{ if ne(parameters.IgnoreDirectories, '') }}:
-        AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}'
-
-- ${{ if eq(parameters.publishArtifacts, 'true')}}:
-  - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
-    parameters:
-      is1ESPipeline: ${{ parameters.is1ESPipeline }}
-      args:
-        displayName: Publish SBOM manifest
-        continueOnError: ${{parameters.sbomContinueOnError}}
-        targetPath: '${{ parameters.manifestDirPath }}'
-        artifactName: $(ARTIFACT_NAME)
-
+    echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include."
+  displayName: Issue generate-sbom.yml deprecation warning
diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
index a9ea99ba6aa..4eed0312b80 100644
--- a/eng/common/core-templates/steps/publish-logs.yml
+++ b/eng/common/core-templates/steps/publish-logs.yml
@@ -50,13 +50,14 @@ steps:
     TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
   condition: always()
 
-- template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
   parameters:
     is1ESPipeline: ${{ parameters.is1ESPipeline }}
     args:
       displayName: Publish Logs
-      pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
-      publishLocation: Container
-      artifactName: PostBuildLogs
+      targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
+      artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt)
       continueOnError: true
       condition: always()
+      retryCountOnTaskFailure: 10 # for any files being locked
+      isProduction: false # logs are non-production artifacts
diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml
index b9c86c18ae4..09ae5cd73ae 100644
--- a/eng/common/core-templates/steps/source-build.yml
+++ b/eng/common/core-templates/steps/source-build.yml
@@ -62,4 +62,4 @@ steps:
       artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt)
       continueOnError: true
       condition: succeededOrFailed()
-      sbomEnabled: false  # we don't need SBOM for logs
+      isProduction: false # logs are non-production artifacts
diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1
deleted file mode 100644
index a0c7d792a76..00000000000
--- a/eng/common/generate-sbom-prep.ps1
+++ /dev/null
@@ -1,29 +0,0 @@
-Param(
-    [Parameter(Mandatory=$true)][string] $ManifestDirPath    # Manifest directory where sbom will be placed
-)
-
-. $PSScriptRoot\pipeline-logging-functions.ps1
-
-# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
-# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
-$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM"
-$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_'
-$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName
-
-Write-Host "Artifact name before : $ArtifactName"
-Write-Host "Artifact name after : $SafeArtifactName"
-
-Write-Host "Creating dir $ManifestDirPath"
-
-# create directory for sbom manifest to be placed
-if (!(Test-Path -path $SbomGenerationDir))
-{
-  New-Item -ItemType Directory -path $SbomGenerationDir
-  Write-Host "Successfully created directory $SbomGenerationDir"
-}
-else{
-  Write-PipelineTelemetryError -category 'Build'  "Unable to create sbom folder."
-}
-
-Write-Host "Updating artifact name"
-Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName"
diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh
deleted file mode 100755
index b8ecca72bbf..00000000000
--- a/eng/common/generate-sbom-prep.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-
-source="${BASH_SOURCE[0]}"
-
-# resolve $SOURCE until the file is no longer a symlink
-while [[ -h $source ]]; do
-  scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
-  source="$(readlink "$source")"
-
-  # if $source was a relative symlink, we need to resolve it relative to the path where the
-  # symlink file was located
-  [[ $source != /* ]] && source="$scriptroot/$source"
-done
-scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
-. $scriptroot/pipeline-logging-functions.sh
-
-
-# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts.
-artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM"
-safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}"
-manifest_dir=$1
-
-# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
-# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
-sbom_generation_dir="$manifest_dir/$safe_artifact_name"
-
-if [ ! -d "$sbom_generation_dir" ] ; then
-  mkdir -p "$sbom_generation_dir"
-  echo "Sbom directory created." $sbom_generation_dir
-else
-  Write-PipelineTelemetryError -category 'Build'  "Unable to create sbom folder."
-fi
-
-echo "Artifact name before : "$artifact_name
-echo "Artifact name after : "$safe_artifact_name
-export ARTIFACT_NAME=$safe_artifact_name
-echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name"
-
-exit 0
diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md
index 4bf4cf41bd7..e2b07a865f1 100644
--- a/eng/common/template-guidance.md
+++ b/eng/common/template-guidance.md
@@ -82,7 +82,6 @@ eng\common\
             publish-build-artifacts.yml      (logic)
             publish-pipeline-artifacts.yml   (logic)
             component-governance.yml         (shim)
-            generate-sbom.yml                (shim)
             publish-logs.yml                 (shim)
             retain-build.yml                 (shim)
             send-to-helix.yml                (shim)
@@ -107,7 +106,6 @@ eng\common\
             setup-maestro-vars.yml           (logic)
         steps\
             component-governance.yml         (logic)
-            generate-sbom.yml                (logic)
             publish-build-artifacts.yml      (redirect)
             publish-logs.yml                 (logic)
             publish-pipeline-artifacts.yml   (redirect)
diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml
index 92a0664f564..d68e9fbc265 100644
--- a/eng/common/templates-official/job/job.yml
+++ b/eng/common/templates-official/job/job.yml
@@ -1,24 +1,15 @@
 parameters:
-# Sbom related params
-  enableSbom: true
   runAsPublic: false
-  PackageVersion: 9.0.0
-  BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
+# Sbom related params, unused now and can eventually be removed
+  enableSbom: unused
+  PackageVersion: unused
+  BuildDropPath: unused
 
 jobs:
 - template: /eng/common/core-templates/job/job.yml
   parameters:
     is1ESPipeline: true
 
-    componentGovernanceSteps:
-    - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}:
-      - template: /eng/common/templates/steps/generate-sbom.yml
-        parameters:
-          PackageVersion: ${{ parameters.packageVersion }}
-          BuildDropPath: ${{ parameters.buildDropPath }}
-          ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
-          publishArtifacts: false
-
     # publish artifacts
     # for 1ES managed templates, use the templateContext.output to handle multiple outputs.
     templateContext:
@@ -26,12 +17,19 @@ jobs:
       outputs:
       - ${{ if ne(parameters.artifacts.publish, '') }}:
         - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
-          - output: buildArtifacts
+          - output: pipelineArtifact
             displayName: Publish pipeline artifacts
-            PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts'
-            ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
-            condition: always()
-            retryCountOnTaskFailure: 10 # for any logs being locked
+            targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+            artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
+            condition: succeeded()
+            retryCountOnTaskFailure: 10 # for any files being locked
+            continueOnError: true
+          - output: pipelineArtifact
+            displayName: Publish pipeline artifacts
+            targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+            artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt)
+            condition: not(succeeded())
+            retryCountOnTaskFailure: 10 # for any files being locked
             continueOnError: true
         - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
           - output: pipelineArtifact
@@ -40,18 +38,18 @@ jobs:
             displayName: 'Publish logs'
             continueOnError: true
             condition: always()
-            retryCountOnTaskFailure: 10 # for any logs being locked
-            sbomEnabled: false  # we don't need SBOM for logs
+            retryCountOnTaskFailure: 10 # for any files being locked
+            isProduction: false # logs are non-production artifacts
 
       - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}:
-        - output: buildArtifacts
+        - output: pipelineArtifact
           displayName: Publish Logs
-          PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)'
-          publishLocation: Container
-          ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }}
+          targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)'
+          artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }}
           continueOnError: true
           condition: always()
-          sbomEnabled: false  # we don't need SBOM for logs
+          retryCountOnTaskFailure: 10 # for any files being locked
+          isProduction: false # logs are non-production artifacts
 
       - ${{ if eq(parameters.enableBuildRetry, 'true') }}:
         - output: pipelineArtifact
@@ -59,14 +57,20 @@ jobs:
           artifactName: 'BuildConfiguration'
           displayName: 'Publish build retry configuration'
           continueOnError: true
-          sbomEnabled: false  # we don't need SBOM for BuildConfiguration
+          retryCountOnTaskFailure: 10 # for any files being locked
+          isProduction: false # BuildConfiguration is a non-production artifact
 
-      - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}:
+      # V4 publishing: automatically publish staged artifacts as a pipeline artifact.
+      # The artifact name matches the SDK's FutureArtifactName ($(System.PhaseName)_Artifacts),
+      # which is encoded in the asset manifest for downstream publishing to discover.
+      # Jobs can opt in by setting enablePublishing: true.
+      - ${{ if and(eq(parameters.publishingVersion, 4), eq(parameters.enablePublishing, 'true')) }}:
         - output: pipelineArtifact
-          displayName: Publish SBOM manifest
+          displayName: 'Publish V4 pipeline artifacts'
+          targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+          artifactName: '$(System.PhaseName)_Artifacts'
           continueOnError: true
-          targetPath: $(Build.ArtifactStagingDirectory)/sbom
-          artifactName: $(ARTIFACT_NAME)
+          retryCountOnTaskFailure: 10 # for any files being locked
 
       # add any outputs provided via root yaml
       - ${{ if ne(parameters.templateContext.outputs, '') }}:
diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml
deleted file mode 100644
index 30bb3985ca2..00000000000
--- a/eng/common/templates-official/steps/component-governance.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-steps:
-- template: /eng/common/core-templates/steps/component-governance.yml
-  parameters:
-    is1ESPipeline: true
-
-    ${{ each parameter in parameters }}:
-      ${{ parameter.key }}: ${{ parameter.value }}
diff --git a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml
index 172f9f0fdc9..9e5981365e5 100644
--- a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml
+++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml
@@ -24,5 +24,7 @@ steps:
       artifactName: ${{ parameters.args.artifactName }}
     ${{ if parameters.args.properties }}:
       properties: ${{ parameters.args.properties }}
-    ${{ if parameters.args.sbomEnabled }}:
+    ${{ if ne(parameters.args.sbomEnabled, '') }}:
       sbomEnabled: ${{ parameters.args.sbomEnabled }}
+    ${{ if ne(parameters.args.isProduction, '') }}:
+      isProduction: ${{ parameters.args.isProduction }}
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
index 238fa0818f7..5e261f34db4 100644
--- a/eng/common/templates/job/job.yml
+++ b/eng/common/templates/job/job.yml
@@ -1,12 +1,12 @@
 parameters: 
   enablePublishBuildArtifacts: false
-  disableComponentGovernance: ''
-  componentGovernanceIgnoreDirectories: ''
-# Sbom related params
-  enableSbom: true
   runAsPublic: false
-  PackageVersion: 9.0.0
-  BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
+# CG related params, unused now and can eventually be removed
+  disableComponentGovernance: unused
+# Sbom related params, unused now and can eventually be removed
+  enableSbom: unused
+  PackageVersion: unused
+  BuildDropPath: unused
 
 jobs:
 - template: /eng/common/core-templates/job/job.yml
@@ -21,32 +21,34 @@ jobs:
     - ${{ each step in parameters.steps }}:
       - ${{ step }}
 
-    componentGovernanceSteps:
-    - template: /eng/common/templates/steps/component-governance.yml
-      parameters:
-        ${{ if eq(parameters.disableComponentGovernance, '') }}:
-          ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}:
-            disableComponentGovernance: false
-          ${{ else }}:
-            disableComponentGovernance: true
-        ${{ else }}:
-          disableComponentGovernance: ${{ parameters.disableComponentGovernance }}
-        componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
+    # we don't run CG in public
+    - ${{ if eq(variables['System.TeamProject'], 'public') }}:
+      - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
+        displayName: Set skipComponentGovernanceDetection variable
 
     artifactPublishSteps:
     - ${{ if ne(parameters.artifacts.publish, '') }}:
       - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
-        - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+        - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
           parameters:
             is1ESPipeline: false
             args:
               displayName: Publish pipeline artifacts
-              pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts'
-              publishLocation: Container
+              targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
               artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
               continueOnError: true
-              condition: always()
-              retryCountOnTaskFailure: 10 # for any logs being locked
+              condition: succeeded()
+              retryCountOnTaskFailure: 10 # for any files being locked
+        - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
+          parameters:
+            is1ESPipeline: false
+            args:
+              displayName: Publish pipeline artifacts
+              targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+              artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt)
+              continueOnError: true
+              condition: not(succeeded())
+              retryCountOnTaskFailure: 10 # for any files being locked
       - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
         - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
           parameters:
@@ -57,20 +59,19 @@ jobs:
               displayName: 'Publish logs'
               continueOnError: true
               condition: always()
-              retryCountOnTaskFailure: 10 # for any logs being locked
-              sbomEnabled: false  # we don't need SBOM for logs
+              retryCountOnTaskFailure: 10 # for any files being locked
 
     - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}:
-      - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+      - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
         parameters:
           is1ESPipeline: false
           args:
             displayName: Publish Logs
-            pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)'
-            publishLocation: Container
+            targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)'
             artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }}
             continueOnError: true
             condition: always()
+            retryCountOnTaskFailure: 10 # for any files being locked
 
     - ${{ if eq(parameters.enableBuildRetry, 'true') }}:
       - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
@@ -81,4 +82,4 @@ jobs:
             artifactName: 'BuildConfiguration'
             displayName: 'Publish build retry configuration'
             continueOnError: true
-            sbomEnabled: false  # we don't need SBOM for BuildConfiguration
+            retryCountOnTaskFailure: 10 # for any files being locked
diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml
deleted file mode 100644
index c12a5f8d21d..00000000000
--- a/eng/common/templates/steps/component-governance.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-steps:
-- template: /eng/common/core-templates/steps/component-governance.yml
-  parameters:
-    is1ESPipeline: false
-
-    ${{ each parameter in parameters }}:
-      ${{ parameter.key }}: ${{ parameter.value }}
diff --git a/global.json b/global.json
index 815b400acb5..1b1efe2d0db 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26177.7",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26208.2",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From adc6e05928cf0f131207eec640cb50fdde045b73 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 10 Apr 2026 09:27:52 +0200
Subject: [PATCH 087/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260408.4 (#19565)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26208.2 -> To Version 10.0.0-beta.26208.4

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index bea0b05c118..73c06d6c4ed 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26208.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26208.4</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 5cc5adb2fac..e00ce24517d 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26208.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26208.4">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>bfe01369a7304a011f6913a1184316c2bb217d9d</Sha>
+      <Sha>ecdd5c6a7986cafabbf6a322ea09a07736a01a0d</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 1b1efe2d0db..9129d113a01 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26208.2",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26208.4",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 4b9d21ce7bb70766b9e5d3e720217fd88351f4f0 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 10 Apr 2026 08:31:32 +0000
Subject: [PATCH 088/102] [release/dev18.0] Update dependencies from
 dotnet/roslyn (#19524)

* Update dependencies from https://github.com/dotnet/roslyn build 20260330.2
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26175.11 -> To Version 5.0.0-2.26180.2

* Update dependencies from https://github.com/dotnet/roslyn build 20260401.2
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26175.11 -> To Version 5.0.0-2.26201.2

* Update dependencies from https://github.com/dotnet/roslyn build 20260402.6
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26175.11 -> To Version 5.0.0-2.26202.6

* Fix CancellationPropagatesToTask test disposing running Task

Change 'use t' to 'let t' to avoid calling Dispose on a Task that
may still be running, which throws InvalidOperationException on .NET 10.

Replace 'waitASec t' (1-second timeout) with 't.Wait()' to wait for
cancellation to fully propagate, matching the pattern used by the
sibling CancellationPropagatesToGroup test.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Tomas Grosup <Tomas.Grosup@gmail.com>
---
 eng/Version.Details.props                     | 16 +++++-----
 eng/Version.Details.xml                       | 32 +++++++++----------
 .../Microsoft.FSharp.Control/AsyncType.fs     |  4 +--
 3 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 73c06d6c4ed..7cfbf52f65a 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -19,14 +19,14 @@ This file should be imported by eng/Versions.props
     <optimizationwindows_ntx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx64MIBCRuntimePackageVersion>
     <optimizationwindows_ntx86MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx86MIBCRuntimePackageVersion>
     <!-- dotnet-roslyn dependencies -->
-    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisPackageVersion>
-    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisCompilersPackageVersion>
-    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisCSharpPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
-    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
-    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26175.11</MicrosoftCodeAnalysisFeaturesPackageVersion>
-    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26175.11</MicrosoftVisualStudioLanguageServicesPackageVersion>
+    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisPackageVersion>
+    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisCompilersPackageVersion>
+    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisCSharpPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
+    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
+    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisFeaturesPackageVersion>
+    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26202.6</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet-runtime dependencies -->
     <SystemCollectionsImmutablePackageVersion>9.0.0</SystemCollectionsImmutablePackageVersion>
     <SystemComponentModelCompositionPackageVersion>9.0.0</SystemComponentModelCompositionPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index e00ce24517d..08a5704bc77 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -42,37 +42,37 @@
       <Uri>https://github.com/dotnet/runtime</Uri>
       <Sha>9d5a6a9aa463d6d10b0b0ba6d5982cc82f363dc3</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26175.11">
+    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26202.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>444ccb140d1e9e3cf7884e9038945fe46b12a3ca</Sha>
+      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs b/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs
index ef75dff9e00..550ff931864 100644
--- a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs
+++ b/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs
@@ -250,11 +250,11 @@ type AsyncType() =
         let a = async {
                 while true do ()
             }
-        use t = Async.StartAsTask a
+        let t = Async.StartAsTask a
         Async.CancelDefaultToken ()
         let mutable exceptionThrown = false
         try
-            waitASec t
+            t.Wait()
         with e -> exceptionThrown <- true
         Assert.True (exceptionThrown)
         Assert.True(t.IsCanceled)

From f1355b9c9f8ce3edd01fe47b266384d534f72afd Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 10 Apr 2026 14:27:28 +0000
Subject: [PATCH 089/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19564)

* Backflow from https://github.com/dotnet/dotnet / 8639c3b build 309770

[[ commit created by automation ]]

* Update dependencies from build 309770
No dependency updates to commit
[[ commit created by automation ]]

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 08a5704bc77..2cda91f160b 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="7b28be752296e052a57e85fac1b2be81917fe569" BarId="305997" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="8639c3b28a6eac36e38a59c9cae67aa52b1b06a8" BarId="309770" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index 827ff769373..9bb6b104a5a 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -18,7 +18,7 @@
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>106</FSBuildVersion>
+    <FSBuildVersion>107</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From ffb72d967a4174cc6bc774d505ad30b59fd61a36 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Wed, 15 Apr 2026 09:24:12 +0200
Subject: [PATCH 090/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19588)

* Backflow from https://github.com/dotnet/dotnet / 5d23756 build 310209

[[ commit created by automation ]]

* Update dependencies from build 310209
No dependency updates to commit
[[ commit created by automation ]]

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 2cda91f160b..1e8bbc716e7 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="8639c3b28a6eac36e38a59c9cae67aa52b1b06a8" BarId="309770" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="5d23756b884483995432a21829fe65466b19e948" BarId="310209" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>

From c5d258d73179fafe2937c7e6173ef31851162a10 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Sun, 19 Apr 2026 19:48:35 +0200
Subject: [PATCH 091/102] Update dependencies from
 https://github.com/dotnet/roslyn build 20260417.6 (#19612)

On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26202.6 -> To Version 5.0.0-2.26217.6

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 16 ++++++++--------
 eng/Version.Details.xml   | 32 ++++++++++++++++----------------
 2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 7cfbf52f65a..db6bc1d1102 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -19,14 +19,14 @@ This file should be imported by eng/Versions.props
     <optimizationwindows_ntx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx64MIBCRuntimePackageVersion>
     <optimizationwindows_ntx86MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx86MIBCRuntimePackageVersion>
     <!-- dotnet-roslyn dependencies -->
-    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisPackageVersion>
-    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisCompilersPackageVersion>
-    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisCSharpPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
-    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
-    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26202.6</MicrosoftCodeAnalysisFeaturesPackageVersion>
-    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26202.6</MicrosoftVisualStudioLanguageServicesPackageVersion>
+    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisPackageVersion>
+    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisCompilersPackageVersion>
+    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisCSharpPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
+    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
+    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisFeaturesPackageVersion>
+    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26217.6</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet-runtime dependencies -->
     <SystemCollectionsImmutablePackageVersion>9.0.0</SystemCollectionsImmutablePackageVersion>
     <SystemComponentModelCompositionPackageVersion>9.0.0</SystemComponentModelCompositionPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 1e8bbc716e7..53366dc067d 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -42,37 +42,37 @@
       <Uri>https://github.com/dotnet/runtime</Uri>
       <Sha>9d5a6a9aa463d6d10b0b0ba6d5982cc82f363dc3</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26202.6">
+    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26217.6">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>d977c74c96821fd874b6e1d356d4f46d63a7a576</Sha>
+      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>

From cf9ba9d21f86e8252d0b5faf2c21ec91d4604007 Mon Sep 17 00:00:00 2001
From: Adam Boniecki <20281641+abonie@users.noreply.github.com>
Date: Mon, 20 Apr 2026 10:14:24 +0200
Subject: [PATCH 092/102] Update xcopy-msbuild to 18.0.0 (#19610)

---
 global.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/global.json b/global.json
index 9129d113a01..a6f68aa9375 100644
--- a/global.json
+++ b/global.json
@@ -16,7 +16,7 @@
         "Microsoft.VisualStudio.Component.FSharp"
       ]
     },
-    "xcopy-msbuild": "17.13.0"
+    "xcopy-msbuild": "18.0.0"
   },
   "native-tools": {
     "perl": "5.38.2.2"

From b733a305aa9c96879e37d78acd7faed533917a84 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 21 Apr 2026 09:54:38 +0200
Subject: [PATCH 093/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260420.5 (#19622)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26208.4 -> To Version 10.0.0-beta.26220.5

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index db6bc1d1102..c65966eb873 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26208.4</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26220.5</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 53366dc067d..618ff9579e0 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26208.4">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26220.5">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>ecdd5c6a7986cafabbf6a322ea09a07736a01a0d</Sha>
+      <Sha>54892fe0f027f2f08c59cf0802a2d7f488632e2f</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index a6f68aa9375..85548253d8c 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.105",
+    "version": "10.0.106",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.105",
+    "dotnet": "10.0.106",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26208.4",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26220.5",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 0813b6f8084e2e8e2ba464b06575d4c42bbb66a2 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 21 Apr 2026 09:54:48 +0200
Subject: [PATCH 094/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19620)

* Backflow from https://github.com/dotnet/dotnet / 71d1809 build 311039

[[ commit created by automation ]]

* Update dependencies from build 311039
No dependency updates to commit
[[ commit created by automation ]]

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 618ff9579e0..c60ad5ca116 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="5d23756b884483995432a21829fe65466b19e948" BarId="310209" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="71d1809a66d8aacbe21208baeb0bbc484191b3d1" BarId="311039" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index 9bb6b104a5a..e13cd51bae5 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -18,7 +18,7 @@
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>107</FSBuildVersion>
+    <FSBuildVersion>108</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From 375a3a6a494ad3ea1fe363d48efd3017fba9c4f4 Mon Sep 17 00:00:00 2001
From: Adam Boniecki <20281641+abonie@users.noreply.github.com>
Date: Mon, 27 Apr 2026 09:39:40 +0200
Subject: [PATCH 095/102] Update VS image to windows.vs2026preview.scout.amd64
 for release/dev18.0 (#19639)

---
 eng/release/insert-into-vs.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/eng/release/insert-into-vs.yml b/eng/release/insert-into-vs.yml
index 75457472265..7ea2007c503 100644
--- a/eng/release/insert-into-vs.yml
+++ b/eng/release/insert-into-vs.yml
@@ -15,7 +15,7 @@ stages:
   - job: Insert_VS
     pool:
       name: NetCore1ESPool-Svc-Internal
-      image: windows.vs2022preview.amd64
+      image: windows.vs2026preview.scout.amd64
     variables:
     - group: DotNet-VSTS-Infra-Access
     - name: InsertAccessToken

From 23becd6fd0d063ed488cbf64c2f3465ecb267f90 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 28 Apr 2026 10:53:10 +0000
Subject: [PATCH 096/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260422.2 (#19638)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26220.5 -> To Version 10.0.0-beta.26222.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index c65966eb873..d9b4f5e7851 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26220.5</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26222.2</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index c60ad5ca116..e98e39f7929 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26220.5">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26222.2">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>54892fe0f027f2f08c59cf0802a2d7f488632e2f</Sha>
+      <Sha>58713cb9a664ed67642127fcaf70b8c0c3b55ef2</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 85548253d8c..6c8b8424320 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26220.5",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26222.2",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From e1d6f7ed64442fa1c150ad2f4ca4c3d0e6a27494 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 30 Apr 2026 11:07:24 +0200
Subject: [PATCH 097/102] [release/dev18.0] Source code updates from
 dotnet/dotnet (#19665)

* Backflow from https://github.com/dotnet/dotnet / dd8ced2 build 312468

Diff: https://github.com/dotnet/dotnet/compare/5e2c70eefd4ce18d4cfac1013252bb5c990a3dab..dd8ced28bfd57694643337c5dcf1877d5159948b

From: https://github.com/dotnet/dotnet/commit/5e2c70eefd4ce18d4cfac1013252bb5c990a3dab
To: https://github.com/dotnet/dotnet/commit/dd8ced28bfd57694643337c5dcf1877d5159948b

[[ commit created by automation ]]

* Update dependencies from build 312468
No dependency updates to commit
[[ commit created by automation ]]

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.xml | 2 +-
 eng/Versions.props      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index e98e39f7929..3fc9f047060 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Dependencies>
-  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="71d1809a66d8aacbe21208baeb0bbc484191b3d1" BarId="311039" />
+  <Source Uri="https://github.com/dotnet/dotnet" Mapping="fsharp" Sha="dd8ced28bfd57694643337c5dcf1877d5159948b" BarId="312468" />
   <ProductDependencies>
     <Dependency Name="Microsoft.Build" Version="18.0.2">
       <Uri>https://github.com/dotnet/msbuild</Uri>
diff --git a/eng/Versions.props b/eng/Versions.props
index e13cd51bae5..0985b60f37b 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -18,7 +18,7 @@
     <!-- F# Version components -->
     <FSMajorVersion>10</FSMajorVersion>
     <FSMinorVersion>0</FSMinorVersion>
-    <FSBuildVersion>108</FSBuildVersion>
+    <FSBuildVersion>109</FSBuildVersion>
     <FSRevisionVersion>0</FSRevisionVersion>
     <!-- -->
     <!-- F# Language version -->

From a9c9aa16197805d06b8a5138fba655eb69c36571 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 7 May 2026 10:30:31 +0200
Subject: [PATCH 098/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260505.9 (#19693)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26222.2 -> To Version 10.0.0-beta.26255.9

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index d9b4f5e7851..b59d834239e 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26222.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26255.9</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 3fc9f047060..94848e53524 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26222.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26255.9">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>58713cb9a664ed67642127fcaf70b8c0c3b55ef2</Sha>
+      <Sha>658b93f2d1c0cdcdfb9c70113ff3c292cde97adb</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 6c8b8424320..9f7e25d61f6 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "10.0.106",
+    "version": "10.0.107",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "10.0.106",
+    "dotnet": "10.0.107",
     "vs": {
       "version": "17.8",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26222.2",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26255.9",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 6e6b361f470c144df88d52d2d7b39bc1b66dffa6 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Thu, 7 May 2026 09:42:24 +0000
Subject: [PATCH 099/102] [release/dev18.0] Update dependencies from
 dotnet/roslyn (#19636)

* Update dependencies from https://github.com/dotnet/roslyn build 20260422.3
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26217.6 -> To Version 5.0.0-2.26222.3

* Update dependencies from https://github.com/dotnet/roslyn build 20260426.17
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26217.6 -> To Version 5.0.0-2.26226.17

* Update dependencies from https://github.com/dotnet/roslyn build 20260427.2
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.0.0-2.26217.6 -> To Version 5.0.0-2.26227.2

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props                     | 16 ++++----
 eng/Version.Details.xml                       | 32 +++++++--------
 .../Microsoft.FSharp.Control/AsyncType.fs     | 41 ++++++++++++-------
 3 files changed, 50 insertions(+), 39 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index b59d834239e..3bf9b6a770b 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -19,14 +19,14 @@ This file should be imported by eng/Versions.props
     <optimizationwindows_ntx64MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx64MIBCRuntimePackageVersion>
     <optimizationwindows_ntx86MIBCRuntimePackageVersion>1.0.0-prerelease.25467.1</optimizationwindows_ntx86MIBCRuntimePackageVersion>
     <!-- dotnet-roslyn dependencies -->
-    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisPackageVersion>
-    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisCompilersPackageVersion>
-    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisCSharpPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
-    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
-    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
-    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26217.6</MicrosoftCodeAnalysisFeaturesPackageVersion>
-    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26217.6</MicrosoftVisualStudioLanguageServicesPackageVersion>
+    <MicrosoftCodeAnalysisPackageVersion>5.0.0-2.26228.14</MicrosoftCodeAnalysisPackageVersion>
+    <MicrosoftCodeAnalysisCompilersPackageVersion>5.0.0-2.26228.14</MicrosoftCodeAnalysisCompilersPackageVersion>
+    <MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.26228.14</MicrosoftCodeAnalysisCSharpPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.26228.14</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
+    <MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.26228.14</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
+    <MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.26228.14</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
+    <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.26228.14</MicrosoftCodeAnalysisFeaturesPackageVersion>
+    <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.26228.14</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet-runtime dependencies -->
     <SystemCollectionsImmutablePackageVersion>9.0.0</SystemCollectionsImmutablePackageVersion>
     <SystemComponentModelCompositionPackageVersion>9.0.0</SystemComponentModelCompositionPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 94848e53524..c368906ed66 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -42,37 +42,37 @@
       <Uri>https://github.com/dotnet/runtime</Uri>
       <Sha>9d5a6a9aa463d6d10b0b0ba6d5982cc82f363dc3</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.CodeAnalysis" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.CodeAnalysis.Features" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.CodeAnalysis.Compilers" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
-    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26217.6">
+    <Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.26228.14">
       <Uri>https://github.com/dotnet/roslyn</Uri>
-      <Sha>7888e0d795d36806bbaf3cecea9fc61f6aac8279</Sha>
+      <Sha>83e5a53ac08744260899d5012e20e1102ba87403</Sha>
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs b/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs
index 550ff931864..3ba6ab2a344 100644
--- a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs
+++ b/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs
@@ -49,9 +49,10 @@ type AsyncType() =
     [<VolatileField>]
     let mutable spinloop = true
         
-    let waitASec (t:Task) =
-        let result = t.Wait(TimeSpan(hours=0,minutes=0,seconds=1))
-        Assert.True(result, "Task did not finish after waiting for a second.")
+    // Use a generous timeout to avoid flaky failures on loaded CI machines where the thread pool may be saturated.
+    let waitForCompletion (t: Task) =
+        let result = t.Wait(TimeSpan.FromSeconds(30.0))
+        Assert.True(result, "Task did not finish after waiting for 30 seconds.")
 
     [<Fact>]
     member _.AsyncRunSynchronouslyReusesThreadPoolThread() =
@@ -153,34 +154,41 @@ type AsyncType() =
     member _.CreateTask () =
         let s = "Hello tasks!"
         let a = async { return s }
-        use t : Task<string> = Async.StartAsTask a
-        waitASec t
+        let t : Task<string> = Async.StartAsTask a
+        waitForCompletion t
         Assert.True (t.IsCompleted)
         Assert.AreEqual(s, t.Result)
 
     [<Fact>]
     member _.StartAsTaskCancellation () =
         let cts = new CancellationTokenSource()
+        let asyncStarted = new ManualResetEventSlim(false)
         let doSpinloop () = while spinloop do ()
         let a = async {
+            asyncStarted.Set()
             cts.CancelAfter (100)
             doSpinloop()
         }
 
-        use t : Task<unit> = Async.StartAsTask(a, cancellationToken = cts.Token)
+        let t : Task<unit> = Async.StartAsTask(a, cancellationToken = cts.Token)
+
+        // Wait for the async body to actually start executing before checking timing.
+        Assert.True(asyncStarted.Wait(30_000), "Async body did not start within 30 seconds")
+
         // Should not finish, we don't eagerly mark the task done just because it's been signaled to cancel.
         try
-            let result = t.Wait(300)
+            let result = t.Wait(1000)
             Assert.False (result)
         with :? AggregateException -> Assert.Fail "Task should not finish, yet"
 
         spinloop <- false
 
         try
-            waitASec t
+            let result = t.Wait(TimeSpan(hours=0,minutes=0,seconds=5))
+            Assert.True(result, "Task did not finish after waiting for 5 seconds.")
         with :? AggregateException as a ->
             match a.InnerException with
-            | :? TaskCanceledException as t -> ()
+            | :? TaskCanceledException -> ()
             | _ -> reraise()
 
         Assert.True (t.IsCompleted, "Task is not completed")
@@ -204,7 +212,7 @@ type AsyncType() =
         innerTcs.SetResult ()
 
         try
-            waitASec tcs.Task
+            waitForCompletion tcs.Task
         with :? AggregateException as a ->
             match a.InnerException with
             | :? TaskCanceledException -> ()
@@ -247,14 +255,17 @@ type AsyncType() =
 
     [<Fact>]
     member _.CancellationPropagatesToTask () =
+        let ewh = new ManualResetEvent(false)
         let a = async {
+                ewh.Set() |> Assert.True
                 while true do ()
             }
         let t = Async.StartAsTask a
+        ewh.WaitOne() |> Assert.True
         Async.CancelDefaultToken ()
         let mutable exceptionThrown = false
         try
-            t.Wait()
+            waitForCompletion t
         with e -> exceptionThrown <- true
         Assert.True (exceptionThrown)
         Assert.True(t.IsCanceled)
@@ -287,8 +298,8 @@ type AsyncType() =
     member _.CreateImmediateAsTask () =
         let s = "Hello tasks!"
         let a = async { return s }
-        use t : Task<string> = Async.StartImmediateAsTask a
-        waitASec t
+        let t : Task<string> = Async.StartImmediateAsTask a
+        waitForCompletion t
         Assert.True (t.IsCompleted)
         Assert.AreEqual(s, t.Result)
 
@@ -296,8 +307,8 @@ type AsyncType() =
     member _.StartImmediateAsTask () =
         let s = "Hello tasks!"
         let a = async { return s }
-        use t = Async.StartImmediateAsTask a
-        waitASec t
+        let t = Async.StartImmediateAsTask a
+        waitForCompletion t
         Assert.True (t.IsCompleted)
         Assert.AreEqual(s, t.Result)
 

From d2136ac277b58e782b02d1f169a691cae267e787 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
 <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 12 May 2026 09:05:28 +0200
Subject: [PATCH 100/102] Update dependencies from
 https://github.com/dotnet/arcade build 20260507.4 (#19706)

On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26255.9 -> To Version 10.0.0-beta.26257.4

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 3bf9b6a770b..83042269f2c 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props
 <Project>
   <PropertyGroup>
     <!-- dotnet-arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26255.9</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26257.4</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- dotnet-msbuild dependencies -->
     <MicrosoftBuildPackageVersion>18.0.2</MicrosoftBuildPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>18.0.2</MicrosoftBuildFrameworkPackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index c368906ed66..58784965830 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26255.9">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26257.4">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>658b93f2d1c0cdcdfb9c70113ff3c292cde97adb</Sha>
+      <Sha>3454b2fe822e52373f2604856417b0e6bce71d70</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25467.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 9f7e25d61f6..62bdf70fc21 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26255.9",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26257.4",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 2c8e9dd07d4e11f404b5a2e043b442bb9731694c Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Tue, 12 May 2026 09:33:51 +0200
Subject: [PATCH 101/102] Remove release/dev18.0 cruft - align with main

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
 azure-pipelines.yml                                           | 4 ++--
 docs/release-notes/.FSharp.Compiler.Service/11.0.0.md         | 1 -
 tests/fsharp/FSharpSuite.Tests.fsproj                         | 1 -
 vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj          | 4 ----
 .../src/FSharp.LanguageService/FSharp.LanguageService.fsproj  | 1 -
 vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj          | 2 --
 vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj           | 1 -
 7 files changed, 2 insertions(+), 12 deletions(-)
 delete mode 100644 docs/release-notes/.FSharp.Compiler.Service/11.0.0.md

diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 9e2af5c6221..19ed86c2d3f 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -29,11 +29,11 @@ variables:
   # The future "product" gets developed in main, so should be main in main.
   # When servicing branch gets created, this should maintain the mapping between F# servicing and VS servicing branches
   - name: FSharpReleaseBranchName
-    value: release/dev18.0
+    value: main
   # VS Insertion branch name (NOT the same as F# branch)
   # ( for main we insert into VS main and for all *previous* releases we insert into corresponding VS release),
   - name: VSInsertionTargetBranchName
-    value: rel/d18.0
+    value: main
   - name: _TeamName
     value: FSharp
   - name: TeamName
diff --git a/docs/release-notes/.FSharp.Compiler.Service/11.0.0.md b/docs/release-notes/.FSharp.Compiler.Service/11.0.0.md
deleted file mode 100644
index 8b137891791..00000000000
--- a/docs/release-notes/.FSharp.Compiler.Service/11.0.0.md
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tests/fsharp/FSharpSuite.Tests.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj
index 2ee9e87c2b3..ab0a033b43f 100644
--- a/tests/fsharp/FSharpSuite.Tests.fsproj
+++ b/tests/fsharp/FSharpSuite.Tests.fsproj
@@ -6,7 +6,6 @@
     <TargetFrameworks Condition="'$(OS)' == 'Unix' or '$(BUILDING_USING_DOTNET)' == 'true'">$(FSharpNetCoreProductTargetFramework)</TargetFrameworks>
     <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
     <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81</AssetTargetFallback>
-    <OutputType>Library</OutputType>
     <!-- xUnit3 requires test projects to be executable -->
     <OutputType>Exe</OutputType>
     <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
diff --git a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
index 6429b38fe40..ea8a0f15921 100644
--- a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
+++ b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
@@ -178,10 +178,6 @@
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures" Version="$(MicrosoftCodeAnalysisEditorFeaturesTextVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="$(MicrosoftCodeAnalysisExternalAccessFSharpVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />   
-    <PackageReference Include="Microsoft.VisualStudio.ProjectSystem" Version="$(MicrosoftVisualStudioProjectSystemVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="Microsoft.VisualStudio.ProjectSystem.Managed" Version="$(MicrosoftVisualStudioProjectSystemManagedVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
-    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.2" Condition="'$(Configuration)' == 'Debug'" />    
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem" Version="$(MicrosoftVisualStudioProjectSystemVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.ProjectSystem.Managed" Version="$(MicrosoftVisualStudioProjectSystemManagedVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" Condition="'$(Configuration)' == 'Debug'" />    
diff --git a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
index 0d948cc586b..848ba3fcf67 100644
--- a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
+++ b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
@@ -56,7 +56,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Designer.Interfaces" Version="$(MicrosoftVisualStudioDesignerInterfacesVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Language.Intellisense" Version="$(MicrosoftVisualStudioLanguageIntellisenseVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
diff --git a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
index 0648748efbe..95878c043b9 100644
--- a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
+++ b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj
@@ -19,7 +19,6 @@
   </ItemGroup>
 
   <ItemGroup>
-	<Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullnessShims.fs" />
 	<Compile Include="$(FSharpSourcesRoot)\Compiler\Utilities\NullHelpers.fs" />
     <EmbeddedText Include="VFSIstrings.txt" />
     <Compile Include="AssemblyInfo.fs" />
@@ -58,7 +57,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
     <PackageReference Update="Microsoft.VSSDK.BuildTools" Version="$(MicrosoftVSSDKBuildToolsVersion)" />
diff --git a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
index 941d611dc46..83d89379565 100644
--- a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
+++ b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
@@ -59,7 +59,6 @@
     <PackageReference Include="Microsoft.VisualStudio.Shell.Design" Version="$(MicrosoftVisualStudioShellDesignVersion)" />
     <PackageReference Include="Microsoft.Internal.VisualStudio.Shell.Framework" Version="$(MicrosoftInternalVisualStudioShellFrameworkVersion)" />
     <PackageReference Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingVersion)" />
-    <PackageReference Include="XUnit" Version="$(XUnitVersion)" />
     <PackageReference Include="xunit.v3.extensibility.core" Version="$(XunitVersion)" />
     <PackageReference Include="xunit.v3.assert" Version="$(XunitVersion)" />
   </ItemGroup>

From 9969555cfa6e03b28402d3f8a6af512ef6eb6ebf Mon Sep 17 00:00:00 2001
From: Tomas Grosup <Tomas.Grosup@gmail.com>
Date: Tue, 12 May 2026 10:41:48 +0200
Subject: [PATCH 102/102] =?UTF-8?q?Add=20ResetToTargetPaths=20for=20dev18.?=
 =?UTF-8?q?0=E2=86=92main=20merge=20flow?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Prevents recurring conflicts on infra/versioning files where main
is always ahead. Real code changes (security backports) still flow.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
 .config/service-branch-merge.json | 12 +++++++++++-
 eng/release/insert-into-vs.yml    | 16 +++++++++++++---
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/.config/service-branch-merge.json b/.config/service-branch-merge.json
index 409525cc16c..d9ed92d61ba 100644
--- a/.config/service-branch-merge.json
+++ b/.config/service-branch-merge.json
@@ -15,7 +15,17 @@
         },
         "release/dev18.0": {
             "MergeToBranch": "main",
-            "ExtraSwitches": "-QuietComments"
+            "ExtraSwitches": "-QuietComments",
+            "ResetToTargetPaths": [
+                "global.json",
+                "eng/Version.Details.xml",
+                "eng/Version.Details.props",
+                "eng/Versions.props",
+                "eng/common/**",
+                "eng/TargetFrameworks.props",
+                "azure-pipelines.yml",
+                "azure-pipelines-PR.yml"
+            ]
         },
         "main": {
             "MergeToBranch": "feature/net11-scouting",
diff --git a/eng/release/insert-into-vs.yml b/eng/release/insert-into-vs.yml
index 7ea2007c503..cbaec8f130e 100644
--- a/eng/release/insert-into-vs.yml
+++ b/eng/release/insert-into-vs.yml
@@ -17,9 +17,6 @@ stages:
       name: NetCore1ESPool-Svc-Internal
       image: windows.vs2026preview.scout.amd64
     variables:
-    - group: DotNet-VSTS-Infra-Access
-    - name: InsertAccessToken
-      value: $(dn-bot-devdiv-build-rw-code-rw-release-rw)
     - name: InsertBuildPolicy
       value: ${{ parameters.insertBuildPolicy }}
     - name: InsertTargetBranch
@@ -70,6 +67,19 @@ stages:
           $autoCompleteStr = if ($autoComplete) { 'true' } else { 'false' }
           Write-Host "Setting InsertAutoComplete to '$autoCompleteStr'"
           Write-Host "##vso[task.setvariable variable=InsertAutoComplete]$autoCompleteStr"
+    - task: AzureCLI@2
+      displayName: 'Get DevDiv Access Token (WIF)'
+      inputs:
+        azureSubscription: 'dnceng-fsharp-vs-insertion-wif'
+        scriptType: 'pscore'
+        scriptLocation: 'inlineScript'
+        inlineScript: |
+          $token = az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query accessToken -o tsv
+          Write-Host "##vso[task.setvariable variable=InsertAccessToken;issecret=true]$token"
+      condition: and(succeeded(), or(eq(variables['Build.SourceBranch'], '${{ parameters.componentBranchName }}'), eq(variables['Build.SourceBranch'], 'refs/heads/${{ parameters.componentBranchName }}')))
+    - script: git config --global credential.helper ""
+      displayName: 'Disable GCM (Entra token too large for credential store)'
+      condition: and(succeeded(), or(eq(variables['Build.SourceBranch'], '${{ parameters.componentBranchName }}'), eq(variables['Build.SourceBranch'], 'refs/heads/${{ parameters.componentBranchName }}')))
     - task: ms-vseng.MicroBuildShipTasks.55100717-a81d-45ea-a363-b8fe3ec375ad.MicroBuildInsertVsPayload@5
       displayName: 'Insert VS Payload'
       inputs:
