Orchard 是一个庞大、复杂的 CMS 系统,初学的时候,首先看到的就是项目复杂的结构。
Orchard 使用解决方案文件夹来组织多个项目。
下面我们通过一个例子来看一看解决方案文件夹的使用。
在 VS 2012 中创建一个新的控制台项目,在项目名称中,输入 MyProject, 在解决方案名称中,为解决方案提供的名字为 MySolution.
创建项目之后,可以在解决方案浏览器中,得到如下的结构。
在解决方案 MySolution 上点击鼠标的右键,找到 Open Folder in File Explorer , 在文件浏览器中打开文件夹。如下所示。
则会看到解决方案文件 MySolution.sln,
使用记事本打开它,应该看到如下的内容。
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyProject", "MyProject\MyProject.csproj", "{F9ABD982-2ACB-479E-8B29-7D1B8743EA72}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Debug|Any CPU.Build.0 = Debug|Any CPU {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Release|Any CPU.ActiveCfg = Release|Any CPU {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal
注意,Project 和 EndProject 就是包含在解决方案中的项目。
回到 VS2012,在解决方案上点击鼠标右键,选择 Add 添加, New Solution Folder 新建解决方案文件夹.
输入名称 Modules,创建之后的解决方案浏览器如下所示。
关闭解决方案,此时会看到提示对话框。
保存后,重新使用记事本打开 MySolution.sln 可以看到内容变成如下所示。
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyProject", "MyProject\MyProject.csproj", "{F9ABD982-2ACB-479E-8B29-7D1B8743EA72}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{D06B284B-59F9-40D1-8B83-57A80943F617}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Debug|Any CPU.Build.0 = Debug|Any CPU {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Release|Any CPU.ActiveCfg = Release|Any CPU {F9ABD982-2ACB-479E-8B29-7D1B8743EA72}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal
会看到在解决方案文件中增加一个 Project 项目,只是没有对应的项目文件了。
利用解决方案文件夹,我们可以组织解决方案中的项目。
通常我们的项目目录是彼此独立的,但是,也可以在一个项目的文件夹下创建新的项目。
在解决方案上点击鼠标的右键,增加一个新的类库项目,注意将项目的保存位置修改到原来的 MyProject 项目文件夹下,项目的名称设置为 MyClassLibrary
此时,在解决方案文件夹中两个项目是并列的,但是,MyClassLibrary 项目保存在 MyProject 文件夹中。
在文件系统中,保存的形式如下。
可以直接将项目 MyClassLibrary 拖动到解决方案文件夹 Modules 中,如下所示。
可以象平常一样在 MyProject 项目上添加项目引用,并使用类库中定义的类型。
将 Class1.cs 修改为如下的代码,就可以在主程序中调用了。
using System; namespace MyClassLibrary { public class Class1 { public void HelloWorld() { Console.WriteLine("Hello, world."); } } }
将主程序修改为如下代码,就可以验证一下了。
namespace MyProject { class Program { static void Main(string[] args) { MyClassLibrary.Class1 instance = new MyClassLibrary.Class1(); instance.HelloWorld(); } } }