【问题标题】:What is the best way to set up your development environment for Sitecore为 Sitecore 设置开发环境的最佳方法是什么
【发布时间】:2023-03-21 23:10:01
【问题描述】:

一般指导似乎是将 Sitecore 安装到一个文件夹中,例如D:\Websites\MyWebSite 然后在单独的文件夹中创建您的 Visual Studio 项目,例如C:\项目\MyWebProject。然后,您可以将自定义代码从 Visual Studio 发布到 Sitecore 文件夹中(该视频解释了我在大约 13 分钟后描述的 https://www.youtube.com/watch?v=i3Mwcphtz4w)。

我有以下问题:-

  1. 人们是否只将他们的 Visual Studio 项目存储在源代码中而不是 Sitecore 代码?
  2. 从 VS 到 Sitecore 文件夹的发布选项仅具有添加文件或删除 VS 项目中不存在的任何内容的选项。如果不手动执行,从 VS 项目中删除的文件怎么会被删除?
  3. 我们使用 web-deploy 将网站发布到临时和实时环境。在这种情况下,您会从您的 VS 项目中发布,还是设置一种方式来发布 Sitecore 文件夹(如果是这样的话)?
  4. 这实际上是一个很好的设置吗?还是你做了一些不同的事情?

【问题讨论】:

    标签: sitecore webdeploy sitecore7


    【解决方案1】:

    几年前我们开始开发 Sitecore 时,我对此进行了大量研究。我记得读过 Sean Kearney 的一篇文章,对我来说很有意义:http://seankearney.com/post/Visual-Studio-Projects-and-Sitecore

    我们最终将这种方法用于大型和小型项目,效果非常好。您还需要查看其他一些工具:

    所以回答你的问题:

    1. 您的所有代码和 部分 Sitecore 项目都存储在源代码管理中。您要采用的方法是仅存储您创建的新 Sitecore 项目(布局、子布局、模板等)以及您可能需要自定义的任何项目。您不需要存储所有的 sitecore 源、内容或模块......只是您需要重新申请以获取最新的新环境。您可以手动进行管理,但 TDS 之类的工具可以让这变得更容易。
    2. 我们使用 TDS 来管理对每个环境的发布/部署。 TDS 具有可配置的设置来处理已删除的项目,包括将其移至 Sitecore 回收站或直接将其删除的能力。你必须小心这个,但它确实有效。
    3. 我们使用单独的构建环境来组装和运行使用 TDS 和 Jenkins 的部署。基本上,所有代码都从源代码控制系统检索到 Sitecore 服务器,并使用 MSBuild 和 TDS 构建。在大多数情况下,我们直接使用 webdeploy 到 Sitecore webroot,但对于生产,我们构建 TDS 包,然后在每个 Content Delivery Server 上运行它们
    4. 到目前为止,我们已将此设置用于 7 个 sitecore 项目,我对它的效果非常满意。我们曾质疑 TDS 是否值得支付许可费,但答案总是肯定的。这种替代方案对我们的开发人员来说不是很有吸引力,而且节省的时间远远超过成本。

    【讨论】:

    • 很好的答案,凯文。蒂姆,补充一点,我想提一下扩展 TDS 构建的能力,特别是删除已从您的 VS 项目中删除的文件。 Pavel Veller 在这里写了一篇博客。 jockstothecore.com/clean-up-after-tds-file-replacement
    • 通过 Sitecore 桌面创建新布局/子布局时会怎样?这样做肯定会在部署的 Web 根目录下创建 .NET 文件(.aspx、.ascx 等),而不是在实际的源项目中。有没有解决这个问题的好方法,或者这些文件是否需要在创建后复制回源解决方案?
    【解决方案2】:
    1. 所有内容都存储在源代码管理中!...只是并不总是与它们驻留在 Web 服务器上的区域相同。将 Sitecore 文件夹存储在源代码管理中是一个好主意,因为在安装模块时会进行一些更改,但您不要将 Sitecore 文件夹添加为解决方案/项目的一部分,如果需要的话,应该可以从中提取而不是被跟踪/监控的东西。

    2. 安装 Sitecore 后,创建一个驻留在网站文件夹中的新项目,并仅添加属性文件夹、布局、xml 和其他您想要的文件夹。我什至没有在我的项目中包含 app_config。哦,需要明确的是,最好将 Sitecore 文件夹作为一种参考文件夹保留在源代码管理中,而不是作为网站主干的一部分。我们将它放在源代码管理中网站文件夹的忽略列表中。但是,话虽如此,请记住,您需要将它放在您的网站文件夹中。

    3. 从技术上讲,推荐的方法是将 Sitecore 作为独立的空实例安装到服务器本身。就像在客户端模式下使用安装程序(不完整),这样您就可以获得空的框架现场到位。然后你可以创建部署包/包/任何东西,这都是你自己的代码。您真的应该永远不必手动更改/删除基本 Sitecore 文件系统。

    4. 见上文。一般来说,除非您有理由这样做:将 Sitecore 安装为一个空实例...然后通过部署管理您的代码/文件,只保留 Sitecore 文件夹文件。在升级之外,您几乎没有理由接触它们或 Sitecore 文件夹本身。

    【讨论】:

    • 您对 2 的回答似乎与视频显示的内容相矛盾。在视频中,具有网站实现的项目不在 IIS 使用的文件夹中,而是在普通用户开发文件夹中。然后使用从 VS 发布代码将代码部署到 IIS 文件夹。还是我误会了什么?
    • 所以如果我在我的生产服务器上正确理解了你的意思,我会使用安装程序安装 Sitecore 以将基本文件放在那里,然后将我的文件从一个单独的项目发布到其中(就像在视频)。假设我已经这样做了,然后在以后我有一些更改删除了一些控件,这些将如何从服务器中删除。我的理解是发布工具可以删除项目中没有的所有内容,但这也会删除 Sitecore 文件。
    • @TimGriffiths,这只会在您的开发环境中成为一个真正的问题。在发布到演示环境或实时环境时,您只会发布您真正想要的材料。并且基于部署的设置提供了始终从干净的 Sitecore 安装开始的可能性 - 只要您将 Sitecore 修改包含在您的实施中(视频中没有介绍)。所以在现实生活中这成为问题的风险很小,视频中的开发方法完全可以消除这种风险。
    【解决方案3】:
    1. 应避免将 Sitecore 本身添加到源代码管理中,因为您不会在实施过程中部署 Sitecore。对于 Sitecore 本身的修改,您需要一种方法来处理您的实现中的那些,但是配置补丁系统和其他机制提供了这种方法。

    2. 网站文件夹中的冗余文件只会在您的开发环境中成为真正的问题。在发布到演示环境或实时环境时,您只会发布您真正想要的材料。并且基于部署的设置提供了始终从干净的 Sitecore 安装开始的可能性 - 只要您将 Sitecore 修改作为您的实施的一部分(视频中没有介绍)。所以在现实生活中这种问题的风险很小,而视频中的开发方法使消除这种风险完全成为可能。

    3. Sitecore 安装应在您的实施部署之外处理。

    4. 这是一个很好的设置,因为视频中的方法是Sitecore推荐用于开发的方法,也是Sitecore在开发课程中教给开发者的方法。这种方法最明显的优点是

      • 将您的网站实施与 Sitecore 安装完全分开。不存在意外损坏 Sitecore 安装的风险,也不存在忘记运行站点所需的对 Sitecore 的非托管手动修改的风险。如果不使用视频中的方法,这种分离是很难实现的。

      • 通过使用发布来部署您的实施,您知道您的实施可以部署在干净的 Sitecore 安装之上 - 并且可以正常工作。这意味着将来部署到生产或演示服务器时,一切都会一样,不会有任何意外。如果您不使用视频中的方法,这很难确定。

      • 要在不同版本的 Sitecore 上测试您的实施,您可以部署到不同版本的全新安装。如果您不使用视频中的方法,这很难测试。

    sample source code for the video on GitHub,以及如何设置开发环境的说明,包括发布部分。此示例源直接和间接地回答了您的一些问题。

    【讨论】:

    • 感谢您的回复。这一切对我来说都很有意义,我只是在理解我的代码更新(例如布局、组件等)在涉及删除文件时是如何发布的。如果我是对的,视频中显示的发布方法只能将文件添加/更新到目标。您可以选择删除不在您的解决方案中的文件,但由于 Sitecore 不在您的解决方案中,这将导致 Sitecore 被删除。
    • @TimGriffiths,这只会在您的开发环境中成为一个真正的问题。在发布到演示环境或实时环境时,您只会发布您真正想要的材料。并且基于部署的设置提供了始终从干净的 Sitecore 安装开始的可能性 - 只要您将 Sitecore 修改作为您的实施的一部分(视频中没有介绍)。所以这在现实生活中成为问题的风险很小,而视频中的开发方法完全可以消除这种风险。
    • @TimGriffiths 删除文件,请参阅我对 Kevin Bechard 上述回答的评论。
    • @SeanHolmesby 这种方法仅在使用 TDS 和通过 TDS 发布时有效。 OP 声明他们“使用网络部署”。
    • @bzlm 是的,这是真的。然后我会说,如果您没有在 Sitecore 构建中使用 TDS(或类似的),那么文件删除是您最不必担心的。话虽如此,我发布的链接只是扩展了 TDS 运行的 MSBuild 步骤。我确信可以通过扩展 VS 的 Web Deploy 来完成类似的事情。
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2018-12-29
    相关资源
    最近更新 更多