Today I was checking the VB
Team Blog and I've found this post by John
Rivard that explains one of the problem that a developer has when changing
the environment: we would like to work with the old verison of the .NET
Framework with the new environment but this is impossible, Visual Studio targets
only one version of the Framework!
John explains that this is a problem that comes from the CLR nature itself
and avoid this "limitation" will not be so easy:
- The Visual Studio process can only load one version of the CLR. This is a
limitation imposed by the CLR itself – one per process, thank you very much.
- The CLR “shim” determines the version of certain unmanaged utilities used
by compilers, linkers, and parts of the build system. These include the
metadata reader-writer utilities, the assembly linker utility, and
strong-naming utilities.
- The CLR’s Unification Policy determines the single version of the .NET
Framework that can be loaded into the process.
- Unification Policy influences the version of designers and code generators
that Visual Studio can load and thus the Framework version that these tools
target. For example, when you reference a COM type library from the project
system, the type library converter emits an interop assembly built for the
current CLR version.
- Unification Policy also limits the set of classes that designers
themselves can load and design against. For example, a Visual Studio 8.0
process can only load a 2.0 Form. The designer cannot load and design for a
1.1 Form.
However I can't agree with some feedbacks I've read on VB Team blog, where
seems that something on the cross-targeting field is not necessary.
On my work PC I've installed VS2003 and VS2005 together because every day I
need to manage .NET 1.1 and .NET 2.0 projects. I see also every day
developers that have a working machine with VS2002 (.NET 1.0), VS2003 and
VS2005 installed together. Do you agree with me that this situation is a
noise?
I think that will be wonderful if tomorrow I could open my new Visual Studio
2005, choose New Project and the Project Wizard will show me a first
choice: "On your system you've installed .NET 1.1 and .NET 2.0. Which
platform do you want to use?". The choice on this step will target the
final .NET platform to use (the CLR version that must be loaded) and I could
start building a project for .NET 1.1 and .NET 2.0 with the same environment. On
our machines we'll have only the last Visual Studio version installed. 
Choosing the CLR to load at runtime is really so
impossible?