To expand upon Cathal's comments, I should make clear what changes have been made.
We have taken an approach similar to what we did with our support of .NET 3.5 (prior to DNN 5.2 which required .NET 3.5).
- DNN 5.4 will install if you are running with an Application Pool that is configured for use with .NET 4. One of the core modules was removed from the distribution as it had issues with .NET 4 (Gallery). The module team have fixed the issue and it is available in beta form from codeplex so it will probably be repackaged into the distribution for 5.4.1
- DNN 5.4 will continue to install and run in .NET 3.5 SP1 as before
- If you are running DNN 5.4 on ASP.NET 3.5 SP1 and you switch to an Application Pool that is configured for .NET 4.0 DNN will detect the change in Framework version and make some minor changes to web.config.
- If you are running DNN 5.4 on ASP.NET 4 and switch to an Application Pool running .NET 3.5 you will get a YSOD (Yellow screen of death with an error message. If you undo (manually) the changes made to web.config the error will go away.
There are a few things to note about ASP.NET 4 and the changes we did to allow us to support both versions of .NET.
Browser Files - ASP.NET 4 ships with a different core set of browser files - since 5.3 we have included an extra browser file (Netpatch.browser) which includes the neccessary pieces from the .NET 2.0 browser files (that are missing in .NET 4)
Control Rendering - Image controls in .NET 2.0 are automatically rendered with a style attribute - style="border:0". In .NET 4.0 this attribute is not rendered by default. Images inside hyperlinks are automatically rendered with a border by the browser, unless over-ridden by css, so to solve this we have added a default style in default.css for images that includes the border:0 style for all <img> tags. This allows images to be displayed correctly in both versions.
System.Web.Extensions - we have removed the System.Web.Extensions configuartion section (as this is now defined at the machine level)
Version Detection - we now detect version 4.0 and display it correctly in Host Settings
Malformed HTML - .NET 4.0 is much less forgiving than .NET 3.5 if html (in ascx controls) is malformed - eg style="width:0"" - note the double quotes. We have cleaned up core ascx files but 3rd party modules may have issues.
Request Validation - .NET 4.0 is stricter with validation of form data sent back to the server, so we have modifed web.config to set request validation to work in 2.0 mode.