作为惯例,在开发工作之初,我介绍一下 Orchard 模块开发的软件需求和开发环境的搭建工作中需要注意的点。

软件条件(Software Requirements)

  • 安装下列之一版本或以上的 Windows 电脑: 7 Enterprice、Vista Enterprice、XP Professinal、2003、2008(Windows 7 和 XP 等个人操作系统上的 IIS 服务默认是不开启/安装的,需要您启用或安装);
  • 请安装 .NET 4;(如果您先安装了 .NET 4,再启用/安装 IIS ,则需要一个注册操作
  • 请安装一款独立的数据库引擎(推荐 SQL Server 2008 Express 或企业版),虽然 Orchard 已经内置无需独立引擎的 SQL CE 支持,但我仍推荐您使用受独立的数据库引擎支持的数据库。
  • 请准备 Visual Studio 2008 版或以上版本的 IDE

推荐您安装 Resharper 这件 Visual Studio 插件,不管是一般的开发工作还是基于 Orchard 的开发工作,Reshaprer 都是您提高开发效率很有力的工具,而且随着您真正开始使用 Resharper,您会发现这个工具在 Orchard 开发工作中的重要性。

另外请注意一下操作系统与 IIS 版本的对应情况,要注意这个,是因为各版本加载和运行 ASP.NET 的机制是有区别的,您需要意识到这一点——甚至于会出现由于开发环境(个人操作系统)与部署环境(服务器操作系统)的不一致,我们还需要在最终部署时对项目的配置进行修改。
关于操作系统与 IIS 版本的对应情况,请参考这篇文章;关于不同版本 IIS 上 ASP.NET MVC 的配置,请参考这篇文章

 

下载安装和配置 Orchard 源码版

打开 Orchard 在 Codeplex 上的开源项目页面,在 Downloads 页面,我们可以看到 Orchard 最新的发布版本,选择适合自己的下载一份 Source 版本。我们在后面的讲述中,将以 Orchard 1.5 版本为准,请您自行注意版本的同步问题,除非必要,我将不会在文本内部另外说明,也不会对将来版本的版本异同做预测。

源码下载到本地之后,在 IIS 中为其分配建立一个站点,命名为 Orchard Local;在 Windows XP 电脑上,您可能无法建立站点,这时,您需要使用“默认站点”来做 Orchard 模块开发的实践站点。

添加 Orchard IIS 网站

不推荐使用虚拟目录的方式配置 Orchard 站点,尽管似乎 Orchard 本身是支持的,但由于 Orchard 的运行本身涉及到很多 ASP.NET 项目加载的内核机制,因此试图使用虚拟目录的方式来配置 Orchard 的方式在运行时带来的结果将是不可预料的。
您可能已经知道,在 Visual Studio 中能够直接运行来调试 Web 项目。我不推荐您以这样的方式来调试 Orchard,原因是 Orchard 中存在动态编译机制,而 Visual Studio 内置的开发服务器可能在新的模块重新编译加载时发生意外自动重新启动或者挂起的状况;此外,实际上开发 Mini 服务器与实际的 IIS 运行 Web 项目的结果实际上是有一些区别的。因此强烈建议您将项目部署到 IIS 的真实环境中。

我这里以 IIS 7.5 (Windows 7 上对应的IIS版本)上的情形做示例,您可以按照您的操作系统做类似的操作,按下图所示添加新的 Orchard 开发站点到 IIS 中:

在 IIS 中添加 Orchard 开发站点

创建站点时,需要注意将物理路径指向您放置解压后的源码目录里 Orchard.Web 路径。
一般来说,在 IIS 7.5 中创建新站点的同时,会创建对应的应用程序池,在部署 Orchard 时,请保持这个行为。
添加站点时,注意一下端口和主机名。如果您像我一样希望使用一个很酷的本地主机名(orchard.local15)来访问本地开发 Orchard 项目的网站,请确保您按上图中的情况填写主机名,并将端口写作 80,并配置好 hosts  映射(在 hosts 文件中添加记录 127.0.0.1 orchard.local15);如果您不打算用主机名,那可以将端口设置为非 80 端口(如果您的 IIS 上只有 Orchard 开发项目一个站点,那就可以继续使用 80 端口)。

如果您与我一样使用 IIS 7 或 IIS 7.5,在站点创建之后,我们转到 IIS 的应用程序池节点,找到刚刚自动创建的应用程序池 Orchard Local,确保其.NET 的版本是 4.0,管道模型选择集成模式:

编辑 Orchard IIS 网站应用程序池

这样,我们可以以更高的性能运 Orchard 站点项目。

到这里,我们已经完成 Orchard 源码版本的部署工作。

 

安装 Orchard 开发版的网站

完成部署和配置后,您需要使用 Visual Studio 打开 Orchard 源码项目。方法是,使用管理员权限运行 Visual Studio,使用“文件”-“打开项目”来加载 Orchard 项目。
我推荐总是使用管理员权限打开 Orchard 项目,是因为我们要用于附加到 IIS 调试的功能来调试,它需要管理员权限。在 Windows XP 电脑上,不存在这一选项,只要当前登录电脑的用户是管理员身份,默认的情形就可以。

待加载完成后,我们生成解决方案;待所有项目均已生成成功,我就可以打开浏览器,访问刚才在 IIS 中部署的本地站点。如果您像我一样,在 IIS 站点中配置了特定的主机名,您可以像我这样访问了:

image

问题一:无法识别的属性“targetFramework”。请注意属性名称区分大小写。
原因:未正确设置应用程序池的 .NET 版本号。

问题二:无法加载类型“Orchard.Web.MvcApplication”
原因:未完成生成解决方案的操作。

跟随向导,我们开始安装 Orchard 网站。注意,将数据源选成配置好的独立引擎和已建立好的空数据库。安装成功后,将会自动进入新安装的站点的首页。

 

调试 Orchard 源码

如果您刚才按照我的推荐使用了管理员权限来打开 Orchard 项目,那么现在您就可以跟随我直接调试项目了。当然,如果您没有使用管理员权限打开,请您关闭 Visual Studio 之后,使用管理员权限重新打开项目。
打开“工具”-“附加到进程”菜单(或按 Ctrl + Alt + P 组合快捷键),在弹出的进程列表中,选择正在 host 我们的站点的那个 IIS 工作进程,如果有多个 IIS 工作进程存在,注意区分用户名(我们用于开发的Orchard站点的进程名与刚才创建站点时用的应用程序池的名称是一致的)。双击它,附加。

image

问题:在列表中没有您要找的进程的名字。
原因:未勾选“显示所有用户的进程”;在Windows XP 操作系统中,IIS 工作进程的名字是 Inetinfo.exe(对于进程内应用程序)或 DLLhost.exe(对于进程外应用程序),具体的附加方式,请参考其他资料。

我们可以打开项目的 Orchard.Web 项目中的 Global.ascx.cs 代码的 BeginRequest 的位置 #29 行添加一个断点,并刷新浏览器里的 Orchard 项点的页面,可以发现,断点能够正常命中。

image

 

至此,我们已完成成了 Orchard 模块开发的开发环境的搭建和调试的初步工作。您将看到,这些工作为接下来的开发工作提供了十分重要的保证。