When users create a new project in the app generator using release 18.104.22.168 and later, the project type will now be App Factory.
App Factory projects will create an ASP.NET-hosted web site project, deployable to any server running Microsoft Internet Information Services (IIS).
Developers can also enable App Factory integration with DotNetNuke and SharePoint.
App Factory project folder directory root contains metadata files required by the app generator, as well as the Visual Studio solution file. An “app” folder contains the generated code required to run the server.
Note that projects created before release 22.214.171.124 will use the “WebSite” folder name instead.
The app folder contains a set of resources required for the application to function. The App_Code folder contains the application framework. Upon running the application, the code in that folder is automatically compiled and executed.
All styling is stored under ~/css folder. All client-side scripts are stored under ~/js folder. Standard styling and script files are read by the framework, joined together, and streamed to the client (native app or web browser). The “_ignore.txt” file located in the two directories enumerates which non-standard files and directories are included in the output.
App Factory (Advanced)
An additional checkbox is now present on the New Project screen – “Implement application framework as class library (for experienced users only).”
When this option is enabled, the application framework code is placed in a separate class library project, named after the project’s namespace.
The developer must have an instance of Visual Studio 2010, 2012, 2013, 2015, or 2017 installed on the development computer in order for the application to run. At compile-time, the Microsoft Visual Studio compiler must compile and package the application source code stored in the namespace folder into a *.dll file under the app folder. Only then will hosting software (Microsoft IIS) will be able to run the application.
App Factory (Advanced) projects store standard CSS and JS files under the class library. Upon compilation, these files are saved as embedded resources and read from the class manifest.
Custom CSS files can be placed under a “css” folder under the “app” directory. Custom JS files can be placed under the “js” folder under the “app” directory. The framework will read any files in those directories and not excluded by the “_ignore.txt” file, and stream them with every page request.
Pros of App Factory (Advanced)
- Application source code is stored in a re-usable class library.
- Hosting provider or customer is unable to view or edit the application source code.
- Developer can only modify code during debugging if solution platform is switched to x86.
Cons of App Factory (Advanced)
- Microsoft Visual Studio is required.
- Application takes longer to generate and compile.
- Developer cannot modify code files while application is running.
Old Project Types
A number of project types have been deprecated or disabled:
- Web Site Factory – renamed to App Factory.
- Web App Factory – renamed to App Factory (Advanced).
- Mobile Factory – a variant of Web Site Factory with Classic disabled. Deprecated. Use App Factory with User Interface set to “Touch UI” instead.
- DotNetNuke Factory – a variant of Web App Factory designed to work as a DNN module in DNN 7 and below. Deprecated. Use App Factory with DotNetNuke Connector instead.
- SharePoint Factory – a variant of Web App Factory designed to work as a SharePoint extension in SP 2010. Deprecated. Use App Factory with SharePoint Add-in instead.