#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)