<p>1, Create and build a default Windows Forms project and look at the project properties. It says that the project is targetting .NET Framework 2.0. </p>

<p>2, Create a Setup project that installs just the single executable from the Windows Forms project. </p>

<p>3, Run that installer and it always says that it needs to install .NET 3.5 SP1 on the machine. But it obviously only really needs 2.0 and so I do not want customers to be forced to install .NET 3.5 when they do not need it. They might already have 2.0 installed and so forcing the upgrade is not desirable!</p>

<p>I have looked at the prerequisites of the setup project and checked the .NET Framework 2.0 entry and all the rest are unchecked. So I cannot find any reason for this strange runtime requirement. Anybody know how to resolve this one?</p>

Even if you are targetting a 2.0 deployment, some of your assemblies might require 3.5.  For instance, LINQ requires 3.0.  This should, however, be reflected when you build.  Check each assembly to ensure that it's 2.0 compatible.  You don't want any 3.5 things sneaking in.  If this is the case, my guess would be a 3rd party control library with support for WPF.