A lot of questions regarding the .Net Framework are coming up frequently, so I decided to write this article to don’t always write the same.
What is the .Net Framework?
This part is fairly complicated, I will try to explain it as easy as possible:
First of all, you have to understand the difference between an Assembly and a native executable. Both have the file extension .exe but they are completely different in their format. Let’s look at the file NativeExecutable.exe: Every Windows user should know files like that, they can be executed by a simple double click. This file contains native code which can be directly understood and executed by Windows/the processor.
So, what is the difference to the file AssemblyFile.exe? An assembly contains, in contrast to a native executable, IL code. Windows does not understand a bit of this code and the processor will just say “I can’t execute that ***”. If you double click that file, it is not directly executed. The .Net Framework will notice that you’re trying to execute that file and become active: It acts as a translator (the professional word is Just-in-Time (JIT) Compiler) so Windows can understand what’s going on. Beside that, the .Net Framework also contains a lot of good code I can use in my application – native applications have to provide this code by themself. This has many advantages: Every system (Linux, OSX) would just need their own .Net Framework in order to execute the same file. Because different processors understand different dialects (like mandarin chinese, gan chinese, jin chinese, etc.) and the translator knows which specific dialect the processor understands, it can directly translate into that specific dialect so the processor can execute that code much faster than the native executable (in professional words, we would say that the JIT compiler can optimize the code for the architecture of the processor while native executables are already compiled for a specific architecture which is usually not very efficient but supports a wide ranges of different processors).
To summarize, native executables look exactly the same like assemblies for the user but are completely different files (even if they have the same extension .exe). Assemblies need the .Net Framework to execute while native executables can run directly. There is no real performance difference between both formats because the time the translator needs to translate the Assembly is easily recouped with the optimizations.
The .Net Framework versions
|.Net Framework 2.0||January 2006|
|.Net Framework 3.0||November 2006|
|.Net Framework 3.5||November 2007|
|.Net Framework 4.0||April 2010|
|.Net Framework 4.5||August 2012|
|.Net Framework 4.6||July 2015|
At this point, I want to note that some versions are missing (1.0 and 1.1 which isn’t supported anymore and 4.6.1, 4.6.2 which are really recent versions which aren’t really important).
As you may notice there are quite a lot versions. Here are some information which might be interesting:
- The .Net Framework 3.5 contains also the .Net Framework 3.0 and 2.0
- Windows 8 and Windows 10 will directly ask on a missing .Net Framework version and it can be easily installed by just clicking one button in the upcoming dialog
- Windows Update deploys specific .Net Framework versions
- There are a lot of programs which require the .Net Framework. Examples: AMD Radeon Software (4.5), Kaspersky (4.5)
Every Windows version comes with a preinstalled .Net Framework version. Let’s take a look
|Windows||M. S.||2.0||3.0||3.5||4.0||4.5||4.6||Windows XP||9.17 %||Download||Download||Download||Download||Not Available||Not Available|
|Windows Vista||0.84 %||Included||Included||Updated||Download||Download||Download(SP2)|
|Windows 7||47.2 %||Included||Included||Included||Updated (SP1)||Download||Download (SP1)|
|Windows 8(.1)||8.52 %||Must Enable||Must Enable||Must Enable||Included||Included||Download|
|Windows 10||25.3 %||Must Enable||Must Enable||Must Enable||Included||Included||Included|
M. S. = Market Share of all Desktop Operating Systems, also Linux and OSX (source: www.netmarketshare.com, date: 07.02.2017)
Which .Net Framework Version does Orcus need?
In the builder of Orcus, you can decide if the client file should need the .Net Framework 3.5, 4.0 or 4.5. The default .Net Framework is 3.5.
Every Windows system which is newer than Windows XP comes with a .Net Framework. The most popular operationg system (47.2 %), Windows 7, has the .Net Framework 3.5 preinstalled and everything newer can install the .Net Framework with a simple click, without any manual download (click here for a screenshot of that dialog). It’s pretty safe to say that a normal Windows user also has software installed which needed and installed a new .Net Framework version.
I would say that when using the .Net Framework 3.5, 80-90 % of all users will be able to execute that file without any problems. Windows XP will loose Market Share.