In this simple post, I want to share a quick tip with Visual Studio. You probably encountered this problem before: you are designing an ASPX or ASCX form in Visual Studio and then for some reason an element you just added in the ASPX/ASCX is not available in the code behind.
If you are lucky you know exactly what you changed in the page to cause this problem and you fix it. However, if you’re opening a file that hasn’t been worked on in a long time (maybe someone else did the most recent modification), it becomes difficult to know what exactly cause the .designer.cs automatic generation fail. There are a few common scenarios for this such as invalid HTML, missing or duplicate declarations, or unresolved references. Finding the core issue by hand is difficult because the designer does not let you know what the specific issue is.
To regenerate the .designer.cs file for a ASPX/ASCX, first delete the .designer.cs file, then right click on the ASPX/ASCX and click “Convert to Web Application”. This will probably give you an error message that will help you find the root of the problem. I noticed that there’s a difference in the error message you might get here versus when the file is opened in Design mode in Visual Studio.
For example, we had a .ASCX file where the .designer.cs file was not being generated when we modified it. We could not figure out what the error was until we discovered this tip because Visual Studio did not give us any feedback. Once I deleted the .designer.cs and ran “Convert to Web Application” on the file, I was prompted with an error message that informed me that we had a <%@ Register /> declaration in our ASCX that was also declared in our web.config file (and this was creating a conflict even if they both pointed to the same location). Visual Studio could benefit from better error reporting for this particular scenario.