Oddly enough, this has been my most popular blog post in the past nine years I’ve been running this blog.

This blog post has been updated often and was initially written for Windows Server 2012, but it is still applicable today.
Interestingly, installing Dotnet 3.5 is the same as almost ten years ago.

The latest version of Microsoft .NET Framework 3.5 is .NET Framework 3.5 (3.5.1) Service Pack 1.

It is now possible to install .NET Framework 3.5 SP1 using the GUI, Powershell, DISM, or the Offline Installer.
Which method you prefer is up to preference.

Like most people having issues installing .NET Framework 3.5 on your server or client machine, read this blog post to clarify this question.

This blog post focuses on installing .NET Framework 3.5 on Windows Server 2012, Windows Server 2016, Windows Server 2019, and Windows 10.

Where do I find the .NET Framework 3.5 installation status?

If you want to verify if .NET Framework 3.5 has been installed on your client, the easiest way is to do this via the Control Panel.

Here is how to check if .NET 3.5 is installed on Windows 10:

Open the Control Panel and go to Programs and Features.

Press Turn Windows features or off.

Windows 10 - Control Panel - Programs and Features - Turn Windows features on or off

Verify if .NET Framework 3.5 (Includes .NET 2.0 and 3.0) is enabled.

If you see the same as in the below screenshot, .NET Framework 3.5 is installed.

Windows 10 - Turn Windows features on or off

Install .NET Framework 3.5

This blog post describes how to install .NET Framework 3.5 SP1 using:

  1. Command-line (DISM)
  2. Powershell
  3. Server Manager (GUI)
  4. Offline Installer

Unfortunately, installing Microsoft .NET Framework 3.5 is not as straightforward as you think. Microsoft has a guide for installing .NET Framework 3.5, but it does not provide the whole story.

.NET Framework 3.5 - Do you need to specify an alternate source path?

.NET Framework 3.5 comes with the Windows 10 DVD and is located in the \sources\sxs folder.

Versions of .NET Framework 3.5 on Windows 10

Note that when installing .NET Framework 3.5, they are version specific. You need to install .NET 3.5, which comes with each Windows 10 version. So, for Windows 10 2004, you will need to install .NET 3.5 from that media, 1909 from that media, and so on.

How to Install .NET 3.5 using DISM

Start an elevated command prompt using Run as Administrator and enter this command:

dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess

Note: The source should be the Windows installation disc. In my case, the media was located on D:.

Install .NET Framework 3.5 using DISM
Install .NET Framework 3.5 using DISM

Powershell command to install .NET Framework 3.5

It is also possible to install .NET Framework 3.5 using Powershell.

Run Powershell with elevation and use this command to accomplish this:

Add-WindowsCapability –Online -Name NetFx3~~~~ –Source D:\sources\sxs

Install .NET Framework 3.5 using the Server Manager

Go down to Specify an alternate source path and enter this in the path:

 <media drive>\sources\sxs
Specify an alternate source path when installing .NET Framework 3.5

Enter the source path, which should be the Windows 10 installation media.

Specify alternate source path in Add Roles and Features Wizard when installing .NET Framework 3.5

Install .NET Framework 3.5 using the offline installer

You can also install .NET Framework 3.5 offline using the Offline Installer:

Review installation of .NET Framework 3.5

Once you have followed one of the above three installation methods, verify the .NET Framework 3.5 Feature installation status using:

  1. The GUI
  2. Powershell

Review installation of .NET Framework 3.5 using the Server Manager

If you open Server Manager and open Add Roles and Features, see the following for the .NET Framework 3.5 installation:

.NET Framework 3.5 installed on Windows Server or Windows 10

Review installation of .NET Framework 3.5 using Powershell

Use the below Powershell command to see if .NET Framework 3.5 is installed and with which subversions:

(Get-ItemProperty -Path "HKLM:\SOFTWARE\MicrosoftNET Framework Setup\NDPv3.5").Version


Incredibly, this is still an issue and my most popular blog post on this site.

The possibility to install .NET Framework 3.5 using Powershell is improved, but not much more.

Even though .NET Framework 3.5 is an old library, we will likely see it as a prerequisite in the upcoming years.

When did you first encounter this issue, and is it still applicable to you?

Please leave a comment below with your answer!


Related posts


  1. Thanks for the post. Pretty crazy this made it past QA… you’d think installing .NET 3.5 would be a pretty key thing to test 🙂

  2. Just used this to install SQL2012 on a Windows Server 2012 virtual box. It worked fine so thanks for the advice. Am going to use it to create a Sharepoint 2013 farm.

    BTW I set up another test box and used the option that appears at the bottom of the same window as the error message (shown in yellow above) and this installed the feature very quickly. Am going to do this to all my servers as a precautionary measure.

  3. Thank you, i actually used ps with Install-WindowsFeature NET-Framework-Core –Source D:\Sources\sxs, thanks for the tip.

    My issue was then installing SQL server 2008r2 onto the server 2012 box, all default options, it failed to install, is there anything else i need to be aware of?

  4. I tried the recommended solution, but I get the error 0x800f081f. I tried to copy the entire folder on the local disk and change path same problem

  5. Hey Zero,

    I was running into the samething you were. I mounted the OS installation ISO and ran the command it and ended up running succcessfully. Hope that helps.

  6. .NET 3.5 sources are on the CD/.iso of Windows Server 2012 in
    :\sources\sxs (as you mentionned).

    But When adding up the .NET 3.5 feature via Server Manager on your Windows Server 2012, when on the “Confirm installation selections” screen, there is a link at the bottom named “Specify an alternate source path” where you give the path I wrote above. Clicking install will work add .NET 3.5 flaslessly.

  7. I just re-read what I’ve typed late last night… didn’t know the path would come out distorted like that. The ‘backslashes’ were interpretted it seems (is your site protected from injections?).

    Also, sorry for the typos… it was REALLY late for me! 🙂

  8. I did many times like you mentioned above with no result it is giving me this error Error:0x800f0906. Any help please

  9. “Error 87” is what i get while pushing the command ahead in the cmd.I am still guessing what to do next,probably the feature “NEWTECH”was the thing I need to know how to get in the cmd.I need a assistance in this,Is there any one who can help out…………………

  10. if the above method does not work for you. Use add feature via server manager tick to install .net35 framework and on the next page specify the sources\sxs\path which should be you iso dvd. this should work.

    Many thanks

  11. This command works perfect:
    dism /online /enable-feature /featurename:NetFX3 /all /Source:D:\sources\sxs /LimitAccess

    Thanks so much

  12. What you’re missing is the bottom of that screenshot that allows you to select alternate paths. which is really all you’re doing via the cmdline specifying the CD as the location. so its not a bug, its just poorly designed UI. And perhaps its stupid that they force you to use the CD to get it installed.

  13. The solution you gave worked perfect.
    dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess

    I could not install the .NET 3.5 from the Server Manager on 2012 server. I was about to give up then, I googled a fix for the last time and I found your solution. A M A Z I N G… Thanks!

  14. Got a 0x800f081f error with D:\ mapped and all. What a cluster fuck of an install this is. On the RC I could live with it, not after paying 2000 euros for a license. This will not do. Not to mention no WSUS support unless that’s installed on Windows 2012 too, which you need .net 3.5 for. I don’t even.. Windows 2012 looks more and more like an open source project, what are they doing?

  15. Is it possible that framework 3.5 cannot be installed on evaluation licence of WS2012 datacenter? I’ve tried this method after I’ve tried several times adding a feature. I even tried to run installer directly but result is the same….failed to install.
    Any thoughts would be appreciated.

  16. After downloading dotnetfx35, and trying every which way to get it to install (because this the way we did it in class)just using the 2012 windows install ISO was so easy. I guess since it will not install from add / remove features in Srv Mgr I just thought it was not in the 2012 windows package. Why include it but in the install medium, have a check box for it in add features and then not let it work. It’s Sooooooooooooooooo Microsoft.

  17. Stupid Microsoft. Why can they not leave it as it was in server 2008 R2. There it was working fine. Now you need to go change the location of where to find the files. How dumb!!!

    Thank you Daniel for taking the time and posting on this problem and the solution.


  18. Thanks Man, That’s so helpful.
    I can’t understand why Microsoft going on updating the .net framework and then ask you to install the old releases??
    as Jim Sperry says “It’s Sooooooooooooooooo Microsoft”.

  19. I have manually downloaded .NET Framework 3.5 installer from Microsoft website and on “Specify an alternate source path” form I’ve entered the path of my Downloads folder. Feature has been installed without error. It seems that it’s exactly the same installer as on Windows setup DVD. Your solution doesn’t require manual download but mine can be useful because sometimes the server is far away from your workstation and using DVD is not very handy.

  20. There are about 100 tutorials exactly like this one describing what to do if you have the disk, but not a single one describing what to do if you dont have the disk! Installing .net 3.5 on windows 8 without disk is not possible?? No this is not a pirated version, it’s legit but on a remote machine and running a virtual image. I cannot “insert disk”!!!!
    Please a tutorial on how to do this _without_ the frigging disk.

  21. Thanks for the article Daniel, worked a treat, though in my environment once I actioned the “dism” command .net 3.5 was then installed. No need to “choose” source.

    I manage a virtual environment, you’ll probably want to find a way to Mount an ISO of the disk and perform the same operation as above.

  22. There’s no need to use UpperCase. In my (albeit limited) experience with powershell all commands can be entered as lowercase. But I realize that it makes the commands more readable.

  23. Didn’t work for me. It failed and complained about non-matching verification information.

    However one in PowerShell DID WORK:
    Install-WindowsFeature NET-Framework-Core

    It was the only solution that worked on my 2012 R2 Standard evaluation.

  24. With PowerShell :
    Install-WindowsFeature has a parameter by the name -Source where you can specify the path to alternate WinSxS directory on a mounted image, network path etc.

    Install-WindowsFeature NET-Framework-Core -Source D:\source\sxs

    The above will work too

  25. Hi Daniel, helpful article, but didn’t work for me though 🙁

    I tried the Step 2 first about 10 odd times, but was unsuccessful. Then I used Step 1, but it got stuck at 65.9% for something like 10 odd minutes, then moves onto 66.2% where it exits with error code: 14028. A component’s file does not match the verification information present in the component manifest.

  26. Thanks!
    Of course, since the files are on the CD/ISO anyway, do not know why the feature installation cannot find them on its own. . .

  27. It is important to understand why you get this message as this will help you choose what to do next.
    1. If your machine is connected to the Internet, you can continue with the installation and the “Add Roles and Features” wizard will download the required binaries from the Internet. There is a logic behind this, as you get an updated version of the binaries.
    2. We are talking about 200MB of data. If you have a slow connection and the latest .Net 3.5 SP downloaded, the method suggested by Daniel is a very good choice.
    3. The installation fails, and the only way to install .Net 3.5 is the Daniel’s method when:
    – There is no Internet connection
    – There is a Proxy which blocks the connection to the download site
    – The Download location is not available – down for maintenance or update

    And yes, if you wonder why the installation of .Net 3.5 takes so long – you are downloading the 200MB binaries before they are installed

  28. hello when i run the command see this error

    Error: 0x800f081f

    The source files could not be found.
    Use the “Source” option to specify the location of the files th
    o restore the feature. For more information on specifying a sou

    The DISM log file can be found at C:\Windows\Logs\DISM\dism.log

  29. I had best results referencing the server location where the SHARED .ISO/.WIM file resided via the FQDN of the server rather than NetBIOS as this may imply to others..

  30. We tried everything and no go, but by some coincidence I found out that if the server is not in a domain (just a workgroup), the server installs the dotnet3.5 without any problem and fixes 🙂

  31. I tried it, the message I get is: ‘dism’ is not recognized as an internal or external command, operable program or batch file.

  32. It’s worth noting that the two methods use different authentication to the source media files when accessed remotely. For a locally attached disk or SXS copied locally, the two methods are roughly equivalent.

    In the remote case:
    Using dism.exe will access the files under your user credentials.
    Using the wizard or install-windowsfeature cmdlet will access the source files under the machine$ account. This is similar to how hyper-V, for example, accesses VHDs on a remote shared storage.

    Thanks for a great article.

    — Microsoft Windows Server Deployment team.

  33. didn’t worked
    I received this error
    Enabling feature(s)
    [===========================66.5%====== ]

    Error: 0x800f0906

    The source files could not be downloaded.
    Use the “source” option to specify the location of the files tha
    ion on specifying a source location, see

    The DISM log file can be found at C:\Windows\Logs\DISM\dism.log

  34. Good Morning,
    i have the same problem of the user Mike Lefebvre. I’m in workgroup. I tried all possible ways also changing a registry key. The source file are copied in the local disk and i’m able to read and write in this folder. Any another solutions?

  35. The command line version worked for me, not the GUI. I had to burn a DVD and attach it to the virtual server before Install would find the files. Then NetFX3 installed. Strange that the GUI doesn’t let you browse to the alternate file location. THANK YOU for the solution!!!

  36. The reason the install had failed in my setup was because WSUS was enabled on my servers. Once i disabled WSUS on my servers by deleting the keys in the registry all worked perfect.

  37. Hi people,

    I don’t have a installation CD but and ISO file of win server 2012. I copied this file to my desktop. When adding dotnet3.5 feature and need to specify path, I used the path c:\users\administrator\desktop\. Didn’t work for me. Been trying out many things a few days… Appreciate any help. Many thanks.


  38. Thanks Shaun, “Remove update Security Update 2966827 and it will install just fine.Then reinstall the update.” Worked for me!

  39. For me too! Thanks David !

    “David Eaton says:
    September 24, 2014 at 11:29
    Thanks Shaun, “Remove update Security Update 2966827 and it will install just fine.Then reinstall the update.” Worked for me!”

  40. What I find most people miss is that the INSTALL button is available. Most people see the warning and then see the NEXT button disabled and go looking for an answer. @NetoMeter points out the options (e.g. you have no or really slow Internet connection).

    If you see this warning and have a half-way decent connection, just click Install and it will download what is required and install it for you.

  41. Its pretty annoying that the Server Manager/Add Features applet can’t go fetch the files it needs directly from the internet these days. You have to have DVD around, seriously? I understand leaving out optional components but this is just a bunch of makework. In a secure environment with no internet access, OK, I understand needing the DVD. It’s little things like this that drive us nuts.

    Thanks for the instructions, though!

  42. Awesome. Worked for me. New install of a Server 2012 R2 instance for a VM on Stratus everRun. Not sure why it didn’t take on this install as it has worked before on other builds but, this one was not taking it until this work-around. Thanks again.


  43. Very relevant and to the point. I did not need to go back and specify the path after following these instructions as the feature was added. Thank you so much for this fix.

  44. For 2 days , I tried every thing , even downloaded it from Microsoft , nothing had worked, your method worked so beautifully , thanks a lot , your are a champion

  45. Many thanks Daniel. I had similar experience as Sam (March 15th) where nothing worked, even an offline installer. Tried your command line version and this worked a treat. Many hours of head scratching saved !!
    Cheers, Alan.

  46. Important!!! during the net 3.5 Installation the Server try to connect to Windows update Server. But if u put Server already into WSUS/OU where WSUS is configured by GPO: Server can not connect to Windows update Server anymore. you will get error message anyway. Solution: put Server to an OU where WSUS is not configured. make gpupdate /force or reboot afterwards. Now Server is aible to get latest net 3.5 files from Internet and Features install will walk through properly

  47. @Jacques Lafalize – by the way. of course you will get same result if u remove Server from Domain. 😉 But it is not neccessary

  48. Thank you soooo much!
    This saved not only my mind but truly made me look like a hero!!!

    This really made my day.

  49. Brilliant – thanks!. We had an .iso of Server 2012 Open Licence which had worked before on many VM installs but failed on one machine. The tip to put d:\sources\sxs as an alternative source in the GUI resolved it.

  50. Thanks a lot… this really works!!! 🙂

    Just want to add one thing:- if you are not connected to Windows update Server, mount OS installation DVD, and specify the same drive in the path mentioned.

  51. Rather than remove the server from the domain to get it to talk to Windows Update. just change the HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\UseWUServer to 0, restart the Windows Update service and then try to install it. After installation, change the key back to 1 and restart Windows Update service again.

  52. Rather than remove the server from the domain to get it to talk to Windows Update. just change the HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\UseWUServer to 0, restart the Windows Update service and then try to install it. After installation, change the key back to 1 and restart Windows Update service again.

    Thanks! that worked!

  53. Thanks. I am not a Windows guy but occasionally have to install Windows applications. Your blog fixed my issue quickly and effectively. I really appreciate the trouble you took to publish this.

  54. Thank you! This initially failed but I tried again, this time capitalizing the D: for the path to opt drive and it worked. (don’t know why that mattered). This works on Server 2016 preview as well.

  55. brilliant from you sharing your solution with us. so nice.

    big shit again from MS. in the days of automation

  56. For those who have windows install media as ISO (image) file, the following works:
    1. Right click on the ISO file and open with “Windows Explorer”.
    2. Wait for few seconds to get the content on the explorer. You can see the following directories:
    a. boot
    b. efi
    c. sources
    d. support, other files.
    3. Now, go to “sources”->”sxs”
    4. In the address bar, copy the path and paste in the command given in step #1.
    Ex: dism /online /enable-feature /featurename:NetFX3 /all /Source: /LimitAccess

    This worked for me.


    • Typically after opening in explorer the iso will mount as the D drive.

      dism /online /enable-feature /featurename:NetFX3 /all /Source:d:sources/sxs /LimitAccess

      That command with the / between the sourses and sxs worked for me.

  57. Hello…. Sir
    I am form India. i have a lenovo server ST550. i am Installed Server OS 2016R2. now i want to installed on system .net 3.5 version for my ERP Softwre work.
    how to Install install ??? or .net 3.5 ver Its install on 2016 or not install ???

  58. Do the source files need to be pulled from the ISO that matches the Windows 10 version they are being installed on? For instance, I used source files from 1903 on a 1903 system, however when I tried on a different version of windows (1809 or 1803 I believe) the feature didn’t install.


    • Hi Jesus,

      Sorry, I haven’t tried if this works or not, but according to your findings, this might be true. I will add a small note before I’ve tested myself.

      Thanks for the comment and please let me know if you have any new findings 🙂

    • yes, the version has to match exactly. So you cannot use a 1803 on a 1903. Don’t know if it’s language-specific.

      Also – at least in previous versions, haven’t tested in 1903 – it *has* to be in X:\sources\sxs with only the drive letter being variable. Copying just the files (or even the sxs) to – say – C:\install\dotnet35 doesn’t/didn’t work.

      Although I surely appreciate the fact that Microsoft does want to get rid of it this way – there are many other features still usable in a vanilla install. Like ancient VB6-Programs from the 1990s.

  59. For anyone in 2019 still dealing with this issue like I was and completely confused as to why the /sources/sxs path didn’t exist…

    Initially I tried all 3 of the methods above and couldn’t get anything to work. Then I realized the path was actually coming from the OS installation .iso that I had since ejected from the VM. I re-mounted it, and sure enough, the ‘sources’ folder was right there in the D drive. I was able to specify the path as an alternate source in Server Manager, and now I’m good to go!

  60. Just a quick update for people on AWS, Azure or Google Cloud.
    I ran into this issue as well.

    The only way to get this to work is to download the trial version of Windows Server 2019 from:

    1 – Open the ISO extract the sxs folder, located \sources\sxs\
    2 – Now you have that folder you can move that folder to each of your servers without the need to copy the full ISO to every server.
    3 – when you install .NET3.5 make sure you select the location of that folder you copied over to on the server (Daniel has explained how to do that in this blog post)


  61. Is this possible to install without the Windows CD/Install folder on the machine?

    Work in a lab environment, some of the older instruments need 3.5 on Windows 10 PCs…

  62. No matter how you do it, the source files are NEVER seen as valid on any windows image I’ve downloaded from them. Either mounting the ISO, putting them in c:\sxs or any other location. It always fails.

  63. I am able to install .net 3.5 via DISM just fine, but I’m not getting the feature names for HTTP Activation and Non-HTTP Activation. We want those included so it’s automated. Using /all for netfx3 doesn’t add those other two features automatically.

  64. Likewise. I’ve tried varying methods, different ISO’s and sources matching installed versions, etc. The only thing that seems to work is downloading them over the Internet, which can be slow and occasionally freeze up, at least IME.

  65. AWS provides public snapshots of all of the Windows install media. in EC2 go to snapshots, switch from “Private Snapshots” to “Public Snapshots” and search for your OS, example “Server 2019” and pick your language. Create a volume in the same availability zone as your instance from the snapshot, attach it and match the drive letter up with the rest of this article.

  66. I’ve never had success installing .NET Framework 3.5 from the windows feature install option and have been using the DISM method, but it wouldn’t work this time. Your information about the DISM method and needing the disc with the same version of windows 10 on it was the key to a successful install of .NET Framework 3.5 this time. Thanks so much for this article!

  67. It’s September 2021, and I am still having to install .net 3.5 to the Windows 10 installation. It is as if Microsoft do not care which features of its’ OS customers are, or are not, still using.

  68. Thanks for such a DETAILED explanation, dear Mr. Engberg! Nothing else on the Web worked for me. The KEY was YOUR information about the DISM method and requiring the disc with the SAME version of Windows 10 as installed on MY computer.

  69. Unfortunately the “offline installer” isn’t, and doesn’t work.
    It simply starts an MS program that tries to download from Windows Update – no good if you’re on a corporate network that blocks all automated downloads.

  70. There is a problem in the command line, this command is not working in “How to Install .NET 3.5 using DISM”

    The command should be:

    dism /online /enable-feature /featurename:NetFX3 /all /Source:G:sources/sxs /LimitAccess

  71. Sadly the direct full version download link from MS no longer works, it immediately tries to connect to Windows Update – if I was able to connect to update I could just use the “add feature” option!
    The reason I need an offline installer is that Update is blocked in my environment!
    Stupid MS

  72. In any case we couldn’t to install even via Server Manager from file dotnetfx35.exe of signed by MS at Jul.03.2021 (Pic.1; Pic.2). After it on our Windows XP we’ve unpacked dotnetfx35.exe by WinRAR v.5.70 archivier to new folder. Then we’ve copied from DVDROMWS2019 a cab file to this folder, because we haven’t DVD drive on server. (Pic.3). Then this folder has been placed on the C:\ of server, and the path “C:\dotNetFramework35” has been inserted to the Server Manager. Only then already all ok. (Pic.4) Links on screenshots – Pic.1 – Pic.2 – Pic.3 – Pic.4 –

  73. Surprised this has been up for over a year and you haven’t fixed your mistake:

    dism /online /enable-feature /featurename:NetFX3 /all /Source:d:sourcessxs /LimitAccess will not work.

    dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess is what you need to make it work.


Please enter your comment!
Please enter your name here