Skip to content

Commit 59f2833

Browse files
authored
Update docs.microsoft.com usages to learn.microsoft.com (#102881)
* Update https://docs.microsoft.com to https://learn.microsoft.com * Update http://docs.microsoft.com/ to https://learn.microsoft.com (removes trailing slash) * Update docs.microsoft.com to https://learn.microsoft.com * Update docs.microsoft.com to learn.microsoft.com * Replace learn.microsoft.com/en-us/ with learn.microsoft.com/ to remove locale from urls
1 parent cb915b2 commit 59f2833

File tree

307 files changed

+559
-559
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

307 files changed

+559
-559
lines changed

README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ all supported platforms, as well as the sources to .NET runtime and libraries.
2121

2222
Official Starting Page: <https://dotnet.microsoft.com>
2323

24-
* [How to use .NET](https://docs.microsoft.com/dotnet/core/get-started) (with VS, VS Code, command-line CLI)
24+
* [How to use .NET](https://learn.microsoft.com/dotnet/core/get-started) (with VS, VS Code, command-line CLI)
2525
* [Install official releases](https://dotnet.microsoft.com/download)
2626
* [Install daily builds](docs/project/dogfooding.md)
27-
* [Documentation](https://docs.microsoft.com/dotnet/core) (Get Started, Tutorials, Porting from .NET Framework, API reference, ...)
28-
* [Deploying apps](https://docs.microsoft.com/dotnet/core/deploying)
27+
* [Documentation](https://learn.microsoft.com/dotnet/core) (Get Started, Tutorials, Porting from .NET Framework, API reference, ...)
28+
* [Deploying apps](https://learn.microsoft.com/dotnet/core/deploying)
2929
* [Supported OS versions](https://github.com/dotnet/core/blob/main/os-lifecycle-policy.md)
3030
* [Roadmap](https://github.com/dotnet/core/blob/main/roadmap.md)
3131
* [Releases](https://github.com/dotnet/core/tree/main/release-notes)
@@ -53,7 +53,7 @@ For other issues, please file them to their appropriate sibling repos. We have l
5353
## Useful Links
5454

5555
* [.NET source index](https://source.dot.net) / [.NET Framework source index](https://referencesource.microsoft.com)
56-
* [API Reference docs](https://docs.microsoft.com/dotnet/api)
56+
* [API Reference docs](https://learn.microsoft.com/dotnet/api)
5757
* [.NET API Catalog](https://apisof.net) (incl. APIs from daily builds and API usage info)
5858
* [API docs writing guidelines](https://github.com/dotnet/dotnet-api-docs/wiki) - useful when writing /// comments
5959
* [.NET Discord Server](https://aka.ms/dotnet-discord) - a place to discuss the development of .NET and its ecosystem
@@ -65,7 +65,7 @@ For other issues, please file them to their appropriate sibling repos. We have l
6565
There are many .NET related projects on GitHub.
6666

6767
* [.NET home repo](https://github.com/Microsoft/dotnet) - links to 100s of .NET projects, from Microsoft and the community.
68-
* [ASP.NET Core home](https://docs.microsoft.com/aspnet/core) - the best place to start learning about ASP.NET Core.
68+
* [ASP.NET Core home](https://learn.microsoft.com/aspnet/core) - the best place to start learning about ASP.NET Core.
6969

7070
This project has adopted the code of conduct defined by the [Contributor Covenant](https://contributor-covenant.org) to clarify expected behavior in our community. For more information, see the [.NET Foundation Code of Conduct](https://www.dotnetfoundation.org/code-of-conduct).
7171

docs/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Getting Started
1212
===============
1313

1414
- [Installing the .NET SDK](https://dotnet.microsoft.com/download)
15-
- [Official .NET Docs](https://docs.microsoft.com/dotnet/core/)
15+
- [Official .NET Docs](https://learn.microsoft.com/dotnet/core/)
1616

1717
Workflow (Building, testing, benchmarking, profiling, etc.)
1818
===============
@@ -69,8 +69,8 @@ Other Information
6969

7070
- [.NET Glossary](project/glossary.md)
7171
- [.NET Filename Encyclopedia](project/dotnet-filenames.md)
72-
- [Porting to .NET Core](https://docs.microsoft.com/en-us/dotnet/standard/analyzers/portability-analyzer)
72+
- [Porting to .NET Core](https://learn.microsoft.com/dotnet/standard/analyzers/portability-analyzer)
7373
- [.NET Standards (Ecma)](project/dotnet-standards.md)
7474
- [CLR Configuration Knobs](../src/coreclr/inc/clrconfigvalues.h)
75-
- [CLR overview](https://docs.microsoft.com/dotnet/standard/clr)
75+
- [CLR overview](https://learn.microsoft.com/dotnet/standard/clr)
7676
- [Wikipedia Entry for the CLR](https://en.wikipedia.org/wiki/Common_Language_Runtime)

docs/coding-guidelines/adding-api-guidelines.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ the implementation without compat concerns in future releases.
2525
### Determine target framework
2626

2727
`net8.0` is the target framework version currently under development and the new apis
28-
should be added to `net8.0`. [More Information on TargetFrameworks](https://docs.microsoft.com/en-us/dotnet/standard/frameworks)
28+
should be added to `net8.0`. [More Information on TargetFrameworks](https://learn.microsoft.com/dotnet/standard/frameworks)
2929

3030
## Making the changes in repo
3131

@@ -42,7 +42,7 @@ If your new API or the APIs it calls throw any exceptions, those need to be manu
4242

4343
After your change is merged, we will eventually port them to the dotnet-api-docs repo, where we will review them for language and proper style (For more information, see the [API writing guidelines](https://github.com/dotnet/dotnet-api-docs/wiki)).
4444

45-
Once the dotnet-api-docs change is merged, your comments will start showing up in the official API documentation at http://docs.microsoft.com/, and later they'll appear in IntelliSense in Visual Studio and Visual Studio Code.
45+
Once the dotnet-api-docs change is merged, your comments will start showing up in the official API documentation at https://learn.microsoft.com, and later they'll appear in IntelliSense in Visual Studio and Visual Studio Code.
4646
Once the documentation is official, any subsequent updates to it must be made directly in https://github.com/dotnet/dotnet-api-docs/. It's fine to make updates to the triple slash comments later, they just won't automatically flow into the official docs.
4747

4848
## FAQ

docs/coding-guidelines/api-guidelines/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ actual [book][FDG].
99
To submit new proposals for design guidelines, simply create a PR adding or
1010
modifying an existing file.
1111

12-
[docs]: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/
12+
[docs]: https://learn.microsoft.com/dotnet/standard/design-guidelines/
1313
[FDG]: https://amazon.com/dp/0135896460

docs/coding-guidelines/clr-code-guide.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1028,14 +1028,14 @@ Here are some immediate tips for working well with the managed-debugging service
10281028
- Do not change behavior when under the debugger. An app should behave identically when run outside or under the debugger. This is absolutely necessary else we get complaints like "my program only crashes when run under the debugger". This is also necessary because somebody may attach a debugger to an app after the fact. Specific examples of this:
10291029
- Don't assume that just because an app is under the debugger that somebody is trying to debug it.
10301030
- Don't add additional run-time error checks when under the debugger. For example, avoid code like: if ((IsDebuggerPresent() && (argument == null)) { throw MyException(); }
1031-
- Avoid massive perf changes when under the debugger. For example, don't use an interpreted stub just because you're under the debugger. We then get bugs like [my app is 100x slower when under a debugger](https://docs.microsoft.com/en-us/archive/blogs/jmstall/psa-pinvokes-may-be-100x-slower-under-the-debugger).
1031+
- Avoid massive perf changes when under the debugger. For example, don't use an interpreted stub just because you're under the debugger. We then get bugs like [my app is 100x slower when under a debugger](https://learn.microsoft.com/archive/blogs/jmstall/psa-pinvokes-may-be-100x-slower-under-the-debugger).
10321032
- Avoid algorithmic changes. For example, do not make the JIT generate non-optimized code just because an app is under the debugger. Do not make the loader policy resolve to a debuggable-ngen image just because an app is under the debugger.
10331033
- Separate your code into a) side-effect-free (non-mutating) read-only accessors and b) functions that change state. The motivation is that the debugger needs to be able to read-state in a non-invasive way. For example, don't just have GetFoo() that will lazily create a Foo if it's not available. Instead, split it out like so:
10341034
- GetFoo() - fails if a Foo does not exist. Being non-mutating, this should also be GC_NOTRIGGER. Non-mutating will also make it much easier to DAC-ize. This is what the debugger will call.
10351035
- and GetOrCreateFoo() that is built around GetFoo(). The rest of the runtime can call this.
10361036
- The debugger can then just call GetFoo(), and deal with the failure accordingly.
10371037
- If you add a new stub (or way to call managed code), make sure that you can source-level step-in (F11) it under the debugger. The debugger is not psychic. A source-level step-in needs to be able to go from the source-line before a call to the source-line after the call, or managed code developers will be very confused. If you make that call transition be a giant 500 line stub, you must cooperate with the debugger for it to know how to step-through it. (This is what StubManagers are all about. See [src\vm\stubmgr.h](https://github.com/dotnet/runtime/blob/main/src/coreclr/vm/stubmgr.h)). Try doing a step-in through your new codepath under the debugger.
1038-
- **Beware of timeouts** : The debugger may completely suspend your process at arbitrary points. In most cases, the debugger will do the right thing (and suspend your timeout too), but not always. For example, if you have some other process waiting for info from the debuggee, it [may hit a timeout](https://docs.microsoft.com/en-us/archive/blogs/jmstall/why-you-sometimes-get-a-bogus-contextswitchdeadlock-mda-under-the-debugger).
1038+
- **Beware of timeouts** : The debugger may completely suspend your process at arbitrary points. In most cases, the debugger will do the right thing (and suspend your timeout too), but not always. For example, if you have some other process waiting for info from the debuggee, it [may hit a timeout](https://learn.microsoft.com/archive/blogs/jmstall/why-you-sometimes-get-a-bogus-contextswitchdeadlock-mda-under-the-debugger).
10391039
- **Use CLR synchronization primitives (like Crst)**. In addition to all the reasons listed in the synchronization section, the CLR-aware primitives can cooperate with the debugging services. For example:
10401040
- The debugger needs to know when threads are modifying sensitive data (which correlates to when the threads lock that data).
10411041
- Timeouts for CLR synchronization primitives may operate better in the face of being debugged.

docs/coding-guidelines/framework-design-guidelines-digest.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -308,5 +308,5 @@ conformance to the [Framework Design Guidelines][FDG] (also see [MSDN](https://m
308308

309309
## Presentations
310310

311-
* [Overview of the Framework Design Guidelines](https://docs.microsoft.com/en-us/archive/blogs/kcwalina/online-lecture-on-api-design)
312-
* [TechEd 2007 Presentation about framework engineering](https://docs.microsoft.com/en-us/archive/blogs/kcwalina/video-recording-of-framework-engineering-architecting-designing-and-developing-reusable-libraries)
311+
* [Overview of the Framework Design Guidelines](https://learn.microsoft.com/archive/blogs/kcwalina/online-lecture-on-api-design)
312+
* [TechEd 2007 Presentation about framework engineering](https://learn.microsoft.com/archive/blogs/kcwalina/video-recording-of-framework-engineering-architecting-designing-and-developing-reusable-libraries)

docs/coding-guidelines/interop-guidelines.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Interop Guidelines
22
==================
33

4-
We follow the [best practices for native interop](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/best-practices) with the additional guidelines below that are specific to this repo.
4+
We follow the [best practices for native interop](https://learn.microsoft.com/dotnet/standard/native-interop/best-practices) with the additional guidelines below that are specific to this repo.
55

66
## Goals
77
We have the following goals related to interop code being used in dotnet/runtime:
@@ -166,7 +166,7 @@ Using enums instead of partial, static classes can lead to needing lots of casts
166166

167167
## P/Invoke Definitions
168168

169-
When defining the P/Invoke signatures and structs, we follow the guidelines in the [interop best practices documentation](https://docs.microsoft.com/en-us/dotnet/standard/native-interop/best-practices).
169+
When defining the P/Invoke signatures and structs, we follow the guidelines in the [interop best practices documentation](https://learn.microsoft.com/dotnet/standard/native-interop/best-practices).
170170

171171
The runtime repo makes use of [source-generated p/invokes](../design/features/source-generator-pinvokes.md) whenever possible (see [the compatibility doc](../design/libraries/LibraryImportGenerator/Compatibility.md) for unsupported scenarios). Methods should be marked `LibraryImport` and be `static` and `partial`.
172172

docs/coding-guidelines/libraries-packaging.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Most metadata for packages is controlled centrally in the repository and individ
4646
<PackageDescription>Logging abstractions for Microsoft.Extensions.Logging.</PackageDescription>
4747
```
4848

49-
Package content can be defined using any of the publicly defined Pack inputs: https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets
49+
Package content can be defined using any of the publicly defined Pack inputs: https://learn.microsoft.com/nuget/reference/msbuild-targets
5050

5151
### Package Readme
5252

docs/design/coreclr/botr/clr-abi.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ Read everything in the documented Windows and non-Windows ABI documentation. The
1414

1515
## Windows ABI documentation
1616

17-
AMD64: See [x64 Software Conventions](https://docs.microsoft.com/en-us/cpp/build/x64-software-conventions).
17+
AMD64: See [x64 Software Conventions](https://learn.microsoft.com/cpp/build/x64-software-conventions).
1818

19-
ARM: See [Overview of ARM32 ABI Conventions](https://docs.microsoft.com/en-us/cpp/build/overview-of-arm-abi-conventions).
19+
ARM: See [Overview of ARM32 ABI Conventions](https://learn.microsoft.com/cpp/build/overview-of-arm-abi-conventions).
2020

21-
ARM64: See [Overview of ARM64 ABI conventions](https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions).
21+
ARM64: See [Overview of ARM64 ABI conventions](https://learn.microsoft.com/cpp/build/arm64-windows-abi-conventions).
2222

2323
## Non-Windows ABI documentation
2424

docs/design/coreclr/botr/corelib.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ The CLR provides a [`mscorlib` binder](https://github.com/dotnet/runtime/blob/ma
4040

4141
# Calling from managed to native code
4242

43-
Two techniques exist for calling into the CLR from managed code. FCall allows you to call directly into the CLR code, and provides a lot of flexibility in terms of manipulating objects, though it is easy to cause GC holes by not tracking object references correctly. QCall also allows you to call into the CLR via the P/Invoke, but is much harder to accidentally mis-use. FCalls are identified in managed code as extern methods with the [`MethodImplOptions.InternalCall`](https://docs.microsoft.com/dotnet/api/system.runtime.compilerservices.methodimploptions) bit set. QCalls are marked `static extern` methods similar to regular P/Invokes, but are directed toward a library called `"QCall"`.
43+
Two techniques exist for calling into the CLR from managed code. FCall allows you to call directly into the CLR code, and provides a lot of flexibility in terms of manipulating objects, though it is easy to cause GC holes by not tracking object references correctly. QCall also allows you to call into the CLR via the P/Invoke, but is much harder to accidentally mis-use. FCalls are identified in managed code as extern methods with the [`MethodImplOptions.InternalCall`](https://learn.microsoft.com/dotnet/api/system.runtime.compilerservices.methodimploptions) bit set. QCalls are marked `static extern` methods similar to regular P/Invokes, but are directed toward a library called `"QCall"`.
4444

4545
There is a small variant of FCall called HCall (for Helper call) for implementing JIT helpers. The HCall is intended for doing things like accessing multi-dimensional array elements, range checks, etc. The only difference between HCall and FCall is that HCall methods won't show up in an exception stack trace.
4646

@@ -50,13 +50,13 @@ First, remember that you should be writing as much as possible in managed code.
5050

5151
Reasons to write FCalls in the past generally fell into three camps: missing language features, better performance, or implementing unique interactions with the runtime. C# now has almost every useful language feature that you could get from C++, including unsafe code and stack-allocated buffers, and this eliminates the first two reasons for FCalls. We have ported some parts of the CLR that were heavily reliant on FCalls to managed code in the past (such as Reflection, some Encoding, and String operations) and we intend to continue this momentum.
5252

53-
If the only reason you're defining a FCall method is to call a native method, you should be using P/Invoke to call the method directly. [P/Invoke](https://docs.microsoft.com/dotnet/api/system.runtime.interopservices.dllimportattribute) is the public native method interface and should be doing everything you need in a correct manner.
53+
If the only reason you're defining a FCall method is to call a native method, you should be using P/Invoke to call the method directly. [P/Invoke](https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.dllimportattribute) is the public native method interface and should be doing everything you need in a correct manner.
5454

5555
If you still need to implement a feature inside the runtime, consider if there is a way to reduce the frequency of transitioning to native code. Can you write the common case in managed and only call into native for some rare corner cases? You're usually best off keeping as much as possible in managed code.
5656

5757
QCalls are the preferred mechanism going forward. You should only use FCalls when you are "forced" to. This happens when there is common "short path" through the code that is important to optimize. This short path should not be more than a few hundred instructions, cannot allocate GC memory, take locks or throw exceptions (`GC_NOTRIGGER`, `NOTHROWS`). In all other circumstances (and especially when you enter a FCall and then simply erect HelperMethodFrame), you should be using QCall.
5858

59-
FCalls were specifically designed for short paths of code that must be optimized. They allowed explicit control over when erecting a frame was done. However, it is error prone and not worth the complexity for many APIs. QCalls are essentially P/Invokes into the CLR. In the event the performance of an FCall is required consider creating a QCall and marking it with [`SuppressGCTransitionAttribute`](https://docs.microsoft.com/dotnet/api/system.runtime.interopservices.suppressgctransitionattribute).
59+
FCalls were specifically designed for short paths of code that must be optimized. They allowed explicit control over when erecting a frame was done. However, it is error prone and not worth the complexity for many APIs. QCalls are essentially P/Invokes into the CLR. In the event the performance of an FCall is required consider creating a QCall and marking it with [`SuppressGCTransitionAttribute`](https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.suppressgctransitionattribute).
6060

6161
As a result, QCalls give you some advantageous marshaling for `SafeHandle`s automatically – your native method just takes a `HANDLE` type, and can be used without worrying whether someone will free the handle while in that method body. The resulting FCall method would need to use a `SafeHandleHolder` and may need to protect the `SafeHandle`, etc. Leveraging the P/Invoke marshaler can avoid this additional plumbing code.
6262

docs/design/coreclr/botr/guide-for-porting.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ both the JIT and VM.
181181

182182
2. Architecture specific relocation information (to represent generation of
183183
relocations for use by load, store, jmp and call instructions) See
184-
<https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#coff-relocations-object-only>
184+
<https://learn.microsoft.com/windows/win32/debug/pe-format#coff-relocations-object-only>
185185
for the sort of details that need to be defined.
186186

187187
3. Behavior and accessibility of processor single step features from within a

docs/design/coreclr/jit/viewing-jit-dumps.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ For example, for Windows x64 machine, the project file is:
115115
</Project>
116116
```
117117
118-
You can find a list of RIDs and their corresponding OSes [here](https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog).
118+
You can find a list of RIDs and their corresponding OSes [here](https://learn.microsoft.com/dotnet/articles/core/rid-catalog).
119119
120120
* After you've finished editing the code, run `dotnet restore` and `dotnet publish -c Release`. This should drop all of the binaries needed to run your app in `bin/Release/<tfm>/<rid>/publish`.
121121
* Overwrite the CLR dlls with the ones you've built locally. If you're a fan of the command line, here are some shell commands for doing this:

0 commit comments

Comments
 (0)