Application structure
Sitecore Host applications follow simple file and directory conventions. These conventions enable users to identify which files belong to the application (that the user should not modify directly) and which files are provided for the user (that the user can modify). The conventions also make it clear which files are used in different environments (for example, Production, Staging, and Development).
Root folder
The root folder defines the basic folder structure for a Sitecore Host application:
SitecoreHostApplication (Root)
├── *.dll
├── sitecorehost.xml
└── sitecorehost.<env>.xml
-
All code libraries (
*.dlls
) are at the root of the application. -
(Optional) Next to the libraries is the
sitecorehost.xml
configuration file. This file controls configuration for Sitecore Host itself (not the application which runs on top of it). -
(Optional) One or more environment-specific configuration files (for example,
sitecorehost.production.xml
orsitecorehost.development.xml
) can be present. These files add to or override settings insitecorehost.xml
with configuration used when the application is run in the mode for that environment.
Additional folders and files that are specific to the .NET run-time environment can also be present. They are not shown here for the sake of keeping the diagram simple.
Application assets
A Sitecore Host application can provide other core assets such as configuration files, content, MVC views, or other physical files. When added to the application these folders are also be available under the root folder:
SitecoreHostApplication (Root)
├── content/
│ ├── js/
│ │ └── *.js
│ └── style/
│ └── *.css
├── config/
│ ├── config.xml
│ └── <env>
└── views/
└── home/
└──*.cshtml
The folders contain the following application assets:
-
content
- Any physical files that the application can serve. -
config
- Any configuration files the application needs. -
views
- Any MVC views the application uses. -
(Optional) - Any other folders the application developer has added.
Configuration environment folders
Sitecore loads configuration files in the config
folder by name and in ascending alphabetic order. If Sitecore finds a folder with the same name as the current environment, it uses configuration files in this folder to patch the configuration files in the root of the config
folder.
The Sitecore folder
A Sitecore Host application can reference one or more plugin libraries. Plugin libraries are added to the root of the application next to other dependent libraries. Additional assets provided by the plugin library are in the sitecorefolder
in the root of the application:
SitecoreHostApplication (Root)
└── sitecore/
├── Plugin.Alpha/
│ ├── sitecore.plugin.manifest
│ ├── content/
│ └── config/
│ └── <env>
└── Plugin.Beta/
├── sitecore.plugin.manifest
├── content/
└── config/
└── <env>
Plugins have the following characteristics:
-
Each plugin has a unique folder.
-
Each plugin folder always contains at least the
sitecore.plugin.manifest
file. -
All other folders under the plugin folder are optional and mirror the functionality of the Sitecore Host assets model.
The SitecoreRuntime folder
The SitecoreRuntime
folder is a special folder that a consumer of a Sitecore Host application uses to extend or modify the application.
Each immediate child folder in this folder represents a specific runtime environment (Production, Development, and so on):
SitecoreHostApplication (Root)
└── sitecoreruntime/
└── <env>/
├── *.dll
├── sitecorehost.xml
├── content/
├── config/
└── sitecore/
└── Plugin.B/
├── sitecore.plugin.manifest
├── content/
└── config/
└── <env>
The SitecoreRuntime
folder has the following characteristics:
-
Each folder acts as a store for an environment.
-
The base structure mimics that of the main Host application.
-
Sitecore loads the libraries in the folder at runtime.
-
the optional core content to patch and override other optional content.
-
If the folder contains a
sitecorehost.xml
file, Sitecore patches this after thesitecorehost.*
files in the root of the host application, and ignores othersitecorehost.*
files in the runtime folder. -
Environment folders do not support their own
SitecoreRuntime
folders.
The SitecoreRuntime
folder is also where you place your Sitecore license file to enable your Sitecore Host application to run.