.NET Framework Versions and Development Environment Requirements
OK, since we're on the wave of .NET Framework (hereforth abbreviated NetFX) 3.0 release, I think it's a good idea to refresh our memory about NetFX versions and the related development environment requirements. This is especially true for newbies to gear up quickly on the fresh technology.
First and foremost, Microsoft has intentionally created confusing versions for components of NetFX (yes, you read that right, intentionally). The objective is to create distinction between each component. I don't know whether this a good move. In the past, if I say use NetFX 1.1, that means all the component and tools are specific to that version, period. Recently, that formula just doesn't work anymore. Here's why.
We begin by decomposing NetFX into big chunks of components.
- The runtime/virtual machine of NetFX is called CLR (Common Language Runtime). All of the code that says .NET Code or Managed Code, runs on top of this engine. CLR manages code execution, security, garbage collection, memory management, and all bunch of computer science-related stuff. Thankfully, we don't need to deal with those codes (unlike certain open source VM). Microsoft has kindly closed the source to drive away want-to-know geeks. Of course, there is an open standard that governs CLR, dubbed CLI (Common Language Infrastructure). The shared source implementation of CLI is called, of course, Shared Source Common Language Infrastructure alias ROTOR (although not 100% of the CLR code is implemented in SSCLI).
- Microsoft also provided a base library that every NetFX developer can use, called BCL (Base Class Library). Since BCL runs on top of CLR, that means you can code it using one of the NetFX languages, mostly C#.
- To run applications on top of CLR, developers will need a programming language. Microsoft provided four different languages (although all stems into a same language, save one); Visual C++, Visual C#, Visual Basic .NET, and Visual J#. Each language has their own usage scenarios (like C++ for seamless interop between managed and native platform, J# for Java-bound developers, etc.), but all of them adheres to the same CLS (Common Language Specification). If a language implements CLS, we can call this language CLS-compliant. All CLS-compliant language compilation (that is, DLL or EXE) is accessible from any other CLS-compliant language. Note: Microsoft-created languages DO have some non-CLS-compliant features, so never assume your code is safe.
- The fourth and the largest part is the development environment. Microsoft has single, integrated development environment targeting the NetFX, called Visual Studio. This is what most NetFX developers use, while others use minor, cheaper (or open source) development environment like SharpDevelop or WebMatrix.
Each version of NetFX has their own set of these components. As you can see in the following table, component versioning are consistent as of 2005. Starting with 2006, the versions are all messed up.
(*) WPF, WCF, WF, and WCS are additional libraries made available in NetFX 3.0. For more information about these libraries, please check www.netfx3.com.
What's important to note is the CLR and BCL versions. These two components are required both on the development machine and the client machine. So if client deployment is an issue (like thousands of non-standard client), you might want to look at the common denominator. For example: if it's true that NetFX v.next uses the same CLR (v2.0), that means as long as you only use libraries that marked as v2.0, your client with NetFX 2.0 will not need any framework upgrade.
Now that we understand the components and versions, as a developer, what component and/or version do we need to have to work on specific NetFX version?
If you target NetFX 1.0, 1.1, and 2.0 systems, use the released version of Visual Studio built for each version (as outlined in the table above). All the tools you need will be included in the installer.
If you target NetFX 3.0, you will need:
- Visual Studio 2005 (Express Editions are welcome!)
- Extensions (depends on what feature of NetFX 3.0 you're using)
- Extension for WPF, WCF, and WCS (download - still in CTP/Beta)
- Extension for WF (download)
- Windows SDK for Vista and the .NET Framework 3.0 (download)
- (for client) .NET Framework 3.0 Runtime Components (download)
As you can see, it's never easy to understand and use brand new, cutting edge technologies. But when you master it, it's going to be your value addition/competitive advantage over other developers. Why master something that millions other already mastered?