Orchard 的项目结构-解决方案文件夹的原理与使用

Orchard 是一个庞大、复杂的 CMS 系统,初学的时候,首先看到的就是项目复杂的结构。

Orchard 使用解决方案文件夹来组织多个项目。

1. 解决方案文件夹

下面我们通过一个例子来看一看解决方案文件夹的使用。

在 VS 2012 中创建一个新的控制台项目,在项目名称中,输入 MyProject, 在解决方案名称中,为解决方案提供的名字为 MySolution.

Orchard 的项目结构-解决方案文件夹的原理与使用_第1张图片

创建项目之后,可以在解决方案浏览器中,得到如下的结构。

Orchard 的项目结构-解决方案文件夹的原理与使用_第2张图片

在解决方案 MySolution 上点击鼠标的右键,找到 Open Folder in File Explorer , 在文件浏览器中打开文件夹。如下所示。

Orchard 的项目结构-解决方案文件夹的原理与使用_第3张图片

则会看到解决方案文件 MySolution.sln,

Orchard 的项目结构-解决方案文件夹的原理与使用_第4张图片

使用记事本打开它,应该看到如下的内容。

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 新建解决方案文件夹.

Orchard 的项目结构-解决方案文件夹的原理与使用_第5张图片

输入名称 Modules,创建之后的解决方案浏览器如下所示。

Orchard 的项目结构-解决方案文件夹的原理与使用_第6张图片

关闭解决方案,此时会看到提示对话框。

Orchard 的项目结构-解决方案文件夹的原理与使用_第7张图片

保存后,重新使用记事本打开 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 项目,只是没有对应的项目文件了。

利用解决方案文件夹,我们可以组织解决方案中的项目。

2. 在其它项目的目录下创建新项目

通常我们的项目目录是彼此独立的,但是,也可以在一个项目的文件夹下创建新的项目。

在解决方案上点击鼠标的右键,增加一个新的类库项目,注意将项目的保存位置修改到原来的 MyProject 项目文件夹下,项目的名称设置为 MyClassLibrary

Orchard 的项目结构-解决方案文件夹的原理与使用_第8张图片

此时,在解决方案文件夹中两个项目是并列的,但是,MyClassLibrary 项目保存在 MyProject 文件夹中。

Orchard 的项目结构-解决方案文件夹的原理与使用_第9张图片

在文件系统中,保存的形式如下。

Orchard 的项目结构-解决方案文件夹的原理与使用_第10张图片

3. 使用解决方案文件夹组织项目

可以直接将项目 MyClassLibrary 拖动到解决方案文件夹  Modules 中,如下所示。

Orchard 的项目结构-解决方案文件夹的原理与使用_第11张图片

4. 添加项目引用

可以象平常一样在 MyProject 项目上添加项目引用,并使用类库中定义的类型。

Orchard 的项目结构-解决方案文件夹的原理与使用_第12张图片

将 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();
        }
    }
}

你可能感兴趣的:(char)