Multi-Targeting Support (VS 2010 and .NET 4 Series)

This is the third in a series of blog posts I’m doing on the upcoming VS 2010 and .NET 4 release.

Today’s post discusses VS 2010’s enhanced multi-targeting support – which allows you to use and target multiple versions of .NET.  We did significant architectural work in the VS 2010 release to enable a number of new multi-targeting features, and provide a much better experience.

Understanding Side-by-Side

VS 2010 can be installed “side by side” with previous versions of Visual Studio.  What this means is that you can install it on the same machine as VS 2008/VS 2005/VS 2003 – and use all of the versions at the same time if you’d like.

.NET 4.0 can also be installed “side by side” with previous versions of .NET on the same machine.  .NET 4.0 has a new version number for both the framework libraries and CLR engine – which means it runs completely independently from .NET 2.0, 3.0 and 3.5.  What this means is that you can install .NET 4.0 on a machine that has .NET 2.0/3.0/3.5 installed, and configure some applications to run using .NET 4.0 and others to run using the older .NET versions (the IIS admin tool allows you to configure this for ASP.NET applications).  This allows you to use .NET 4.0 for new applications - without having to necessarily test and upgrade all your existing ones.

VS 2008’s Multi-Targeting Support

VS 2008 was the first release of Visual Studio that included multi-targeting support for .NET.  What this meant was that you could use VS 2008 to create and edit not only .NET 3.5 projects, but also .NET 3.0 and .NET 2.0 projects as well.  This allowed developers to more quickly upgrade and take advantage of new Visual Studio tooling features – without having to necessarily require the newer version of .NET to be installed on the clients and production servers running their applications.

VS 2008’s multi-targeting support was able to take advantage of the fact that .NET 2.0, .NET 3.0, and .NET 3.5 all ran on top of the same version of the CLR – and that the primary difference between the .NET versions was in their framework libraries.  As a result, Visual Studio’s compilers were able to generate the same IL output, the debugger was able to debug against the same CLR engine, and the IDE support for multi-targeting was primary focused on filtering out new assemblies and project templates from showing up when they weren’t supported with a given .NET version.

This multi-targeting experience worked – although it wasn’t perfect.  Intellisense within VS 2008 always shows the types and members for the .NET 3.5 version of a framework library (even if you are targeting .NET 2.0).  This means that you can sometimes inadvertently end up using a method that is only in ASP.NET 3.5 even when you are working on a ASP.NET 2.0 project.

VS 2010’s Multi-Targeting Support

We made some pretty major architectural changes with VS 2010 to enable much better and more accurate multi-targeting support.

VS 2010 now ships what we call “reference assemblies” for each version of .NET.  A “reference assembly” contains only the metadata of a particular framework assembly – and not its actual implementation (making it much smaller in size on disk).  This metadata is enough, though, to ensure that VS 2010 can always provide 100% accurate intellisense when targeting a particular version of the .NET framework. It also means that properties exposed through the property grid within designers, API listings within the Object Browser, and all the other various places within the IDE accurately reflect the exact API version signature.

We also updated the VS 2010 debugger, profiler and compilers to be able to target multiple versions of the CLR.

Using VS 2010’s Multi-Targeting Support

To get a better understanding of how these new multi-targeting features work, let’s create a new ASP.NET Web Application using VS 2010.  To-do this we can use the “File->New Project” menu command to bring up the “New Project” dialog.  We’ll use the version drop-down at the top of the dialog to filter the project templates to only show those supported with .NET 2.0.  We’ll then create a new ASP.NET 2.0 web application project:

step1

Because we are targeting .NET 2.0 with this project, VS 2010 will automatically filter the toolbox and markup intellisense to only allow us to use those controls that shipped in ASP.NET 2.0.  Unlike VS 2008, the VS 2010 property grid now automatically filters to only show those properties that were supported on the ASP.NET 2.0 button control: 

step2

When writing code, VS 2010 will also now only show code intellisense for those types and methods/properties/events supported with .NET 2.0.  Below you can see intellisense for the ASP.NET 2.0 “Response” object when we type “Response.Re”:

step3

When we run the application using the built-in VS web-server, it will run using the ASP.NET 2.0 version (and the VS 2010 debugger will debug the CLR 2.0 process):

step5

Moving a Project from .NET 2.0 to .NET 4.0

We can optionally retarget our project to work with a later version of .NET by right-clicking on the project within the solution explorer and by bringing up its properties dialog.  We can select the “target framework” dropdown within it and select the version of the .NET Framework we want to target:

stp8

We can choose from a variety of different .NET versions above.  Included in the list is the "Server Core” profile that supports the GUI-less version of Windows Server 2008 R2 – and which does not support certain APIs.  Because the reference assemblies we use for metadata and intellisense can support any version or release, we’ll even be able to distribute versions of them with future service packs if they introduce any new APIs (enabling 100% accuracy).

For this walkthrough, we’ll choose to move the project to use .NET 4.0.  When we do this, VS 2010 will automatically update the project reference assemblies and the web.config file of our project to properly reflect the new version.

Once we do this, VS 2010 will filter the toolbox and markup intellisense to show us all of the new controls and properties available in the ASP.NET 4.0 version.  For example, the property grid below now displays the new “ClientIDMode” property available on all controls in ASP.NET 4.0 - which gives you the ability to control how client id’s are output and avoid ugly client ids (a new ASP.NET 4.0 feature I’ll cover in a later blog post):

stp9

Now that we’ve upgraded the project to use .NET 4.0, VS 2010 will also now show us code intellisense for the new types and methods/properties/events on types in .NET 4.0.  For example, below you can see some of the new redirect methods available on the ASP.NET 4.0 “Response” object (which previously did not show up when the project was targeting .NET 2.0):

step7

The new Response.RedirectPermanent() method above makes it easy to issue “HTTP 301 Moved” responses – which can avoid your site accumulating stale links in search engines. The URL Routing engine is now supported by both ASP.NET Web Forms and ASP.NET MVC based applications, and the new Response.RedirectToRoute() method allows you to easily redirect to a route declared with it.

And lastly when we run the application using the built-in VS web-server, VS 2010 will now run it using the ASP.NET 4.0 version:

step9

Summary

VS 2010’s multi-targeting support enables you to work on projects that target .NET 4.0, .NET 3.5, .NET 3.0 and .NET 2.0.  It will allow you to start taking advantage of the new tooling features, without having to immediately upgrade the clients and servers running your application’s to .NET 4.0.  The improved multi-targeting support will ensure that this experience is even better and more accurate than before. 

Hope this helps,

Scott

P.S. In addition to blogging, I have been using Twitter more recently to-do quick posts and share links.  You can follow me on Twitter at: http://www.twitter.com/scottgu (@scottgu is my twitter name)

Published Thursday, August 27, 2009 11:48 PM by ScottGu

Comments

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:01 AM by Mikael Söderström

This is great!

But what about .NET 1.x? I know, it´s old, but sometimes we can´t get away from it and I really hate VS.NET 2002/2003..

Is it possible to install .NET 4.0 Beta 2 when .NET 1.0 is already installed?

Regards,

Mikael Söderström

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:03 AM by cvertex

nice!

i like the deeper integration of routing into asp.net

Does system.web.abstractions get the same favour?

e.g. Is Page.Request now HttpRequestBase?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:06 AM by Nick

Sounds great, my question is what versions of Sql Server Integration Services will be supported in VS2010?  The only reason I still have VS2005 installed is because I can't work on SQL 2005 IS packages in VS2008. Will VS2010 still only support SQl2008?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:10 AM by Chris

What about Silverlight Multi-Targetting??

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:12 AM by Santosh Kumar

Hi Scott,

Nice post.

Thanks,

Santosh

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:24 AM by ScottGu

@Mikael,

>>>>>But what about .NET 1.x? I know, it´s old, but sometimes we can´t get away from it and I really hate VS.NET 2002/2003.. Is it possible to install .NET 4.0 Beta 2 when .NET 1.0 is already installed?

Yep - you can install .NET 4.0 on the same machine as .NET 1.x.  VS 2010 doesn't support targeting 1.x - but you can continue to use VS 2002/VS 2003 on the same machine as VS 2010.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:27 AM by ScottGu

@cervtex,

>>>>> Does system.web.abstractions get the same favour?

I believe we've updated system.web.abstractions with the new APIs as well.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:31 AM by ScottGu

@Nick,

>>>>>> Sounds great, my question is what versions of Sql Server Integration Services will be supported in VS2010?  The only reason I still have VS2005 installed is because I can't work on SQL 2005 IS packages in VS2008. Will VS2010 still only support SQl2008?

Good question - to be honest I'm not 100% sure.  I will try and find out though.

Thanks,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:32 AM by Charly

VS 2010 looks awesome. One of the features that I miss in VS 2008 is the selection of a page event (like Page_PreRender) in the design window. Maybe it could be added in VS 2010.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:38 AM by ScottGu

@chris,

>>>>>> What about Silverlight Multi-Targetting??

Yep - the multi-targeting systems works for silverlight too.

Thanks,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 4:05 AM by ScottGu

@Sergey,

>>>>>>> About .Net 1.1 and .Net 4 Beta compatibility. As i know, i can't install both products - VS2003 and VS2010. Because when i install .Net 4 Beta 1 from VS2010 Beta 1 installation package i got error - "The .NET Framework version 4 cannot be installed because the .NET Framework version 1.0 is already installed on your computer. ". Is it only Beta 1 issue, or .Net 4 Release also will be conflict with .Net 1?

Can you email me (scottgu@microsoft.com) about this and I can have someone investigate and take a look? It should work - I'm not sure why it is having an error.

Thanks,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 4:11 AM by Johnas

Sounds like you now sell a bug in VS2008 as new feature in VS2010...?

Anyhow, thanks a lot for your efforts!

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 4:40 AM by Evgeniy

Hi, we developing framework which supports .net 2.0, 3.0 and 3.5. In result we have specific binaries for each target framework but we have to use separated *.csproj file for each target framework.

Is it possible in VS2010 to develop project for several target frameworks using only one .csproj file?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 4:41 AM by Michael

Is it possible to use vs2010 but keep the vs2008 project files intact? @work they don't want to migrate to vs2010 yet, but i do want to use the GUI improvements of vs2010 without altering the solution and project files

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 5:08 AM by Dharmindar

Hi,

Looks very good. My question is have you guys improved the silverlight designer in VS2010. I have to go to expression blend for designing. So going back and forth really disturbs.  

Thanks,

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 5:27 AM by Shem

Good time to be a .Net developer me thinks. Windows managed API's, VS2010, Silverlight - so many goodies!

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 5:29 AM by Webdiyer

It's great! thank you and your team for the great work you've done!

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 5:44 AM by Ian Ringrose

Does VS 2010 upgrade project files etc?  Eg. Can some people in the team be using VS 2010 when other people are using 2008?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 5:59 AM by Johan

Looks nice. A question on solution file format, will this change? Will it be possible to update same solution in both VS2008 and VS2010 if one targets 3.5?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 6:32 AM by Jostein Kjønigsen

One of the few things which annoys me when working with .NET 2.0 projects in VS2008 is how all the snippets seems to target C# 3.0.

Trying to auto-create properties, you get public [type] [name] { get; set; }, instead of the correct C# 2.0 syntax.

Please tell me there will be improvements around this in VS2010 :)

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 6:37 AM by VO01

Hi Scott,

Is there a way to target .NET 4.0 from VS 2008 ?

Until the release we would like to continue to use VS2008 and test with .NET 4 only.

Thx

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 7:23 AM by Björn Engquist

Using Visual Studio 2010 beta 1, targeting .NET 3.5 projects allows one to use Entity Framework 1.0 with more advanced features than VS2008 allowed.

Examples that VS2010 allow are:

Generate database from model.

Complex Types

A drawback i've runned into is that VS2008 cannot read the edmx-files that VS2010 has generated.

Also VS2008 will throw warnings at compiletime about problems in the model if project is loaded.

I have not found any problems at runtime doing this.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 8:18 AM by mmwlada

I've been waiting for full multi-targeting support in VS.

I was wondering how .NET 4 and .NET 2 project collaborate in same solution. Do you have any thoughts on that?

Best regards,

Vladimir

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 8:31 AM by Joe White

Your screenshots only show major versions of .NET -- 2.0, 3.0, 3.5, 4.0. What does this feature do with service packs that add new methods? E.g., 3.5 SP1 has a slew of new methods and classes that weren't there in 3.5. Will the multi-targeting Intellisense be able to take that into account? Can I choose whether I'm targeting 3.5 or 3.5 SP1?

What about the compiler? If I say I'm targeting 3.0, but I've got existing code in my project that references a 3.5 method, will the compiler give me an error or warning? Or are the reference assemblies just for Intellisense while editing, with no way to verify later?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 9:32 AM by Vincent-Philippe Lauzon

Hi Scott!

It's great to see Visual Studio always improving and building on top of previous improvement!  2010 looks pretty groovy.  Will there be a beta 2 or will it go directly into RC?

I have a question for you.  A nice feature of 2008 was that you could build some assemblies in .NET 2.0 and reference them in .NET 3.5 projects.  That allowed us to build sort of "hierarchical" libraries to target multiple versions of the .NET Framework.  Now will that be possible to reference a library using the .NET 2.0 Framework from a a library using the .NET 4.0 Framework?

I can imagine that the reason that was posssible in 2008 was the underlying shared CLR 2.0, which isn't the case with .NET 4.0.

If that is possible will it come with an overhead cost (for instance, loading two CLRs in the same process)?  If so, what would you recommend in those type of scenarios?

Cheers!

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 11:05 AM by Filip

I am just curious how C++ will be treated in this release of VS. I hear that project files will now be represented using MSBuild format. Will there be multi-targeting support for C++? Will I be able to use VC++2008 compiler instead of VC++2010? How about g++?

The company I work for only upgrades to a stable compiler, so we'll be stuck using 2008 for the next few years. But it would be awesome to upgrade the IDE (provided that intellisense works better).

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 12:24 PM by herzevekil

I use VS2008. When I change .Net framework 2.0 from 3.5. I sometimes have problems my project. I hope that it isnt in VS2010:)

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 12:43 PM by shankar(India,Chennai)

I could just about work with VS 2008 SP1 on windows 7 with all the extra baggage on a Dell D630 2GBRAM , will VS 2010 need High end Graphics Processor and large RAM > 3GB which 32 bit will not support. Target 32 bit in a 64 Bit environment?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 1:40 PM by kevindente

+1 on the solution file question - the fact that VS2008 changed the solution file version was a big gap in the multi-targeting scenario. It meant all of the developers needed to upgrade to the new visual studio at once, or we had to maintain two versions of the SLN files (no fun).

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 3:50 PM by BMavi

Thanks Scott, Nice article, appreciate your efforts.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Friday, August 28, 2009 8:50 PM by Alex

Blurry icons are horrible at IntelliSense drop-down menu. My eyes always start to refocus and become tired after several seconds. No fun

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 2:18 AM by James L

Will there be an fx4 server core target too?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 4:28 AM by Sorin Serban

Always a pleasure reading your articles :)

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 7:48 AM by sm@digitalwebsolutions.in

Really great efforts.Thanks for sharing such an informative post with us.Nice way to express with screen shots.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:20 PM by ScottGu

@Evgeniy

>>>>> Is it possible in VS2010 to develop project for several target frameworks using only one .csproj file?

Unfortunately I don't think this has changed much in VS 2010.  You might be able to get away with doing separate build target rules in the same file - but I think this would work the same as in VS08.

Sorry!

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:23 PM by ScottGu

@Michael,

>>>>>> Is it possible to use vs2010 but keep the vs2008 project files intact? @work they don't want to migrate to vs2010 yet, but i do want to use the GUI improvements of vs2010 without altering the solution and project files

Unfortunately the VS team wasn't able to get that done for VS10 (the other multi-targeting work consumed a lot of time).  I know it is very high on the list for the next release though.  

Sorry,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:23 PM by ScottGu

@Dharmindar,

>>>>>> Looks very good. My question is have you guys improved the silverlight designer in VS2010. I have to go to expression blend for designing. So going back and forth really disturbs.  

Yes - VS10 has a new Silverlight WYSIWYG designer. I'll blog about it later in this series.

Thanks,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:25 PM by ScottGu

@ShuggyCoUK,

>>>>>> Does the multi targetting still use the same compiler for all languages?

Yes - I believe it uses the same compiler.  As long as the features don't require new runtime features you should be able to use the new language features even when targeting older runtime versions (since they are compatible with that).

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:26 PM by ScottGu

@Ian,

>>>>>> Does VS 2010 upgrade project files etc?  Eg. Can some people in the team be using VS 2010 when other people are using 2008?

Unfortunately it does upgrade the project files.  Being able to share project/solution files across VS versions is something a lot of people have asked for, but unfortunately the VS team wasn't able to get that done for VS10 (the other multi-targeting work consumed a lot of time).  I know it is very high on the list for the next release though.  

Sorry,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:26 PM by ScottGu

@Jostein,

>>>>>> One of the few things which annoys me when working with .NET 2.0 projects in VS2008 is how all the snippets seems to target C# 3.0.  Trying to auto-create properties, you get public [type] [name] { get; set; }, instead of the correct C# 2.0 syntax.

I think the snippets are actually version aware. I'm not 100% sure of that but I think they are.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:27 PM by ScottGu

@V001,

>>>>>> Is there a way to target .NET 4.0 from VS 2008 ?

There isn't any way to target .NET 4 from VS08 and use new features. Having said that, .NET4 is upwards comaptible with .NET 3.5 - so applications you build targeting .NET 3.5 with VS08 should work fine on top of .NET 4.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:28 PM by ScottGu

@mmwalda,

>>>>>> I was wondering how .NET 4 and .NET 2 project collaborate in same solution. Do you have any thoughts on that?

I believe you can have a .NET 4.0 project in a solution reference a .NET 2.0 project and use it.  You can't do it the other way around.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:31 PM by ScottGu

@Joe White,

>>>>>> Your screenshots only show major versions of .NET -- 2.0, 3.0, 3.5, 4.0. What does this feature do with service packs that add new methods? E.g., 3.5 SP1 has a slew of new methods and classes that weren't there in 3.5. Will the multi-targeting Intellisense be able to take that into account? Can I choose whether I'm targeting 3.5 or 3.5 SP1?

The multi-targeting infrastructure does allow for this, and in the future we will probably ship reference assemblies anytime we add new features in a SP.  I believe VS10 right now targets 3.5 SP1 when you pick the 3.5 drop-down.  The main reason being that 3.5 SP1 will have been out for quite awhile by the time VS10 ships (and it has been a critical update on WU since early this year).

>>>>>> What about the compiler? If I say I'm targeting 3.0, but I've got existing code in my project that references a 3.5 method, will the compiler give me an error or warning? Or are the reference assemblies just for Intellisense while editing, with no way to verify later?

You'll get a compiler error if you are targeting 3.0 and try to use a 3.5 method.  I believe the reference assemblies are used for both intellisense and actual code compilation.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:32 PM by ScottGu

@tarique_s

>>>>> I wasn't able to install .Net 4 Beta 1 on my computer either.This is a known issue about .Net 4/VS 2010 Beta 1.  According to .Net 4 Beta 1 documentation

I followed up with some of the others, and it looks like .NET 4 Beta 1 couldn't be installed on machines with .NET 1.0 on them.  But .NET 4 Beta2 and beyond will support this scenario.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:34 PM by ScottGu

@Vincent-Philippe Lauzon,

>>>>>> It's great to see Visual Studio always improving and building on top of previous improvement!  2010 looks pretty groovy.  Will there be a beta 2 or will it go directly into RC?

We will release a Beta2 later this year.

>>>>> I have a question for you.  A nice feature of 2008 was that you could build some assemblies in .NET 2.0 and reference them in .NET 3.5 projects.  That allowed us to build sort of "hierarchical" libraries to target multiple versions of the .NET Framework.  Now will that be possible to reference a library using the .NET 2.0 Framework from a a library using the .NET 4.0 Framework?  I can imagine that the reason that was posssible in 2008 was the underlying shared CLR 2.0, which isn't the case with .NET 4.0.

I believe that should continue to work with VS10.

>>>>>> If that is possible will it come with an overhead cost (for instance, loading two CLRs in the same process)?  If so, what would you recommend in those type of scenarios?

I don't think it would come with an overhead cost.  VS10 itself only ever loads a single CLR in its process (CLR4).  But CLR4 is compatible with previous releases - so it should just work fine.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:35 PM by ScottGu

@Filip,

>>>>>> I am just curious how C++ will be treated in this release of VS. I hear that project files will now be represented using MSBuild format. Will there be multi-targeting support for C++? Will I be able to use VC++2008 compiler instead of VC++2010? How about g++?

Good question.  I'm not actually 100% sure of the answer to this one.  I just sent mail to the C++ team to ask though.

Thanks,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:38 PM by ScottGu

@shankar,

>>>>> I could just about work with VS 2008 SP1 on windows 7 with all the extra baggage on a Dell D630 2GBRAM , will VS 2010 need High end Graphics Processor and large RAM > 3GB which 32 bit will not support. Target 32 bit in a 64 Bit environment?

You don't need a 64-bit system - although I'd recommend 2GB or 3GB of RAM.  I typically recommend a duel core processor with 2GB of RAM. A standard PC or laptop graphics card should work.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 9:39 PM by ScottGu

@Alex,

>>>>>> Blurry icons are horrible at IntelliSense drop-down menu. My eyes always start to refocus and become tired after several seconds. No fun

All icons are temporary at the moment and not final.  I believe I also took that screen-shot while an animation was happening (the intellisense description was about to come up) which might have caused the blur.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Saturday, August 29, 2009 10:07 PM by Charles Symons

Excellent News! I have current projects running in all those .Net versions and this improvement from VS 2008 is most welcome.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Sunday, August 30, 2009 12:46 AM by Keith Hill

Will the multi-targeting support work for Smart Device projects?  We understand that support for the next version of the Compact .NET Framework will lag some number of months after VS 2010 ships. Until then, it would be nice if we could use VS 2010 and target .NET CF 3.5

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Sunday, August 30, 2009 3:20 AM by Kazi Manzur Rashid

Hi, Sorry to join late, I am using VS2010 beta 1 for creating few tiny projects. There are quite a few interesting things I have found:

1. When I File->New the platform is automatically sets to x86. In the earlier versions of VS it was "Any CPU" which I think is more appropriate.

2. When you run a Web Project all the other projects binaries are copied into the bin directory of web project, including the unit tests (Not sure about MSTest, In my case it was xUnit.net), I have double checked and non of my unit test project was referenced in the web project.

3. When I published my web project, nothing complex just a file copy to a different folder, this time it does not copies the unit test project binaries, but when I close and open the same solution, then it starts to throw errors that the directory is not configured as a virtual directory which is very funny as I was running it in the vs integrated web server and I even could not run it when I configure it as a virtual directory in IIS7. It turns out that it happens if you delete/rename the folder where you publish the project, to solve this

you have to either keep the published folder or delete the bin,obj folder and *.publish.xml, *.user files.

4. Linked file with *.config extension does not work for web projects.

5. The Code editor has too many issues, characters starts to distort, selection lines gets blur, the list is very long....

I hope these will help to improve it.

When you mention next release on the keeping the project/solution files intact in the above comments did you mean beta2 of this version or next version e.g VS2012?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Sunday, August 30, 2009 5:13 AM by SanjeevAgarwal

are you planning to provide t4 template editor with VS2010 release.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Sunday, August 30, 2009 1:51 PM by Charles Okwuagwu

Hi Scott,

Will there be improved support for debug-mode edit and continue when targeting x64 CPU? Presently we cannot edit and continue in (vb) debug-mode which is somewhat of a let down as compared to target CPU is x86

Thanks.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Sunday, August 30, 2009 7:26 PM by Phillip

I don't understand why we cannot support 1.1 on VS10... You cannot install VS03 on Vista or Windows 7. I don't want to have to run a VM or anything just to spend 2 hours working on a 1.1 project to fix some issues for a client. Nor do i want to install a legacy app just to do that either.

If i was doing development against 1.1 i wouldn't mind, but to fix a few bugs it would be nice to just open up a 1.1 project in 05/08/10 and deal with it.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Monday, August 31, 2009 2:57 AM by Sam

@Nick: Microsoft never supported developing SQL 2005 SSIS or SSRS components in VS 2008, and I can't see this changing in 2010. Every time this happens there's a bunch of forum posts complaining about it, with a terse reply from the SQL Server team along the lines of: 'we looked at it, but couldn't justify the effort involved'.

This is a shame, because it ends up making all the good work the Visual Studio team has done on multi-targeting pretty irrelevant for any organisations with an SQL 2005 instance hanging around - you still need Visual Studio 2005 installed. Ditto for Biztalk 2006.

I can only assume that the development teams at Microsoft only ever use the latest version of their server products and don't realise how annoying this is.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Monday, August 31, 2009 4:53 AM by arlen navasartian

Hi Scott,

please explain more about ClientIDMode in VS2010 with samples .

thx in advance

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Monday, August 31, 2009 11:20 AM by Scordi

Hi Scott,

a few years ago, before the release of VS 2008 I was asking you if there will be conditional references in Visual Studio 2008. The answer was: no. But you said it could be in the next release of Visual Studio. Now Vs 2010 is close to final. Is there a possibility to have conditional references? For example to have a reference point to a compiled assembly in Configuration X and to point to a project-reference in configuration Y?

Thanks,

Jens

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Monday, August 31, 2009 4:41 PM by pgrunau

Hi Scott,

We have a shipping application which targets .NET 1.1, and the app breaks once .NET 4.0 Beta 1 is installed.  It seems like the side-by-side behaviour of .NET 4.0 is actually affecting older .NET 1.x apps.  I've entered the details as an item on MS Connect (Item 474501), and I'm really hoping it gets fixed by Beta 2!

Thanks,

Paul

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Monday, August 31, 2009 6:08 PM by Paul F

Scenario:

Sometime in late 2008:  I upgrade a project from VS 2005 to VS 2008, but it continues to target .NET 2.0

One year later:  I open said project, but I forget that it's still targeting 2.0.  I attempt to add some nifty LINQ statements.  It compiles, but it spits out firey cryptic runtime errors when I try to run it.

Adding IntelliSense and compile-time checking helps a great deal!  But, I was hoping you could add some kind of obvious visual reminder that this project is targeting an earlier version of .NET.  For example, you can change the project icon in Solution Explorer (i.e. "C# 2.0" in place of "C#"), or you could change the color of the project name, or you can simply add "(2.0)" to the end of the project name.

Thanks!

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Monday, August 31, 2009 9:47 PM by ScottGu

@Filip,

>>>>>> I am just curious how C++ will be treated in this release of VS. I hear that project files will now be represented using MSBuild format. Will there be multi-targeting support for C++? Will I be able to use VC++2008 compiler instead of VC++2010? How about g++?

I just heard back from the C++ team, and using the VS08 C++ compilers is full supported with multi-targeting.  This allows you to use VS10 as the IDE (with intellisense) but the older compilers for compilation.

Hope this helps,

Scott

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Tuesday, September 1, 2009 4:44 AM by Jwao

Thanks for VS10.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Thursday, September 10, 2009 7:05 AM by Gulam Ali

Great effort Scott..

it is a really a good thing but in vs2008, we create the website in .NET3.5 and when we change the target from .NET3.5 to .NET2.0 then it does not remove reference of LINQ from my pages.

In .NET4.0, have you considered the things?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Wednesday, September 16, 2009 4:30 AM by VO01

Is there a way to run our old application (NET 3.5) with .NET 4 to test if it work correctly ?

Thanks ?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Thursday, September 17, 2009 12:28 AM by Alan

What about Office add-in development using .net 4.0 and VS 2010 ?

Are there significant performance enhancements ?

And what about support of .net on the Mac to support Mac Office ?

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Wednesday, October 14, 2009 4:23 PM by Ray

Does anyone know of a good compatibility matrix for .NET versions and windows OSs? For example, I know that 3.5 is not supported by Windows 2000, but I have been unable to find a good big picture of what's supported, and what's not.

# re: Multi-Targeting Support (VS 2010 and .NET 4 Series)

Monday, October 19, 2009 7:06 AM by Ronald Widha

That's a cool feature. But hopefully a feature that I personally won't be using, as I'll be right at the forefront :)