The line you're look at is telling you the .NET CLR version that is required to execute the code, not the .NET Framework version. The CLR is the virtual machine runtime that executes the code. The Framework is the class library that supplies the functionality for the thousands of classes you can use in your code. There is nothing in the metadata that specifies the .NET Framework version that is required to run the app. What you see in the manifest is the required .NET CLR version. Under that, you'll see a bunch of .assembly extern references. Each of these imports a namespace, specifying the public key and VERSION NUMBER the loader must bind to. Each reference can have it's own version number seperate from the rest. For example, if you create a blank WPF app targeting .NET Framework 3.5, you see the MSCORLIB is version 2.0, from .NET 2.0, SYSTEM from .NET 2.0, PresentationFramework from .NET 3.0, and WindowBase from .NET 3.0.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008