Sitecore项目的最佳实践

时间:2010-01-27 10:00:09

标签: project sitecore

我对Sitecore很陌生,想了解更多关于新项目的常规方法。因此,我愿意倾听并尝试一些经验丰富的Sitecore开发人员解决方案。我有很多问题,我不会问他们所有问题。我对其他人的做法非常好奇。

启动Sitecore项目的最佳方法是什么? 你会如何设置你的项目? 您将如何看待未来项目中的代码回收?

简而言之:您有什么经验(如果您曾与Sitecore项目合作或正在开展工作),您会如何推荐其他人使用Sitecore。

目前我们正在忙于构建Sitecore块,我们可以在其他项目中回收,但我知道肯定有1001个方便的提示和技巧。我希望我们有一些Sitecore pro的@ stackoverflow可能有所帮助。

4 个答案:

答案 0 :(得分:9)

以下是一些基于我们工作方式的常规设置信息。

<强>的Subversion 这不是特定于Sitecore的,但我们像这样设置我们的存储库

  • 分支机构 - 用于处理可能需要一段时间的网站重大更新。比方说,我想更新网站上所有侧边栏的工作方式,这需要几周的时间才能完成。我们要做的是创建一个新的分支,并为这个dev分支设置另一个sitecore实例,并做我们需要做的事情。完成后,我们将其合并回主干进行测试和部署。
  • 标记 - 这用于保存永远不会合并回主干的代码副本(这是分支和分支之间的区别),例如当我们部署更新到我们可以创建一个代码的标记,以便我们可以在必要时返回它。
  • trunk - 活动代码,此处签入的任何内容都应始终可以部署。

主干 这是我们积极开发/修复错误的地方,具体取决于我们所在项目的哪个部分。我们设置了这样的东西(作为一个例子,项目被称为TheProject)

我们将解决方案文件保存在此文件夹的根目录下,这将引用src文件夹中的各种库以及网站文件夹中的Web项目。

  • docs - 放置网站文档的地方。我强烈建议您在完成功能/部分时,写一些关于它工作所需的特殊知识的指南。所以说我正在着陆页上的特色内容框上工作。除非明确覆盖,否则此框将自动提取一些内容。当我完成这样的事情时,我所做的是使用大量的屏幕截图为客户编写指南。我将指南发送给客户,并将其放在docs文件夹中。这既有助于客户培训他们的员工,也可以帮助新开发人员快速完成工作。
  • lib - 这是我们保留在项目中需要引用的任何DLL的地方。
  • 测试 - 进行单元测试的地方。
  • src - 这是我们保留项目特定库代码的地方。所以在这里我们将有一个名为TheProject.Library的文件夹,并且会有一个用于所述的visual studio项目
  • 网站/网站 - 这是我们安装Sitecore的地方,也是网站的根目录。在这里,我们有一个名为TheProject.Web的项目。在项目中,我们添加了所有常规内容,如web.config / layouts文件夹等。

常规Sitecore代码库 您可以做的最好的事情是从一开始就设置一个可随时间添加的通用Sitecore库。然后,当您为不仅适用于项目的项目编写任何代码时,可以将其添加到那里。这似乎是显而易见的,但从长远来看,这确实会有所帮助。您最终会获得更加可靠的代码,请参阅link text

因此,当我们完成所有这些工作后,我们就会有这样的解决方案/项目结构

TheProject(解决方案)

  • TheProject.Library
  • TheProject.Web
  • MyCompany.SitecoreLibrary(我们的常规sitecore库)

工具 这是另一个普遍的事情,但我发现它确实可以帮助加速Sitecore开发。如果您发现自己在Sitecore中反复做一些事情,使用API​​编写一个工具来为您完成。这不仅有助于解决您正在处理的任何问题,还有助于您更熟悉API。

<强> ReSharper的 这是一个通用的.NET开发建议,使用Resharper(http://www.jetbrains.com/resharper/index.html)。我是一个Resharper粉丝男孩,它使开发更容易,更快速地制作了很多东西。在我看来,最大的优势在于重构代码是多么容易,随着时间的推移,保持清洁和易懂是非常重要的。

我希望其中一些有帮助。

加布

答案 1 :(得分:8)

正如你所说,这是一个很大的问题。以下是我的一些想法:

开发环境

首先,当我开始一个新项目时,我在我的开发环境中安装Sitecore,并确保一切正常。在安装期间或在将数据库放在单独的SQL服务器上并相应地更改连接字符串之后。

我打开Visual Studio并创建一个解决方案并包含所需的文件。我创建了一些HelloWorld渲染并尝试构建解决方案,以便我可以验证一切正常。

当一切正常并且正在运行时,我创建了整个解决方案的zip文件,包括数据文件夹。现在是时候将它添加到某种版本控制系统中,在我的例子中是Subversion。

我将zip文件添加到subversion中,并添加我认为在项目期间会更改的所有文件,通常我告诉subversion忽略sitecore文件夹,这会在检入文件时大大提高性能。

执行提交操作后,我的项目的其他团队成员可以检查代码并开始开发(解压缩zip文件后,非正式)

我们都朝着同一个数据库工作,虽然这违反了Sitecore的建议,但我们没有遇到任何问题,但是由一个开发人员创建/更改的GUI中的项目需要一些时间才能为所有其他人创建/更改。< / p>

我们可以使用相同的Sitecore安装来开发几个不同的项目,但由于几乎所有客户都使用不同版本的Sitecore,我们发现这种方法有点麻烦。

我们经常设置一个自动构建服务器,但这是另一个问题。

可重复使用的代码和效果图

我想说我们根据在项目之间重用的相同代码库创建整洁的包,但不幸的是我们还没有。今天,解决方案之间存在很多削减和粘贴。

将代码上传到客户

这是通过sitecore软件包完成的,通常会对要包含的文件进行某种动态选择,比如说特定文件夹中的所有ascx文件都会在过去5天内发生更改。

你有它。

答案 2 :(得分:3)

看看this series

特别是组件架构部分提高了我们的可重用性。

答案 3 :(得分:1)

当您在Sitecore的Web根文件夹中创建Visual Studio的项目并且您将所有Sitecore的dll文件保存在bin目录中时,不要忘记向项目的引用添加所有这些文件:

bin\ComponentArt.Web.UI.dll
bin\HtmlAgilityPack.dll
bin\ITHit.WebDAV.Server.dll
bin\Lucene.Net.dll
bin\Mvp.Xml.dll
bin\Newtonsoft.Json.dll
bin\RadEditor.Net2.dll
bin\Sitecore.Kernel.dll
bin\Sitecore.Logging.dll
bin\Sitecore.NVelocity.dll
bin\Sitecore.Zip.dll

因为当您清理项目并且只引用Sitecore.Kernel.dll(在大多数情况下)时,您将从bin目录丢失大部分dll !!