53

The question I always wanted to ask and was afraid to, actually - what language is .NET Framework written in? I mean library itself.
It seems to me that it was C and C++ mostly. (I hope Jon Skeet is reading this one, it`ll be very interesting to hear what he thinks about it)

3

5 Answers 5

65

The CLI/CLR is written in C/C++ and assembly. Almost all of the .NET framework classes are written in C# > compiled to IL, which runs in the CLR. If you crack open a framework library in Reflector, class, you may see an attribute such as [MethodImpl(MethodImplOptions.InternalCall)] which delegates the call to the CLI.

Sign up to request clarification or add additional context in comments.

8 Comments

Please note that this only applies to Microsoft .NET. Other implementations of the CLI may be architected differently. E.g., in Mono a lot of the stuff that is written in C/C++ in Microsoft.NET is actually written in C# in Mono. Also, there are metacircular implementations, both by Microsoft Research and other organizations, that are written entirely in C#.
Jörg W Mittag - Thanks, didn't know that. Will have to take a look at the C# implementations.
This is basically stated in StyleCop's History, if anyone wants a reference cited.
What is "C/C++"? You can't even suggest that you meant "C and C++" this time, otherwise you'd have written "C/C++/assembly".
@bigown: Bartok, for example. Note, I did not say that there are CLR implementations written C#. The CLR is written in C++. However, the CLR is only one of many implementations of the CLI VES. There are other implementations of the CLI. Bartok is a static compiler from CIL to native code plus a runtime (including garbage collector), all written in C#. As such it is very much unlike the CLR (which is also a compiler but a dynamic JIT, not a static AOT), but it is still an implementation of the full CLI, including but not limited to CLI VES, CLI CIL, CLI libraries and so on.
|
6

.NET was fully written in C and C++ because the base was in assembly language. Integration of assembly with C is much easier compared to newer languages.

Comments

5

Microsoft .NET Framework is divided in to many segments.

CLR: C++

IO/Signal Processing: Assembly

Baseclass Library: C#

System.Threading: C#

Complex Data Structure: C++

Example: GetHashCode

Comments

4

There are parts of the .NET Framework that are open-source, like ASP.NET MVC, and it's written in C#.

Since the .NET Framework represents many assemblies, I'd presume that different libraries are written in different languages. As long as the language is CLR-compliant, it can be used to build parts of the framework.

All said, though; I'd assume the lion's share of the .NET Framework is written in C++ and C#.

Comments

-1

CLR / Compilers - Visual C++

Baseclass Library - Simple Managed C (SMC)

http://blogs.msdn.com/b/jasonz/archive/2007/11/23/couple-of-historical-facts.aspx

1 Comment

From that article: "We actually wrote the original BCL in SMC. It was a leap of faith to convert to C#". So the .NET Framework BCL is actually C#

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.