The modules \ orchard. rolesroles module provides the function of assigning roles to users. It also provides a function to set default roles to define permission sets for other modules. The modules \ orchard. scriptingscripting module can be used to execute a simple script language. The modules \ orchard. Scripting. dlrscripting. DLR module provides a function for executing the DLR script language. The modules \ orchard. searchsearch module manages search indexes and provides interfaces for users to query orchard sites. The modules \ orchard. setupsetup module provides the function of initializing and installing the orchard application. This module is automatically disabled after installation is complete. The modules \ orchard. tagstags module provides the ability to manage and present all content tags. The modules \ orchard. themesthemes module provides a management interface for setting the orchard application topic. The modules \ orchard. usersusers module provides the user management function. The modules \ orchard. warmupwarmup module provides a function to generate static Web pages during application initialization. The modules \ orchard. widgetswidgets module provides the management interface for adding orchard widgets to the page. The modules \ tinymcetinymce module provides the Rich Text Editor function. The specsspecs folder contains the following items: orchard. Profile: displays the website running status and performance. Orchard. Specs: includes the specflow style for integration testing. The specific function information is contained in the *. Feature file. The teststests folder contains the following items: orchard. Core. tests: A test project that tests the core functions of orchard. Orchard. Framework. tests: A test project that tests the orchard framework. Orchard. Tests. modules: A test item used to test the orchard module. The subdirectories below correspond to different orchard modules. Orchard. Web. tests: A test project for testing the orchard website. The themesthemes folder contains the orchard topic project. You can add a new topic in this project. Different topics correspond to different subdirectories. The toolstools folder contains the tool source for compiling the orchard solution. Code . It also contains the command line tool of the orchard project. You can use it to run some commands defined in orchard to automatically execute management tasks. Orchard. coreorchard core function projects include the core modules and content types in orchard, such as feeds components, theme components, navigation components, general components, routing components, and content text components. The orchard. frameworkorchard framework project contains various class libraries used by orchard. Such as cache, set, command, content management, and data access. It also contains a large number of interface definitions and attribute definitions. Orchard. weborchard. Web project is an MVC application project. This is the project that your application actually runs. It is the startup project of the entire solution. It contains the Assembly file of the core platform of the orchard CMS system and is an orchard Host application. Other annotations for the orchard. Web project must be used as the startup project of the entire project (for example, when you use the vs debugging function ). Orchard. Web dynamically loads all orchard modules and discovers module extensions (MVC routing, management pages, etc ). Projects under the modules folder are under the Physical folder "ochard. web \ modules. These modules can contain ASP. NET views (. aspx,. ascx and other files) and static content. The module referenced by the orchard. Web project automatically copies the Assembly file to the bin directory during compilation. Orchard. The web does not depend on module components. This is because when the orchard. Web project runs, it does not know which modules will be dynamically loaded. The project in the modules folder references the orchard project, which allows the orchard module to access the orchard service. This section describes how to create a core module. The first question is: why is it the module of the core module? This is because it is identified at the design orchard stage as the core framework necessary to expand other modules. For example, the common module introduces bodyaspect (content author ). A core concept is that the common module can be used for many other content types, such as blog articles and pages. It can be implemented in the orchard framework DLL so that all modules depend on it. However, this will not benefit from being a module, such as attaching a processor, a drive, a view, or a route. This is also related to the ASP. net mvc region. A region must be in a folder. It is a correct idea to separate the core modules from the framework layer and separate them into a separate DLL. This is similar to a non-monolithic operating system. Implement core functions in one place, implement system modules in another place, and provide a large number of interfaces to expand more advanced modules. The second question is: why is it the core module of the core module. When implemented as a core module, it can be permanently used by other modules. For example, comment module. (The comment module is not a core module. It can be regarded as a basic module.) the problem to be addressed is dependency. In orchard, modules can be disabled and uninstalled under the modules directory, or updated through other channels. The orchard module should avoid dependency on other modules as much as possible, and define types through content components in the background as much as possible. Pages and blog posts belong to pages and blogs modules, and do not reference comments and tag modules. However, they may have added comments or tag functions to pages and blog posts. This separation behavior is implemented by the underlying content type Architecture, rather than directly referenced between other modules. However, the core module is part of the orchard framework and can be depended on by all modules. The core module will be released by the orchard development team and be part of the orchard framework. Other modules can depend on them and directly access their public appearances.
Reference document official website code structure Original: http://www.orchardproject.net/docs/Source-code-organization.ashx