I wrote a VB.net dll that is referenced by an Access 2003 application, and the application needs to run on Windows XP computers. I'm currently in the process of deploying a Windows Server 2008 R2 Server that will service about 20 thin clients. What version of .net framework should I select as the target framework for the VB.net dll, what version should I install on the Windows XP clients, and what version should I install on the Windows Server 2008 R2 server? Is version 4.0 that latest version that will run on Windows XP? Will the application run on the Windows Server 2008 R2 Server if the Server has 4.6 but the .dll is targeted for version 4.0 (i.e. Are all the versions backwards compatible)? Also, why does version 4.5.2 seem to be more popular than 4.6 (the VB app defaulted to this version even though it's not the latest, and it seems to be the most downloaded version)?