In order to get the most out of the Umbraco 5 sourcecode, prior knowledge of the following toolsets will come in handy. Note that this guide is targeted at those who wish to “dig deep” into the Umbraco 5 sourcecode, and the below guide is not necessarily a list of pre-requisites to build websites using the CMS itself as it provides layers of abstraction to help broaden the reach of these technologies.
Razor
Views in the backoffice code, and default examples provided for front-end templates, are produced using the Razor syntax released by Microsoft in January 2011. Razor offers a concise and easily readable syntax for integrating logical .NET code with markup which is destined for the client. It’s important to note that although Razor syntax is designed to be extremely straightforward to pick up for developers with a scripting background, it is not an interpreted language in itself, and actually is transformed into perfectly regular .NET classes which are then compiled and served by the ASP.NET runtime in a similar fashion to ASP.NET WebForms.
MVC (specifically MVC3)
The Umbraco 5 web libraries and default website projects (such as the backoffice, and the exampler front-end sites) are based around the MVC3 framework.
Inversion of Control / Dependency Injection (e.g. Autofac)
Umbraco 5 uses IoC to register and resolve dependencies between components. The default provider we ship is Autofac, although it’s possible to plug in another if your application scenario demands it.
C#
The sourecode of Umbraco has been in C# for many years. Third-party devs are free to produce their own custom packages in a .NET language of their choice, but the core code is developed in C#.