diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets
index 4deb15bcd..861f49921 100644
--- a/.paket/Paket.Restore.targets
+++ b/.paket/Paket.Restore.targets
@@ -111,7 +111,7 @@
-
+
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index f59b7b34d..0cb0e92e5 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,3 +1,7 @@
+## 17.2.3
+
+* Fix external docs link [#794](https://github.com/fsprojects/FSharp.Formatting/issues/794)
+
## 17.2.2
* Improvement for `` [#789](https://github.com/fsprojects/FSharp.Formatting/issues/789)
diff --git a/docs/apidocs.fsx b/docs/apidocs.fsx
index 8894523d7..c35b8d19a 100644
--- a/docs/apidocs.fsx
+++ b/docs/apidocs.fsx
@@ -64,7 +64,7 @@ Usually the same template can be used as for [other content](content.html).
## Classic XML Doc Comments
-XML Doc Comments may use [the normal F# and C# XML doc standards](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/).
+XML Doc Comments may use [the normal F# and C# XML doc standards](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/).
The tags that form the core of the XML doc specification are:
diff --git a/docs/content/fsdocs-default.css b/docs/content/fsdocs-default.css
index 68b13131c..90418fc0e 100644
--- a/docs/content/fsdocs-default.css
+++ b/docs/content/fsdocs-default.css
@@ -103,7 +103,7 @@ blockquote {
/*--------------------------------------------------------------------------
- Formatting tables in fsdocs-content, using docs.microsoft.com tables
+ Formatting tables in fsdocs-content, using learn.microsoft.com tables
/*--------------------------------------------------------------------------*/
#fsdocs-content .table {
diff --git a/src/FSharp.Formatting.ApiDocs/GenerateModel.fs b/src/FSharp.Formatting.ApiDocs/GenerateModel.fs
index 6a4de3f14..6d766b517 100644
--- a/src/FSharp.Formatting.ApiDocs/GenerateModel.fs
+++ b/src/FSharp.Formatting.ApiDocs/GenerateModel.fs
@@ -947,7 +947,7 @@ type internal CrossReferenceResolver(root, collectionName, qualify, extensions)
let docs = noParen.Replace("``", "").Replace("`", "-").ToLower()
- let link = sprintf "https://docs.microsoft.com/dotnet/api/%s" docs
+ let link = sprintf "https://learn.microsoft.com/dotnet/api/%s" docs
{ IsInternal = false
ReferenceLink = link
diff --git a/tests/FSharp.ApiDocs.Tests/ApiDocsTests.fs b/tests/FSharp.ApiDocs.Tests/ApiDocsTests.fs
index 1fff95f02..2f40960e1 100644
--- a/tests/FSharp.ApiDocs.Tests/ApiDocsTests.fs
+++ b/tests/FSharp.ApiDocs.Tests/ApiDocsTests.fs
@@ -644,7 +644,7 @@ let ``ApiDocs test that cref generation works`` (format: OutputFormat) =
|> shouldContainText "Assembly"
files.[(sprintf "creflib4-class4.%s" format.Extension)]
- |> shouldContainText "https://docs.microsoft.com/dotnet/api/system.reflection.assembly"
+ |> shouldContainText "https://learn.microsoft.com/dotnet/api/system.reflection.assembly"
// F# tests (at least we not not crash for them, compiler doesn't resolve anything)
// reference class in same assembly
@@ -660,7 +660,7 @@ let ``ApiDocs test that cref generation works`` (format: OutputFormat) =
files.[(sprintf "creflib2-class4.%s" format.Extension)]
|> shouldContainText "Assembly"
- //files.[(sprintf "creflib2-class4.%s" format.Extension)] |> shouldContainText "https://docs.microsoft.com/dotnet/api/system.reflection.assembly"
+ //files.[(sprintf "creflib2-class4.%s" format.Extension)] |> shouldContainText "https://learn.microsoft.com/dotnet/api/system.reflection.assembly"
// F# tests (fully quallified)
// reference class in same assembly
@@ -689,7 +689,7 @@ let ``ApiDocs test that cref generation works`` (format: OutputFormat) =
|> shouldContainText "Assembly"
files.[(sprintf "creflib2-class8.%s" format.Extension)]
- |> shouldContainText "https://docs.microsoft.com/dotnet/api/system.reflection.assembly"
+ |> shouldContainText "https://learn.microsoft.com/dotnet/api/system.reflection.assembly"
[]
[]