I’ve written before about installing .NET Framework 1.1 and 2.0 side by side (SxS) on the same box. Microsoft recently added to the mix .NET Framework 3.0, so it’s about time to clear up any confusion on the newest release.
Above all, you should understand that the version designation of 3.0 was strictly marketing-driven. At the most basic level, .NET Framework 3.0 equals .NET Framework 2.0 plus a bunch of new DLLs. If you install .NET Framework 3.0 on a box that does not already have .NET Framework 2.0, the installer installs Framework 2.0. Therefore, if you already have .NET Framework 2.0 installed on a box, you should not be too concerned that installing 3.0 will break existing applications. In fact, you will find that in the ASP.NET tab in IIS Admin, .NET 3.0 is not even a choice.
It is worth noting that .NET Framework 3.0 is pre-installed on Windows Vista and will be pre-installed on “Longhorn” Server. However, .NET 3.0 may be installed on any Windows XP SP2 or Windows Server 2003 SP1 box.
If you’re working with a mission-critical server then you should, of course, be cautious and do some planning and testing anyway. Just be aware that the 1.1 to 2.0 story is identical to the 1.1 to 3.0 story, because 3.0 is in effect 2.0 with more files.
By now you may be asking what .NET Framework 3.0 is good for if it is essentially Framework 2.0. .NET 3.0 delivers a number of long-anticipated and important features, though mostly of interest to application developers rather than server administrators. The list includes Windows Communication Foundation, Windows Workflow Foundation, Windows Presentation Foundation and Windows CardSpace. You can read more about them on the official .NET Framework 3.0 site.
- .NET 3.0 is not a major change to the core .NET Framework as was 1.0/1.1 to 2.0
- If you currently have only .NET Framework 1.0 or 1.1 and you are looking to install 2.0 or 3.0, see my side-by-side post
- If you currently have .NET Framework 2.0, installing .NET Framework 3.0 is not a major change as the version numbers would suggest
- If you currently run .NET 2.0 applications, they will not know or care that you have installed .NET 3.0
Please feel free to contact me with questions and your own experiences with the upgrade. Thanks for reading!
I have .net framework 2.0 installed on my win server 2003 x64 machine. after which i installed .net framework 3.0 . Now my 1 applications is 1.1 and i am needed to install .net framework 1.1, but i am worried that installing 1.1 will associate all the application with it? Do i have any options to install 1.1 successfully in this scenario.
Amitabh, does your application have any known issues when running on .NET 2.0? Remember that even if it is compiled for 1.1, in most, but not all, cases it will run fine on 2.0. If you haven’t tried running it with 2.0, you might want to try that before installing 1.1. In any case, if you install 1.1 it will not associate itself with applications. If you have any ASP.NET websites on this machine, it is possible that they will be reconfigured to 1.1, so check the IIS ASP.NET tab on your virtual directories first, just in case. If they did happen to change during the 1.1 install, you can just go back in and switch them to 2.0 again. If you have a non-ASP.NET application that truly requires .NET 1.1, just set up your <app>.exe.config file as shown in my .NET 1.1 and 2.0 side-by-side post.
please I want from you to guide me to any resource ( one of your posts or any link or etc.. ) to explain .net framework 1.0/1.1/2.0 changes in very deep technical way ?
and how these changes is related to the languages C# or VB.NET ?? or Not ??
please do not annoy from my question ??
MSDN has a lot of articles that go into the .NET 2.0 and 3.0 changes from 1.0/1.1, so that is probably your best resource. One useful document is the description of breaking changes between 1.1 and 2.0: http://msdn2.microsoft.com/en-us/netframework/aa570326.aspx. I also highly recommend the book “CLR via C#: Applied Microsoft .NET Framework 2.0 Programming, 2nd Edition” by Jeffrey Richter if you are looking to understand in detail how the CLR works internally. You will also find some very detailed technical info on some of the MSDN blogs, such as: http://blogs.msdn.com/bclteam/ and http://blogs.msdn.com/kcwalina/ and http://blogs.msdn.com/cbrumme/. Thanks for reading.
Suppose you have windows 2003 (64 bit) with framework 2.0. Then you install other microsoft products like exchange 2007 (64 bit). Are we going to face a problem if we install other frameworks?. Can we have 2.0 and 1.1 then set our default to be 2.0?
Sam, it depends on the product. Exchange 2007 will have no issues as it is designed to work with .NET 2.0. Installing 3.0 will also be fine since it is essentially .NET 2.0, as I described above. I do not see any issues with installing .NET 1.1 either, as any .NET 2.0 apps will continue to use 2.0, even if 1.1 is present. However, unless you have an app that absolutely must run on 1.1, it might run just fine on 2.0. Many apps are forward compatible, but none are backward compatible (i.e. a 2.0 app will not run on 1.1).
Thanks for the reply,
Now I have both 2.0 and 1.1 frameworks How can I force ISAPI Filter to use Framework 2.0 even though I have done it through IIS but it does not seem to work.
Should anything else be done?
Sam, changing the .NET version on the IIS Manager ASP.NET tab is normally all you need to do (and make sure it is in a different AppPool than your 2.0 apps). You can check the ISAPI filter version by going to the Properties of the virtual directory, clicking the Configuration button, and looking for the aspx extension in the list box. You will see which version of the ASP.NET ISAPI filter is being used for that vdir. You can also fall back to the command line tool aspnet_regiis.exe if you need more control or if the GUI doesn’t seem to be doing the right thing.
I un-installed .NET 1.1, installed 2.0 since a new ATI driver requires it. Now I have no problem with ATI video, but my IE and FireFox are in big trouble — when hitting certain URLs, such as speed.fastaccess.com, after enter a telephone number and hit [test], the browser disappeared ! every time! This happens to IE and Firefox. I have encountered quite number of URLs which causes this problem.
I installed .NET 3.0, the problems persist.
Do you have any insight on this issue?
Hi Bob – I would be much more suspicious of the new video driver than the change to the .NET Framework. It’s not altogether unusual for video driver issues to pop up with web browsers. You can have .NET 1.1 and 2.0 installed at the same time, so you can always put it back on, but I’d be surprised if that helped. IE and Firefox do not use the .NET Framework. Going back to the old video driver would be a good test. Thanks.
As far as I can understand .NET 3.0 is nothing but .NET 2.0 with added features. But if I want to migrate .NET 1.1 or .NET 2.0 application to .NET 3.0…..
1. How could i utilize the added functionality of .NET 3.0?
2. What are the code level changes i need to do? in other words is .NET 3.0 fully backword compatible?
Amit, that’s correct, the .NET 2.0 Framework plus more DLLs comprises the .NET 3.0 Framework. There is absolutely no difference between running a .NET 2.0 app after installing only .NET 3.0 (because 3.0 will just install 2.0), and simply installing 2.0. 3.0 provides no immediate advantage to any existing applications.
To take advantage of 3.0 features you must write new code, using either Windows Communication Foundation, Windows Workflow Foundation, Windows Presentation Foundation and/or CardSpace. You can find more information here: http://www.netfx3.com/. Hope that helps.
Our current application is in VS2005 on .NET 2.0. We are looking for migrating to .NET 3.0. If we install .NET 3.0 and configure the existing web app to use the 3.0, will it run?
Yes. There is no way to configure an application to run as .NET 3.0 because 3.0 is the 2.0 runtime.
Thanks for the blog, Thomas. I have a .NET 2.0 web app. running on several servers, one of them being a W2000 Server. As you may know, .NET 3.0 cannot be installed on W2000 Server. Nevertheless, I plan adding WF capabilities which would be available only to the Windows 2003 Servers.
I was wondering if after installing the Visual Studio extensions and rebuild my solution, my web app will still run on the W2K Server box as long as the .NET 3.0 features are not used.
I know you have answered similar issues, but my scenary is slightly different.
Vicente, simply installing the extensions and rebuilding will not have any effect on your application. Only when you begin to use 3.0 features. Thanks for reading!
i have .Net 3 installed and am trying to use some of the new features. specifically i’m trying to use the OpenOfficeXML and ExcelPackage which i believe forms part of the System.IO.Packaging component available in .NET 3.
when using a standard .aspx page or a class library project in vs the reference is not found.
do you know anything about this? i’m working off a vpc setup by someone else so not too clued up and what is/isn’t running correctly.
please could you offer some suggestions?
Hi Jules, System.IO.Packaging is in WindowsBase.dll. You will see that in your references list. Thanks, Tom
Great article Thomas and enlightening responses!!!
The questions we are often asked by our customers are:
1. As a part of migrating from .Net 1.x to .Net 3.x, is it advisable to re-architect for the newer .Net 3.x features (WWF, WCF, WPF, etc)?
2. When is it a MUST to re-architect and when is it optional?
3. Are there any approach papers towards this?
I would greatly appreciate your wise counsel on this.
Thomas, thanks for this insightful blog. It is very informative.
Some time back I was working on .NET 2.0 and I loved it. But now I am in a new place where we are using .NET 1.1 with VS 2003. We already have many products running on the 1.1. What effect will it make to migrate to 2.0 / VS 2005 ????
Thanks in advance.
Hi Shashin, very often the migration is straightforward. The most common result is that you have many warnings about obsolete methods after upgrading. Those are harmless, but indicate that as you make other changes you should work to replace those calls with other methods and/or classes. On rare occasions you will encounter a breaking change during the upgrade, but Microsoft worked very hard to minimize those instances.
I advise installing VS 2005 SP1 prior to upgrading, particularly for web projects. VS 2003 web projects will move more naturally to VS 2005 Web Application Projects (these have .cs/vbproj files, unlike the original web “projects” in VS 2005 that have no .cs/vbproj files). You may also need to consider any third-party products and controls that you are using. In many cases they will run fine without being recompiled for .NET 2.0, but not always. You can only determine that by doing the upgrade and doing a thorough test.
Thanks for reading! Tom
I used to have .net framework 1.1 installed on windows xp sp2. Knowing that Microsoft is famous for not making newer versions of its software backward compatible I uninstalled it before installing .net framework 3.5, which as you say is just .net 2.0 plus extensions like WCF, WPF and WF. The reason I did this is because I installed Biztalk 2006 Server R2 which requires .net framework 2.0 as a pre-requisite. I also have SQL Server 2005, IBM Websphere MQ 6.0 and IBM’s XMS framework installed. FYI, IBM XMS is their port of the Java Messaging Service (JMS) to .NET. This is a free download from IBM Developerworks. I have apps running in .NET and Java happily interoperating using Websphere MQ’s publish-subscribe messaging. I ported a stock trading app to .net that call IBM’s XMS inline from a Biztalk orchestration so that it can interoperate with Java apps that use the Websphere MQ Java Messaging Service version 1.1.
Now I want to evaluate a third party messaging Adapter for .net. Specifically it is the Enabler Group’s TopXML BTSUtilities Adapter for Messaging and XMS. The installer of the adapters will not run until the Enterprise Instrumentation is installed first. Here is the catch…the Enterprise Instrumentation installer requires .net framework 1.1 to be installed first….what a pain in the ‘gluteous maximus’!
Given the software environment I described could you please tell me what problems to expect by way of any applications breaking if I am forced to make .net 1.1 co-exist with 3.5 because I really do not see any reason why I should go back to the ‘Jurrasic era’ now that I have my .net and java apps interoperating? Since IBM’s XMS works perfectly well with .NET 3.5 I see no reason why I should risk a lot of unecessary busy work in case any previously installed .net app breaks.
3rd party products are a let down. TopXML charges a minimum of US$500 for their Adapter to IBM’s XMS. Imagine their nerve! They build a wrapper to a free download that works fine with .net 3.5 and yet they force their customers to go back to the Jurrasic era by forcing upon them a piece of software that requires .net 1.1! They create compatability problems for their customers instead of making them sleep at night….how charming! JNBridge is another 3rd party provider but their offering is not much better because it only lets users use a limited set of JMS objects in .net.
I would not be concerned about it. Applications that were written for 2.0 will require and use 2.0 regardless of whether 1.1 is present or not. The only area where issues may arise is with unmanaged applications that host the CLR, as I mentioned in the post. Unmanaged applications will default to the newest CLR present — so the issue would be with unmanaged apps built for 1.1 running on 2.0 unexpectedly, not the reverse as in your situation. Since you are all good with 2.0 installed, you should not see any change by installing 1.1 side-by-side with it.
Unfortunately, BizTalk is one of those enterprise products where vendors can get away with charging exorbitant amounts of money for products of sometimes-questionable value. The quality of many custom adapters is poor because they are not simple to write. That is improving with the new WCF Adapter Framework. You could look into writing your own adapter using that toolkit.
Thanks for reading! — Tom
Amen! I agree that I am better off writing my own adapter given the atrocious quality of 3rd party products.
The .net app I wrote to call MQ using IBM’s XMS framework was really very pedestrian. I set up a message producer to send JMS MapMessage objects to a topic in an expression shape. Then I set up a message consumer to subscribe to the topic asynchronously before sending it to two JMS queues in another expression shape. The two exception shapes are invoked concurrently in a parallel activity. I had no trouble getting my pure Java JMS apps to interoperate with it.
When I looked in the SOA scenario of Biztalk Server 2006 R2 Microsoft said that calling Websphere MQ Series in-line from inside an orchestration is more efficient and will result in higher throughput because it avoids the latency of read-writes to the MessageBox database. This is especially true in highly distributed architectures where the MessageBox database is on a separate dedicated server and the JMS topics or queues are on a different remote server.
I therefore have mixed feelings using the Biztalk Adapter framework because the complexity that is forced on you does not necessarily result in a better solution. I am not convinced that it will represent time well spent. The only justification that I can see in exerting all this effort is if a client’s enterprise architecture department requires line units to limit orchestrations to business rules and delegate all interfaces to external systems to adapters. And where it is hard to get exceptions to this standard approved even in the face of poor performance. Can you see any other circumstances where this makes sense?
I will look at the WCF Adapter. Is it really easier to use than the BizTalk Adapter Framework…Just out of curiosity, do you think the Biztalk Adapter Framework was badly designed or not well thought out?
There are definitely tradeoffs in BizTalk when performance is a concern. There are various conditions that cause persistence to the MessageBox database, and sending messages means publishing them to the MessageBox, which does add some degree of overhead. There are many factors to consider though — SQL Server size, multiple MessageBox databases, network latency, etc. etc. As you say, there is some degree of performance improvment possible — at least in theory — by sending to MQ directly instead of via adapters.
In any case, all new BizTalk adapter development is using the WCF Line-of-Business Adapter SDK, which is what I referred to in my last response. You should find this a much easier platform to use than the old BizTalk Adapter Framework, and the WCF LOB SDK is actually not tied to BizTalk at all, only WCF.
Using ports and adapters gives you the benefits of tracking, some BAM integration, dynamic subscriptions and so on. If the messaging is more hard-coded into the orchestrations, it somewhat decreases the value of BizTalk as the host.
I forgot to include the links… Here is the WCF LOB SDK:
And a blog about BizTalk Adapter development:
You correctly pointed out that ports and adapters enable BAM integration, dynamic subcriptions and does not devalue the usefulness of Biztalk as a host so I agree that investing time in developing my own WCF LOB Adapter for JMS is time well spent.
Thank you for the WCF LOB link and the new Biztalk Adapter Development blog. I noticed that the latter is not the same as the MSDN Forum for Biztalk Adapters. Is this the case? The reason I ask this is because I did not find the MSDN forum for Biztalk Adapters helpful. I posted a similar question about problems with .net 3.5 coexisting with .net 1.1 because a 3rd party adapter requires .net 1.1. Sadly I got no response even up to today. The difference between your blog and MSDN is like the difference between night and day!
I hope you do not mind if I revisit my initial inquiry again. As you said I should not expect to find any issues with installing .net framework 1.1 along side .net 3.5 because I have no unmanged code on my machine. Does this also mean that I should not find it necessary to uninstall Microsoft Visual studio 2005, SQLSERVER 2005 Express and Biztalk Server 2006 R2 before installing .net framework 1.1 and then installing studio 2005, SQLSERVER and Biztalk all over again?
Are you aware of any “addins”, utilities or products that will enable Rational Rose to automatically generate Biztalk orchestrations ala Orchestration Designer for Business Analysts (ODBA) from UML activity diagrams? The reason I prefer Rose to Visio is because Rose has a centralized database of UML artifacts that guarantees synchronization between class and seqence diagrams. This is why it scales to large designs. Visio does not have this so it outlives its usefulness rather quickly.
Thank you for your continued, unselfish interest in helping me and others with my problems. More power to you.
Thanks for your kind comments, I appreciate it! The blog and the forum are completely separate. I think the big issue is that there just aren’t that many people writing BizTalk adapters (probably only hundreds worldwide, if that). The WCF-based adapters are not tied to BizTalk, so I think they will be much more popular with developers.
I’d say that the chance of trouble is very low if you install 1.1 even with all of those other things already installed. Once in a while Visual Studio has an issue with the debugger depending on order of Visual Studio side-by-side installation, but that shouldn’t come up from installing 1.1 Framework by itself. So, my gut feeling is that you won’t have any trouble. No promises of course!
I have never heard of a Rational Rose add-in like you described, sorry. That could be a nice thing to have though.
Thanks for reading!
Thank you for your added reassurance that installing .net 1.1 side by side with .net 3.5 will not cause any undesirable side effects. I note with interest your comment about Visual Studio. Back in the days when I had Windows 2000 Professional instead of XP, I installed .net 1.0 and Visual Studio 2003 afterwards. So far so good. Then I uninstalled .net 1.0 but not VS 2003. Then I upgraded to .net 1.1 and bad things started to happen with VS 2003! Specifically the help facility stopped working because the local MSDN library documentation ceased to appear! Months later I came across a blog, quite by accident, that said I should uninstall and reinstall VS 2003 if I upgrate to .net 1.1. Since then I developed a healthy suspision of Visual Studio products because bugs like this have a way of finding its way to newer versions.
I installed Microsoft visio 2007 before downloading Biztalk’s ODBA but much to my chagrin the installer did not install the software because it only works with Microsoft Visio 2003! The trial version of Visio 2003 is no longer available through MSDN. Is there any other site you could suggest where I can download a *free* version of Visio 2003 even if it is a trial?
Thanks for your help!
I’m getting an error saying the .NET Framework is missing.
The PC version of Google SketchUp Pro 6 requires the Microsoft .NET Framework 1.1. During install, SketchUp will detect if the .NET Framework 1.1 is missing and will prompt you to download and install the package.
At this time, Google SketchUp Pro 6 is only compatible with version 1.1 of the .NET Framework.
I have already installed .NET Framework 2.0, and when i try to install .NET Framework 1.1 it can’t run. I use .NET Framework 2.0 for another program.
Do i have any options to install 1.1 successfully in this scenario?
Jose, you’re welcome. I checked my MSDN Subscriber Downloads and Visio 2003 is still available. It is also on the Visual Studio DVD.
ivanwisnu, I don’t know what you mean by “it can’t run” in this case. The two versions can co-exist and .NET 1.1 should install normally even if 2.0 is already installed.
This is Sudhakar, Very glad to meet all of you here.
I am new to Dot Net development. Currently I have a task to migrate .net 1.1 and 2.0 web applications into .net 3.0.
I dont know that whether .net 3.0 is backward compatible with 2.0 and 1.1. If it is not compatible, what are the diffrent types of problems we can face while migrating.
My system is running with Xp sp2, and I installed all the three 1.1/2.0/3.0 frameworks.
I am running my .Net application on maching having .Net Framework 1.1 and 2.0 and it’s working fine. But in other machine having .Net Framework 1.1, 2.0 Service Pack 1 and 3.0 Service Pack 1, this appliation is crashing with the below error.
Any clue why this is happening, and what can I do for this.
2008-09-16 09:18:01,015  ERROR Simias.Event.IProcEventSubscriber – 3975 : Error communication failure.
System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.BeginReceive(Byte buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state)
at Simias.Event.IProcEventSubscriber.MessageHandler(IAsyncResult result)