"Build-Complete" is a baseline verifiable state for upgraded code. For your ASP site it means the following:
- Each ASP/ASA script is upgraded to a System.Web.UI.Page organized into two files: a markup file (.aspx) and a code-behind (.aspx.cs) file.
- Each Include file is upgraded to a System.Web.UI.Control organized into two files: a markup file (ascx) and a code-behind (ascx.cs) file. If an include contains a VBScript class (e.g., ..\Includes\Entity\Service.asp), it becomes a code class. All markup is for the most part preserved and all VBScript becomes C#. Declarations are moved to the code-behind files. The #include references become custom tags, for example:
<%@ Register TagPrefix="inc" TagName="Optix_includes_routines" Src="../includes/routines.ascx" %>
...
<inc:Optix_includes_routines ID="_routines1" runat="server" />
We also generate a default web.config and a web application project file (e.g. sample.csproj) that integrates all the files.
3. References to external APIs (i.e., COM APIs such as ADODB) are replaced by references to a stubbed-out COM framework based on needs of the application code. The tool also generates this stubbed COM framework and integrates it with the web application. We also generate a stub class called MigrationSupport.cs that contains stub functions for VBScript operations that are semantically different than the corresponding functions in C#.
"Build-Complete" means that the web application project file can be processed to an assembly without fatal errors when you compile it using the C# compiler (CSC.EXE) and the ASPNET Page Compiler (ASPNET_Compiler.exe). It is a verification that all of the code, in both the code-behind and markup files, is well-formed and internally consistent. This also includes an extensive amount of type inference to make the code more strongly typed. The build can be initiated either using Visual Studio or MSBuild.
"Build-Complete" is only a starting point. At a minimum, the upgrade solution should be enhanced to replace references to stubs with references to .NET classes that actually provide the services needed by the application. Additional technical changes may be made by hand or by tool, as desired.