#MOC
# .NET
> **.NET (pronounced as "dot net"; formerly named .NET Core)** is a free and open-source, managed computer software framework for Windows, Linux, and macOS operating systems. It **is a cross-platform successor to .NET Framework.**
> [Wikipedia](https://en.wikipedia.org/wiki/.NET)
.NET supports multiple languages, the most popular ones being [[CSharp|C#]] and [[FSharp|F#]].
## UI
[[UI in Dotnet|UI in .NET]]
## Interacting with External Services
[[Interacting with External Services in Dotnet|Interacting with External Services in .NET]]
## Exposing APIs
Some tools for exposing APIs in .NET are [[ASP.NET]] and [[gRPC in .NET|gRPC]].
## Dealing with Data
[[Dealing with Data in Dotnet|Dealing with Data in .NET]]
## DevOps
For information about the .NET runtime, including configuration files and various app deployment options see [[Dotnet Runtime|.NET Runtime]].
For *dev-time* stuff see [[MSBuild]]. For adding version and git info to builds see [[GitInfo]].
For anything related to NuGet, see [[NuGet]].
[NUKE](https://nuke.build/) is a build engine similar to FAKE but one where you write build scripts in C#. See [this](https://blog.depersio.net/post/697738122173317120/publishing-nuget-packages-with-nuke-azure-devops) for an intro.
## Testing
- [[SpecFlow]]
- [Castle.Core](https://github.com/castleproject/Core) is a dynamic object proxy library that can be used to easily generate subtypes at runtime. It is used by a lot of well-known mocking frameworks (including [NSubstitute](https://github.com/nsubstitute/NSubstitute)) to generate mocks.
## Assorted Topics
- [[Getting all Inherited Fields Using Reflection]]
- [[Reference Equality Comparer]]
- Embedding files in an assembly is a good way to ensure the necessary files are not inadvertently changed (or deleted), and to guarantee their contents if the assembly is signed. For accessing embedded resources see [[Accessing Embedded Resources]].
- [[Getting the Path to Executing Assembly]]
- [[Installing Dotnet on Raspberry Pi|Installing .NET on Raspberry Pi]]
- For documentation about different dotTrace profiling methods see [[Profiling Types dotTrace]]
- [[Dotnet Task Monad|.NET Task Monad]]
## Components
- For assigning values to runtime objects see [[ConditionalWeakTableTKey,TValue Class|ConditionalWeakTable]]
- [[AppDomains]]
- For differences between the `ImmutableList` and the new `ImmutableArray` see [[Please Welcome ImmutableArray]]
## Tools
- [[NodaTime]]
- [[Excel DNA]] is a library that allows you to run .NET code in Excel
- [SharpLab](https://sharplab.io/) is an IL decompiler that runs in the browser
- [MediatR](https://github.com/jbogard/MediatR) is simple to use C# [[Mediator Pattern - Wikipedia|mediator pattern implementation]]
## Resources
- [Awesome .NET](https://github.com/quozd/awesome-dotnet) and [Awesome .NET Core](https://github.com/thangchung/awesome-dotnet-core) are nice resource compendiums.
- [Microsoft's Learn .NET Portal](https://docs.microsoft.com/en-us/learn/dotnet/)
- [Practical ASP.NET Samples](https://github.com/dodyg/practical-aspnetcore)
- Microsoft has a collection of resources for Java developers [Moving to C# and the .NET Framework, for Java Developers](https://www.microsoft.com/en-us/download/details.aspx?id=6073).
- [C# Design Patterns for Humans](https://github.com/anupavanm/csharp-design-patterns-for-humans)
- [Microsoft .NET Architecture Guides](https://dotnet.microsoft.com/en-us/learn/dotnet/architecture-guides)