Home > Development, Microsoft > .NET Framework 1.1 and 2.0 Side-by-Side (SxS)

.NET Framework 1.1 and 2.0 Side-by-Side (SxS)

December 9th, 2005

December 18, 2006 Update: You may find my post on .NET 3.0 compatibility useful.

As a part-time systems engineer, I was very concerned about possible negative effects of installing the .NET Framework 2.0 side-by-side with 1.1 on our Windows Server 2003 boxes that run things like SharePoint Portal Server, Windows SharePoint Services and Exchange 2003.  I’ve searched and searched, and it seems like Microsoft is making little effort to document .NET Framework 2.0 compatibility with their server products.

It helps to understand how different types of executable code load the Framework.  Unmanaged applications that host the Common Language Runtime (CLR), that is, non-.NET applications that manually load the CLR in order to run .NET code, always load the newest installed version of the .NET Framework by default.  This behavior directly impacts SharePoint Portal Server, as one example, in a negative way.  Some unmanaged executables in SPS host the CLR, so as soon as you install 2.0 and restart the SPS apps, they will load 2.0, not 1.1 as they were designed and tested against.  BAD!

Fortunately, managed applications behave better.  A managed application that was built against 1.1 will continue to load 1.1, as long as 1.1 is installed.  (On Windows Server 2003 you don’t have a choice, but on other OS’s you can uninstall 1.1.)  A managed application that was built against 2.0 will only load 2.0.  If you uninstall Framework 1.1, your 1.1 managed app will now load 2.0 instead.

Confused?  When Microsoft doesn’t document which unmanaged apps host the CLR, the bottom line is that you need to be careful installing 2.0.

If you identify an unmanaged app that hosts the 1.1 CLR and you want to install Framework 2.0, there is a way to force the unmanaged app to load the old Framework:

  1. Locate the unmanaged EXE, and in the same directory, create (or edit) a text file called <unmanagedexename>.exe.config.  Ex: myapp.exe needs myapp.exe.config.
  2. Paste this text into the new text file (or merge it into the existing file; you may already have <configuration> and/or <startup> elements):
    <?xml version =”1.0″?>
    <configuration>
      <startup>
        <supportedRuntime version=”v1.1.4322″ />Â
      </startup>
    </configuration>
  3. Save the config file and start or restart the EXE or service

Installing the 2.0 Framework without adding or updating the config files will affect SharePoint Portal Server and BizTalk Server 2004.  BizTalk Server 2006 natively runs on, and requires, .NET Framework 2.0, and runs just fine with .NET Framework 3.0 as well.

To safely install 2.0 on your BizTalk 2004 server:

  • Add (or update) a config file for each EXE in your BizTalk 2004 installation folder
  • Reboot or restart all BizTalk services
  • Review Microsoft’s KB
  • After installing Framework 2.0, ensure that all BizTalk Web services remain configured to run under ASP.NET 1.1.

To safely install 2.0 on your SPS servers:

  • Add (or update) a config file for each EXE in your SPS installation folder
  • I recommend installing WSS 2.0 SP2, which explicitly supports ASP.NET 2.0, and then SPS 2003 SP2.  If you are not ready to upgrade, you can still add the config files and safely install 2.0 on SP1 or earlier.
  • After installing Framework 2.0, ensure that all SPS portal Web sites remain configured to run under ASP.NET 1.1.  SPS SP2 does not support ASP.NET 2.0, even though WSS does.

To safely install 2.0 on your Exchange 2003 servers:

  • Exchange Server 2003 doesn’t appear to host the CLR, so it should be safe to install 2.0 on Exchange front-end or back-end servers.  I installed it on our front-end server with no issues.
  • After installing Framework 2.0, ensure that the OWA Web site remains configured to run under ASP.NET 1.1 (IIS Admin, site properties, ASP.NET tab).

Installing .NET Framework 2.0 installs ASP.NET 2.0.  By default, this will not change existing IIS Web sites to 2.0 — they will remain set to 1.1/1.0.  You can control this in IIS Admin in the site properties under the new ASP.NET tab.  Do not try to mix ASP.NET 1.1 and 2.0 apps within a single AppPool on Windows Server 2003.  Create separate AppPools for each version.

Office 2003 is unmanaged but does host the CLR, so it may also be affected by installing Framework 2.0.  There are known issues with Office 2003 when loading add-ins, smart tags or smart documents created with .NET Framework 2.0.  There is also a related VS2005 update for Visual Studio 2005 developers.

Visual Studio .NET 2003 developers may experience trouble in certain cases after installing Framework 2.0.  One such issue is fixed in .NET Framework 1.1 SP2.

The Framework documentation briefly, and poorly, discusses the side-by-side issue here.

I would appreciate comments on this post!  Is it helpful?  What information can I expand on?  Are there other issues that you are concerned about or have experienced?

Categories: Development, Microsoft Tags:
  1. Tammy
    January 27th, 2006 at 07:44 | #1

    Thank you! Was looking for exactly this information. Looks like I’ll take a more cautious route to installing 2.0.

  2. wbennett
    February 3rd, 2006 at 22:12 | #2

    just wanted to thank tabraham for this post…very useful. i’m surprised to find so little documentation online regarding running 1.1 and 2.0 side by side. thanks again!

  3. pb
    February 15th, 2006 at 12:35 | #3

    What do you know about:
    dotnetfx.exe /C:”install /noaspupgrade”
    in relation to installing Framework 2.0 side by side with 1.1

    Thanks.

  4. Ray
    May 6th, 2006 at 14:56 | #4

    Just these two sentences saved me from hours of wandering lost through the documentation to figure out how to get both ASP.NET 1.1 and 2.0 web services to run on the same Windows 2003 server:

    “You can control this in IIS Admin in the site properties under the new ASP.NET tab. Do not try to mix ASP.NET 1.1 and 2.0 apps within a single AppPool on Windows Server 2003. Create separate AppPools for each version.”

    Thank you!!!

  5. August 15th, 2006 at 10:52 | #5

    I have 2.0 running for SPS and WSS and use 2.0 Controls on both types of pages (WSS pages for example Team Sites and Area pages).

    Tom says: Thanks for the comment. Yes, WSS 2.0 SP2 has full support for .NET 2.0. However, Microsoft does not support SPS 2003 SP2 with .NET 2.0. You may be lucky enough to have it working in your specific configuration of portal pages and features, but I have not had the same experience. Here’s the official Microsoft statement: http://support.microsoft.com/kb/907763/en-us

  6. Jim Whisenhunt
    August 26th, 2006 at 15:53 | #6

    I could not find the new ASP.NET tab referred to on the web site property page:

    4. On the Properties page, click the ASP.NET tab, and then note the version of ASP.NET that is running on the Web application.

    There is no tab in IIS 6.0. What am I missing?

    Thanks,

    Jim

  7. Thomas
    August 26th, 2006 at 23:17 | #7

    Jim, you will not have the ASP.NET tab until you have installed .NET Framework 2.0 on the web server.

  8. September 22nd, 2006 at 12:23 | #8

    Hi Thomas,

    this is urgent and I need advice we have a dotnetnuke app we bought which is 2.0 compiled and our website run on 1.1 framework. The emailbroadcaster app is a service under the main website. I created a different app pool in IIS to point the emailbroadcaster but when I render the site as http://www.acsi.org/emailbroadcaster it shows me resource not found error. I seem to have hit a block any suggestions?

  9. Thomas
    September 22nd, 2006 at 12:41 | #9

    Sam, it sounds like you have an IIS configuration issue rather than a 1.1 vs. 2.0 issue. Your emailbroadcaster sub-app is looking for a default page called default.aspx (http://www.acsi.org/emailbroadcaster/default.aspx), which does not exist in the emailbroadcaster virtual directory. Please send me an email with your email address through the Email link on the top right side if you still need some help.

  10. Lurker
    October 5th, 2006 at 07:20 | #10

    Hi Thomas,

    I was actually about to uninstall .NET 2.0 and worry about which program crashes later until I saw your solution. Your solution worked like a charm. Thanks dude!

    -Lur

  11. asp.nick
    October 25th, 2006 at 14:38 | #11

    It would be nice if MS provided more clarity. I’m suddenly getting corrupt zip files on DL in IIS 6 after upgrading to 2.0, has anyone ever heard of this or think they might be related?

  12. November 18th, 2006 at 08:32 | #12

    Works for MIIS debugging too.

  13. P D Sreenivasan
    November 24th, 2006 at 07:17 | #13

    This article was great and perfectly suited what i was looking for.. Thanks

  14. Kay Harvey
    January 11th, 2007 at 23:01 | #14

    I’ve have a .NET Framework 1.1 compiled DLL (COM enabled) which is being referenced by a Visual Basic 6.0 application.

    What config file do I specify the <supportedRuntime> configuration settings in ?!? Help!

  15. Thomas
    January 12th, 2007 at 01:13 | #15

    Kay, create <vb6appexename>.exe.config in the folder that holds the VB6 EXE. Use the VB6 EXE name plus .config.

  16. Vamsi
    January 17th, 2007 at 02:28 | #16

    Hey Thomas the imformation which you have provided is gr8. But the problem I am facing is very different. I have my application hosted in 1.1 framework. Now my client wants to change the hosting server which has only 2.0 framework. My questions is will my application run properly in 2.0 framework or not. If not kindly let me know what i need to do to make application run in 2.0 framework. Thanks in advance.

  17. Thomas
    January 17th, 2007 at 10:15 | #17

    Vamsi, since you mention a hosting server I assume you are talking about an ASP.NET 1.1 application. Microsoft put in extra effort to ensure a smooth migration path. It is possible in many cases to take a .NET 1.1 ASP.NET site and run it on 2.0 with no code changes. ASP.NET 2.0 has a very different Web project structure by default, so I suggest that you look at migrating your 1.1 site to a 2.0 Web Application Project – a project type included in VS 2005 SP1 and otherwise available as a free download from http://www.asp.net. Web Application Projects work just like VS 2003′s web projects, so that is the path of least resistance. I recommend installing VS 2005 SP1 before you upgrade. Beyond that, it depends on how much custom code your site contains. There were some changes to the Framework that were breaking changes, things that will not upgrade, but it is likely that you will not encounter any of them. You may want to review the list here: http://msdn2.microsoft.com/en-us/netframework/aa570326.aspx

  18. February 8th, 2007 at 12:33 | #18

    Thanks for providing useful Information.

    Thanks

    Gurjinder Singh Brar

  19. February 9th, 2007 at 09:35 | #19

    Great article…precise and clear. I am a systems engineer myself and have SPS , WSS – SP2 installed on my production server with .net 2.0. Havent had any issues yet , though SPS is set to use .net 1.1. Dont know if what I am doing is correct from a prodcution standpoint.

  20. Gunjan
    February 12th, 2007 at 13:22 | #20

    I am looking for some kind of automation script or full proof process which could help which could help me in upgrading my couple of 2003 Servers to .net 2.0? Any kind of pointers will be of gr8 help…

  21. Thomas
    February 12th, 2007 at 14:33 | #21

    Gunjan, I’m not sure exactly what you mean, applications or Framework. At this point I recommend upgrading to .NET 3.0 rather than just 2.0. The 3.0 installer will install 2.0 plus the additional 3.0 DLLs. The 3.0 deployment guide is here: http://msdn2.microsoft.com/en-us/library/aa964979.aspx. If you’re talking about custom applications, you just need to test them on 2.0/3.0 (same effect) and they may work just fine. There is a list of the breaking changes between 1.1 and 2.0 on MSDN here: http://msdn2.microsoft.com/en-us/netframework/aa570326.aspx

  22. Olan
    February 23rd, 2007 at 20:03 | #22

    Thomas, Are you saying, if I am upgrading from VS2003 to VS2005 use the .Net 3.0 framework instead of the 2.0 framework? Do you know of a good resource that explains what is new feature-wise between 1.1 and 3.0 software?

    Thanks!

  23. Thomas
    February 23rd, 2007 at 20:44 | #23

    Hi Olan, yes, that is basically what I’m saying. You are best off installing the 3.0 Framework at this time instead of 2.0. The 3.0 installer will, in fact, install the 2.0 Framework. If you haven’t already, please take a look at my post regarding the 3.0 Framework (http://blogs.digineer.com/blogs/tabraham/archive/2006/12/18/net-framework-1-1-and-2-0-and-3-0-side-by-side-sxs.aspx). The 3.0 Framework *IS* the 2.0 Framework, plus more DLLs. Visual Studio 2005 and any .NET 2.0 application will have no knowledge of or side effects from installation of .NET 3.0 — you will simply gain access to the additional features in 3.0 should you choose to use them (see http://www.netfx3.com).

    As far as comparing 1.1 to 3.0, look for articles comparing 1.1 and 2.0 on MSDN, as there are many available. Then reference the 3.0 website I listed above for information on the features added in 3.0. Thanks for reading.

  24. gingin
    February 28th, 2007 at 17:01 | #24

    I believe the problem I am having is related to your article, but I am still having problems. I have an asp.net 1.1 app that I am trying to install on a server that has sharepoint 3.0 installed on it. The app is installed under the sharepoint – 80 directory in iis and is set to asp.net 1.1 and is in a different app pool. I also added the configuration line you mentioned in your article to the web.config file of the app. When I try to run the app I get an error. The error is with the web.config file that is in the sharepoint directory. At the bottom of the error page the version of asp.net is 1.1. If clarification is needed I will try my best. Any help would be appreciated.

  25. Thomas
    February 28th, 2007 at 17:36 | #25

    Gingin, you will NOT want to have the element in the web.config of a .NET 1.0/1.1 website, so first remove that. It is for programs but not for websites. The 2.0 vs 1.1 website runtime is controlled only by the ASP.NET tab in IIS Admin, which it sounds like you have already set correctly. Take care when nesting a non-SharePoint website under a SharePoint website, because SharePoint usually drops a custom web.config in the website root, and it can affect the way your nested site operates. You sometimes have to override the SharePoint config settings in your nested website’s web.config. I hope that helps – unless you have a different error once you remove <supportedRuntime>.

  26. gingin
    February 28th, 2007 at 19:32 | #26

    I think I was confusing the framework version with asp.net version when I read your article. But I think you have pointed me in the right direction. I was encountering problems before I added the <supportedruntime>. The way the app is setup now it never hits the web.config file for the app only the web.config file for sharepoint. I will remove the tag though. The reason I have the app installed under sharepoint is because when I removed sharepoint’s web.config file the app worked and I assumed this is where it needed to be. Also, when I installed it in its own website folder in iis I got a page not found error. I was hoping that tag would help though, because obviously breaking sharepoint to fix something else isn’t a good solution. I think my solution lies in finding a way to run the app from outside the sharepoint-80 folder in iis or how to override sharepoint’s web.config file so my app will run without having to break sharepoint. The latter I don’t understand, because if when I load the app it bombs at the sharepoint web.config then that means it never gets to my app so how is adjusting the app’s web.config file will help? Thanks so much for your help, it is really appreciated.

  27. Thomas
    February 28th, 2007 at 19:48 | #27

    Gingin, maybe you can post the error with the SharePoint web.config. Are you saying that SharePoint itself is not working properly, or just your app gives an error with the SharePoint web.config?

  28. gingin
    February 28th, 2007 at 19:59 | #28

    The app only has errors when the sharepoint web.config is in the root sharepoint-80 folder and sharepoint works fine. If I remove the sharepoint web.config file my app works but sharepoint doesn’t.

    The error I am getting when I run the app is within the sharepoint web.config file. On the error page, It is a paser error ….something about ‘type’. And below this it says asp.net version 1.1. Unfortuantely I can’t send the info right now, I can though when I return to work tomorrow.

    The sharepooint-80 folder in iis is set to asp.net 2.0 and is running in a different app pool from the app that is nested within the folder. The nested app is set to asp.net 1.1 and a different app pool.

  29. Thomas
    February 28th, 2007 at 20:21 | #29

    Gingin, it is probably SharePoint .NET 2.0 configuration elements and types in the root web.config that are being inherited by your 1.1 application, which means that they are missing in the context of your .NET 1.1 runtime but not to SharePoint under 2.0. Here are a couple of good links that describe this configuration inheritance behavior: http://msdn2.microsoft.com/en-us/library/ms178685(VS.80).aspx and http://msdn2.microsoft.com/en-us/library/dtbwsx8s.aspx. Note that these articles are from the 2.0 documentation — you may even need to look back to the 1.1 version of these articles. By far the easiest way to go is to get your app running under a different site, or set your site to run as 2.0. Have you tried your website under 2.0? In many cases it will work just fine, and even pick up some performance gains.

  30. gingin
    February 28th, 2007 at 21:00 | #30

    I tried it under 2.0 and had errors. I will check out those articles. I will also attempt to get the app running under a different site. Thanks for you help. I’ll let you know how it turns out.

  31. gingin
    March 1st, 2007 at 14:38 | #31

    I finally got it working. All I had to do was install it as a seperate website from sharepoint and assign it a different port. Thanks again.

  32. Paul W
    March 8th, 2007 at 09:35 | #32

    Thanks Thomas – you’ve solved my (very frustrating) problem!

    I have a vbscript kicking off a .Net component that uses the MS encryption enterprise block. Configuration threw an exception when initializing the FileWatcher type. Now I’ve run the WinDbg against wscript.exe I see that it has loaded some 2.0 dll’s.

    Sorted.

  33. John
    March 21st, 2007 at 03:56 | #33

    Is there anyway to target using a specific assembly? e.g., so instead of using system.xml.dll 2.0 use 1.1?

  34. Thomas
    March 21st, 2007 at 09:05 | #34

    John, yes there is. I have never tried it on .NET Framework DLLs, only on user-created DLLs, but in theory it should work just the same. You use the configuration/runtime/assemblyBinding/dependentAssembly/assemblyIdentity and bindingRedirect elements in your config file. Please see the example here: http://msdn2.microsoft.com/en-us/library/eftw1fys(VS.80).aspx.

  35. Soto
    March 21st, 2007 at 21:21 | #35

    I ran into this blog trying to figure out why Quickbooks 2007 is trying to install .NET 1.1 onto a Vista machine (which of course ships with 3.0) when it is supposedly Vista certified.

    It seems to be generating hangs, reboots, all sorts of problems for users but based on the the above, it appears that they should co-exist? Wonder why they did not just run it vs. 3.0 if it was written for Vista….

  36. Thomas
    March 22nd, 2007 at 12:13 | #36

    Soto, yes, .NET 1.1 is definitely OK and supported on Vista. It just means that QuickBooks 2007 has not been upgraded to .NET 2.0/3.0. It might run fine with 2.0/3.0 but they perhaps they have not tested it, or did and found upgrade issues. The specific programming language or runtime used does not have any relation to receiving Vista certification. There is at least one patch for .NET Framework 1.1 SP1 that was specifically issued for Vista: http://www.microsoft.com/downloads/details.aspx?FamilyID=59b18749-74f9-4891-8cb5-b22970b58aa9&DisplayLang=en.

  37. Campbell
    April 2nd, 2007 at 14:49 | #37

    Hi Thomas,

    I was wondering if there are any known issues beyond the MS office issues when running side by side frameworks for desktop (client-server) applications? I have software written in vs 2005 and the network admin doesn’t want to install the 2.0 framework because of the potential of the installation breaking other software.

    Is there really an issue?

  38. Thomas
    April 2nd, 2007 at 17:27 | #38

    Hi Campbell, the likelihood is that there would be no issues, but there is not a universal answer. Any existing .NET 1.0/1.1 applications will continue to use that Framework as long as it remains installed in addition to 2.0, so no issue there. The only case that can get you is if the PCs have an unmanaged application (see the post) that is not itself written in .NET, but loads the .NET runtime (the CLR) to run .NET code. Those apps will start to pick up .NET 2.0 instead of 1.1 unless you override them with the .config files. The big question is whether any of the apps on your PCs actually ARE 1) unmanaged apps that 2) also load .NET code. On a typical office desktop, there probably isn’t much that would fit that description other than Office, and even then it doesn’t matter unless you are using a .NET Office add-in. You would have to do a test to be absolutely certain, but if you’re talking about a typical office desktop PC, odds are you will have none of the unmanaged apps that I described and you will be just fine with the 2.0 side-by-side installation.

  39. Lakshmish Rao
    April 3rd, 2007 at 12:09 | #39

    Thanks very much for the solution Thomas.. Even I had a problem with 2.0 and your solution works amazing…

    Thanks a lot…

  40. Jason Young
    April 9th, 2007 at 10:41 | #40

    Soto said:

    I ran into this blog trying to figure out why Quickbooks 2007 is trying to install .NET 1.1 onto a Vista machine (which of course ships with 3.0) when it is supposedly Vista certified.

    It seems to be generating hangs, reboots, all sorts of problems for users but based on the the above, it appears that they should co-exist? Wonder why they did not just run it vs. 3.0 if it was written for Vista….

    >>>>>>>> So what is the solution to this quickbooks snafu? I am trying to install quickbooks 2007 on my vista business and it keeps trying to install .net 1.1! Naturally, vista rejects it! And quickbooks does not post a solution!

  41. Thomas
    April 9th, 2007 at 11:02 | #41

    Jason, Vista supports .NET 1.1. If it is failing during the install, have you tried just installing .NET Framework 1.1 by itself first?

    .NET 1.1: http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&DisplayLang=en

    SP1 for .NET 1.1: http://www.microsoft.com/downloads/details.aspx?FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38&DisplayLang=en

  42. Jason Young
    April 9th, 2007 at 11:18 | #42

    Hi Tom

    Thanks for the quick reply. Won’t installing .net 1.1 overwrite the .net 3.0 on my vista??

  43. Thomas
    April 9th, 2007 at 11:24 | #43

    Jason, no it won’t. .NET Frameworks 1.1, 2.0 and 3.0 can all exist side-by-side on the same machine. In fact, 2.0 and 3.0 *always* co-exist. Installing 1.1 will not overwrite either of those two.

  44. Jason Young
    April 9th, 2007 at 11:48 | #44

    Hi Tom,

    Just tried installing dotnetfx from microsoft, and it went bust. Just said some processes are in error, then rolled everything back. I guess 1.1 and 2.0/3.0 are incompatible?

  45. Thomas
    April 9th, 2007 at 11:56 | #45

    Hi Jason, I promise that is not the issue, but if the Framework 1.1 install is failing it is hard to diagnose because it could be anything. You might find some error messages in your Event Logs or in an error log on disk somewhere.

    Check this out first though, maybe it will help:

    http://blogs.msdn.com/astebner/archive/2007/02/04/error-installing-net-framework-1-0-and-1-1-on-windows-vista-caused-by-data-execution-prevention-dep.aspx

  46. Jason Young
    April 9th, 2007 at 12:02 | #46

    Will give it a try! Thanks a lot.

  47. Jason Young
    April 9th, 2007 at 12:36 | #47

    Dear Tom,

    Hope you’re still around. Tried Stebner’s way of turning DEP off, and still it didn’t work. It still says the same thing as before when installing .net – ‘application has generated an exception that could not be handled’. Then it just rolls back. Any other ideas, please?

  48. Thomas
    April 9th, 2007 at 12:52 | #48

    Hi Jason, you may be about to the point where you will have to contact Microsoft tech support. Since this is pretty clearly not your issue, you should not be charged for the call. Intuit’s tech support will be of no use because you’ll get nowhere until the Framework installs, and that is purely Microsoft’s realm.

    Here are a couple of other things I found. Note that the icelava post has a couple of embedded links that are formatted with underlines vs normal link formatting. Failing that, I think more Internet searches or Microsoft support are your best approaches. Sorry I could not help further. There is no fundamental incompatibility at work here, just something amiss with the 1.1 installer in your particular configuration. If you do find out the cause please post another comment here. Thanks!

    http://icelava.net/forums/thread/1464.aspx

    http://blogs.msdn.com/astebner/articles/454956.aspx

  49. Curt
    April 23rd, 2007 at 10:13 | #49

    We recently loaded .Net Framework on our web server to compliment v1.1. that was already in place and supporting several applications developed in VS2003. However now we have a predicament whereas either version 2.0 applications run fine or version 1.1 versions run fine but never both. It appears that the version selected in the settings for the last Application folder saved is the version that runs while a message saying “Service Unavailable” is presented to users of the non-working versions. Any ideas?

    Thanks.

  50. Thomas
    April 23rd, 2007 at 11:17 | #50

    Curt, you must run ASP.NET 1.1 and 2.0 apps in different AppPools. It sounds to me that you have them in the same AppPool.

Comment pages
1 2 29
Comments are closed.