【问题标题】:Setting up an Orchard project from scratch to work in a TEAM and with different environment settings从头开始设置 Orchard 项目以在 TEAM 中工作并使用不同的环境设置
【发布时间】:2015-08-26 13:58:02
【问题描述】:

我需要创建一个新的 Orchard 项目来在团队中工作,但我发现自己迷失了方向。我现在的主要问题是:

  1. 如何根据部署环境(本地、开发、生产)拥有三个不同的 SQL 连接字符串
  2. 一旦我们在本地获得了我们满意的内容定义和内容,我们如何将其迁移到开发或生产?您如何控制数据库的版本
  3. 这是好路吗?:我们愿意使用 VisualStudio 而不是 WebMatrix,因为最终我们将不得不创建自己的模块,并且 Lombiq 的所有教程都使用 VS。 我创建了一个名为 Orchard.SourceCode 的分支,其中包含 1.9.1-v 源代码和一个开发分支。每次 Orchard 发布新版本时,我都会将 Orchard.SourceCode 中的文件替换为新版本代码,提交并合并到 Development。

我已经在 Google 上搜索过了,但如果你发现了一些我可能错过的真正有用的链接,请不要犹豫分享。

注意:我们使用 Mercurial 作为 CVS

【问题讨论】:

  • 除了您已经得到答案的要点之外,我建议您创建一个单独的 *.sln 文件,其中仅包含最必要的模块和 cspoj,并将模块依赖项替换为库依赖项。这可以加快您在 Visual Studio 中的工作。

标签: orchardcms orchard-modules


【解决方案1】:
  1. 您应该在每台机器(本地、生产、开发 1、开发 2)上在 Orchard.Web\App_Data\Sites、Orchard.Web\App_Data\RecipeQueue、Orchard.Web\App_Data\Logs 文件夹中拥有自己的文件, src\Orchard.Web\Media\ 所以这些文件夹不应该在存储库中。因为正如@NetWave 解释的那样,连接字符串和其他本地数据都在那里。

  2. 建议您尽可能使用导入-导出功能来导入-导出配方。另一种选择是使用迁移机制Orchard Data Access Layer。关键是,如果您不需要在 db 中为您的自定义部件添加或更改表,您应该使用配方。在我们的例子中,我们有一个模块和一个名为 upgrade-recipe.xml 的配方。在那里,我们添加了所有新内容以添加到下一次升级中。执行升级时,我们会清理该文件。它帮助我们保持我们的迁移文件很小。事实上,对于删除内容项或某个类型的所有内容项等操作,我们已经创建了命令,这些命令也可以从配方中执行。

  3. 对我来说,这个配置没问题。我喜欢将代码放在存储库中,因为有时我修复了 Orchard 错误,我等不及他们接受我的拉取请求。也许您可以使用 Orchard 的源代码作为原始存储库的分支来改进它。这将使您更轻松地向他们发送拉取请求。

【讨论】:

  • 只有一个问题:为什么要将 upgrade-recipe.xml 放在模块中?如果我们有一个包含我们创建的要升级的文件的“升级”文件夹就足够了吗?我们可以通过将文件命名为 2015_08_28_15hh17mm/00_Add_GoogleMaps_Widget.xml 2015_08_28_15hh17mm/01_Enable_Localization_Feature.xml ...
  • 这是个好问题。原因是我想让配方可以从迁移中自动执行。因此,我将代码添加到该模块的迁移中,以便在有要更新的内容时执行它。这是我添加到模块迁移文件中的代码:_recipeManager.TryExecute(_recipeHarvester.HarvestRecipes("PCCom.Plantilla").First(x => x.Name == "Plantilla Update"));
  • 但要小心,从迁移启动配方是 1.9.1 中的一个功能破坏。该修复已在 1.9.x github.com/OrchardCMS/Orchard/pull/5571 中合并,因此将在预计很快发布的 1.9.2 中解决
【解决方案2】:

我总是这样做:

  1. Orchard 源代码使用 Visual Studio 在本地开发我自己的模块。

  2. 我的测试环境的 Azure Orchard 网站。

  3. 可以使用导出/导入模块将内容类型的定义从您的测试环境导出到生产环境。或者您可以通过自己模块中的迁移文件创建自己的内容类型定义。

我不会在您的源代码管理中包含 Orchard 源代码的整个解决方案,而是只包含您正在开发的模块。将 Orchard 更新到新版本后,创建一个新环境。

我希望这会有所帮助。

问候

【讨论】:

    【解决方案3】:

    连接字符串可以在 App_Data\Sites\Default\Settings.txt 中找到。

    我们总是使用 Orchard 的完整源代码在 Visual Studio 中开发新站点。与 Ramon 不同,我们将完整的解决方案存储在 TFS 中。因此,每个站点都有完整源代码的单独副本。有些是 1.8.x,有些是 1.9.x,等等……存储很便宜,对吧? ;)

    拥有一个源代码和一个开发分支是我过去也做过的事情。将源代码更改应用到您的开发分支很容易。当 1.9 分支仍处于开发阶段 (1.x) 时,我已经为它完成了此操作,但我想使用新的布局功能。但大多数情况下,当我们启动一个新站点(例如 1.9.1)时,会选择一个稳定版本的 Orchard,而且源代码几乎没有更新(只有小错误修复)。

    关于数据库...第一次将站点放入 preprod 时,我们只是复制整个数据库。之后,迁移是保持类型同步的最常用方法。导入/导出可用于保持数据同步(但这是我们几乎不使用的东西)。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-07
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      相关资源
      最近更新 更多