# .NET framework - two versions?

**URL:** https://boards.straightdope.com/t/net-framework-two-versions/282336
**Category:** Factual Questions
**Created:** [December 30, 2004, 11:31pm UTC](https://boards.straightdope.com/t/net-framework-two-versions/282336 "2004-12-30T23:31:17Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Xema](https://avatars.discourse-cdn.com/v4/letter/x/9de053/32.png) [@Xema](https://boards.straightdope.com/u/Xema)
#### Post date: [December 30, 2004, 11:31pm UTC](https://boards.straightdope.com/t/net-framework-two-versions/282336/1 "2004-12-30T23:31:17Z")

</div>

It appears that my computer currently has two versions of the Microsoft .NET framework installed: v1.0.3705 and v1.1.

Is this as it should be, or is it a mistake? What might have caused this? Should I uninstall the earlier version? Is there any trick to doing this so that disruption is minimized?

---

<div class="post-metadata">

### Author: ![Arwin](https://avatars.discourse-cdn.com/v4/letter/a/51bf81/32.png) [@Arwin](https://boards.straightdope.com/u/Arwin)
#### Post date: [December 30, 2004, 11:34pm UTC](https://boards.straightdope.com/t/net-framework-two-versions/282336/2 "2004-12-30T23:34:18Z")

</div>

> [@Xema](#):
>
> It appears that my computer currently has two versions of the Microsoft .NET framework installed: v1.0.3705 and v1.1.
> 
> Is this as it should be, or is it a mistake? What might have caused this? Should I uninstall the earlier version? Is there any trick to doing this so that disruption is minimized?

This is perfectly ok, don’t worry about it (trust me, I do this for a living).

---

<div class="post-metadata">

### Author: ![LSLGuy](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/lslguy/32/5813_2.png) [@LSLGuy](https://boards.straightdope.com/u/LSLGuy)
#### Post date: [December 31, 2004, 1:45am UTC](https://boards.straightdope.com/t/net-framework-two-versions/282336/3 "2004-12-31T01:45:30Z")

</div>

Arwin’s right. And in about 6 months, you’ll probably find a version 2.0 in there as well.

---

<div class="post-metadata">

### Author: ![Xema](https://avatars.discourse-cdn.com/v4/letter/x/9de053/32.png) [@Xema](https://boards.straightdope.com/u/Xema)
#### Post date: [December 31, 2004, 2:55am UTC](https://boards.straightdope.com/t/net-framework-two-versions/282336/4 "2004-12-31T02:55:55Z")

</div>

So you just keep on accumulating them? I would have thought the newer version replaced the older one.

And suppose I wish to install the .NET framework on a computer that doesn’t yet have it - do I need to install both versions?

---

<div class="post-metadata">

### Author: ![Ms2001](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/ms2001/32/18463_2.png) [@Ms2001](https://boards.straightdope.com/u/Ms2001)
#### Post date: [December 31, 2004, 5:00am UTC](https://boards.straightdope.com/t/net-framework-two-versions/282336/5 "2004-12-31T05:00:36Z")

</div>

> [@Xema](#):
>
> So you just keep on accumulating them? I would have thought the newer version replaced the older one.

One of the important features of .NET is that it eliminates “DLL hell” - the problems that can crop up when you replace one version of a library with another version that claims to be compatible, but really isn’t. For example, if a program was written to work around undocumented bugs in version 1, and version 2 fixes those bugs, the program might stop working after an upgrade, even though the public specifications of the new version are the same. The creators of the DLL might not even know they’re breaking third party software with the upgrade.

So .NET allows programs to be linked against specific versions of libraries, and it allows multiple versions to coexist on your computer. It wastes some space, but disk space is cheap these days.

This is also good for security, because libraries can be signed by their creators, and that signature is part of the version information that’s in a program. If you have a .NET program that’s linked with version 1.0 of System.Web.dll (signed by Microsoft), a malicious hacker can’t just create his own System.Web.dll, call it version 1.0, and slip it onto your computer, because he doesn’t have Microsoft’s private key to forge their signature. If he replaces your legitimate copy of the DLL with his own, the program won’t even run, because .NET won’t be able to find the library it’s linked to.

> [@](#):
>
> And suppose I wish to install the .NET framework on a computer that doesn’t yet have it - do I need to install both versions?

You only need to install the version(s) that the applications you use were built with.

---

<div class="post-metadata">

### Author: ![Xema](https://avatars.discourse-cdn.com/v4/letter/x/9de053/32.png) [@Xema](https://boards.straightdope.com/u/Xema)
#### Post date: [January 1, 2005, 3:11am UTC](https://boards.straightdope.com/t/net-framework-two-versions/282336/6 "2005-01-01T03:11:42Z")

</div>

A useful post - thanks.
