<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Sean Kearney: Sitecore and Stuff</title>
    <description />
    <link>http://seankearney.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.0.0.36</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://seankearney.com/opml.axd</blogChannel:blogRoll>
    <dc:creator>Sean Kearney</dc:creator>
    <dc:title>Sean Kearney: Sitecore and Stuff</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CarkneesBlog" /><feedburner:info uri="carkneesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>Sitecore Descriptive Tree List Field Type</title>
      <description>&lt;p&gt;Have you ever had a TreeList field in Sitecore only to see this when editing an item?&lt;/p&gt;
&lt;p&gt;&lt;img src="http://seankearney.com/image.axd?picture=2012%2f2%2fextendedtreelist_1.PNG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;There is no easy way to tell what is actually selected! Now, sure, you can rename the 1/2/3 items to be more descriptive, but that feels clunky to me.&amp;nbsp;I've seen this a few times in Sitecore solutions we've inherited as well as ones we've created and I felt it was time to resolve this. I feel that a much better way to render a Tree List field would be this:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://seankearney.com/image.axd?picture=2012%2f2%2fextendedtreelist_2.PNG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;There are only three things required to make this happen.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add an item into the core database to define the new field type&lt;/li&gt;
&lt;li&gt;Code for the field type&lt;/li&gt;
&lt;li&gt;A config file to wire it all up&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can grab the source code and standard Sitecore package &lt;a href="http://www.hhogdev.com/~/media/Files/BlogPosts/DescriptiveTreelist.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/CarkneesBlog/~3/HFjjPejAFpA/post.aspx</link>
      <comments>http://seankearney.com/post/sitecore-descriptive-tree-list-field-type.aspx#comment</comments>
      <guid isPermaLink="false">http://seankearney.com/post.aspx?id=d7f921bb-37ba-4dd4-b7cd-0bd196bac2e7</guid>
      <pubDate>Thu, 02 Feb 2012 23:19:00 +0400</pubDate>
      <category>Sitecore</category>
      <dc:publisher>Sean</dc:publisher>
      <pingback:server>http://seankearney.com/pingback.axd</pingback:server>
      <pingback:target>http://seankearney.com/post.aspx?id=d7f921bb-37ba-4dd4-b7cd-0bd196bac2e7</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://seankearney.com/trackback.axd?id=d7f921bb-37ba-4dd4-b7cd-0bd196bac2e7</trackback:ping>
      <wfw:comment>http://seankearney.com/post/sitecore-descriptive-tree-list-field-type.aspx#comment</wfw:comment>
      <wfw:commentRss>http://seankearney.com/syndication.axd?post=d7f921bb-37ba-4dd4-b7cd-0bd196bac2e7</wfw:commentRss>
    <feedburner:origLink>http://seankearney.com/post.aspx?id=d7f921bb-37ba-4dd4-b7cd-0bd196bac2e7</feedburner:origLink></item>
    <item>
      <title>Sitecore Serialization Format</title>
      <description>&lt;p&gt;We, at &lt;a href="http://www.hhogdev.com"&gt;Hedgehog Development&lt;/a&gt;, have been intimately working with Sitecore serialization since it was released with Sitecore 6.0 in 2008. Specifically our interest has been in helping developers bring their Sitecore items into Visual Studio and essentially allow you to treat your Sitecore items as code. We do this with our &lt;a href="http://teamdevelopmentforsitecore.com"&gt;Team Development for Sitecore&lt;/a&gt; product.&lt;/p&gt;
&lt;p&gt;I was having a discussion the other day and was asked to elaborate on the serialization format that Sitecore uses. I figured I would have some notes, or official documentation, on the format, but I couldn't find any! I figured this is a good a place as any to describe the serialization format that Sitecore uses. &lt;/p&gt;
&lt;p&gt;Serialized files are UTF-8 encoded and the first line in a serialized item must be &amp;ldquo;----item----&amp;ldquo;&lt;/p&gt;
&lt;p&gt;Immediately following the item declaration are the properties of the item that are the same regardless of version or language. The properties are:&lt;/p&gt;
&lt;pre&gt;Version: always 1
Id: The Sitecore ID of the item
Database: The database this item came from
Path: The path where the item should be
Parent: The ID of its parent
Name: The name of the item
Master: The branch template used for creation
Template: The ID of the template that this item is based on
TemplateKey: The name of the template
&lt;/pre&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Version is always 1       
&lt;ul&gt;
&lt;li&gt;The path property isn&amp;rsquo;t used for reverting. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Parent ID property is used for placing the item in the tree.&lt;/li&gt;
&lt;li&gt;The Name property is used for naming the item       
&lt;ul&gt;
&lt;li&gt;The TemplateKey isn&amp;rsquo;t used for reverting.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The Template ID property specifies the template to be used.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Immediately following the item properties, but before the first &amp;ldquo;----version----&amp;ldquo; we have any &amp;lsquo;shared&amp;rsquo; fields that may exist. Shared field are special in that the value of a shared field is shared amonst all languages and versions of an item.&lt;/p&gt;
&lt;p&gt;The field serialization format is rather simple. All text values are written to the serialization file exactly as they are stored in Sitecore. In the case of binary fields the data is base-64 encoded. The field definition with a line with &amp;ldquo;----field----&amp;ldquo; and then we have the following properties:&lt;/p&gt;
&lt;pre&gt;Field: The ID of the field
Name: The name of the field
Key: The lowercase name of the field
Content Length: The number of unicode characters in the field value
&lt;/pre&gt;
&lt;p&gt;Immediately following the content length property we have an empty line (\n\n). The subsequent line(s) contains the content of the specified length. Afrter the field value we must have another empty line (\n\n). There then may be any number of empty lines before the next section.&lt;/p&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The name or key properties aren&amp;rsquo;t used with update/revert.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The ID property is used to identify the field for setting the value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once we have defined the shared fields we come into the definition for a specific language and version. This is signified by a &amp;ldquo;----version----&amp;ldquo; line. The version definition simply defines the following properties:&lt;/p&gt;
&lt;pre&gt;Language: The language of the version
Version: The number version
Revision: The ID of the version
&lt;/pre&gt;
&lt;p&gt;Proceeding the version definition is any field definitions specific to that version of the item. Field definitions are repeated until a new version definition, or the end of the file, appears.&lt;/p&gt;
&lt;p&gt;Sample:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: c#;"&gt;----item----
version: 1
id: {BC5CA70D-1567-40D4-B710-8B711D8A399F}
database: master
path: /sitecore/content/Home/Item Name
parent: {110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}
name: Item Name
master: {00000000-0000-0000-0000-000000000000}
template: {A5828170-FFCD-4634-A3A0-525604920993}
templatekey: Sample Template

----field----
field: {35BED290-4531-4518-AE89-86E05455E951}
name: Shared
key: shared
content-length: 21

value of shared field
----field----
field: {44B60993-4B91-4276-A2A7-02DD3AC31DED}
name: UnversionedShared
key: unversionedshared
content-length: 33

value of unversioned shared field
----version----
language: da
version: 1
revision: 19ffb2ef-b370-4e04-94b6-fcca3876a15e

----field----
field: {3E92B1BE-11EA-451A-99BC-34D3B6EB7E41}
name: Field 1
key: field 1
content-length: 38

{872C8B70-8F6E-485D-A054-B6174E62494C}
----version----
language: en
version: 1
revision: 2be76b57-6f0f-471f-900a-266c1a58188a

----field----
field: {3E92B1BE-11EA-451A-99BC-34D3B6EB7E41}
name: Field 1
key: field 1
content-length: 38

{BC5CA70D-1567-40D4-B710-8B711D8A399F}&lt;/pre&gt;</description>
      <link>http://feedproxy.google.com/~r/CarkneesBlog/~3/4BOLdo4Q94c/post.aspx</link>
      <comments>http://seankearney.com/post/Sitecore-Serialization-Format.aspx#comment</comments>
      <guid isPermaLink="false">http://seankearney.com/post.aspx?id=1b9348c2-eae1-4103-9111-391626a0f57e</guid>
      <pubDate>Mon, 31 Oct 2011 20:37:00 +0400</pubDate>
      <category>Sitecore</category>
      <dc:publisher>Sean</dc:publisher>
      <pingback:server>http://seankearney.com/pingback.axd</pingback:server>
      <pingback:target>http://seankearney.com/post.aspx?id=1b9348c2-eae1-4103-9111-391626a0f57e</pingback:target>
      <slash:comments>9</slash:comments>
      <trackback:ping>http://seankearney.com/trackback.axd?id=1b9348c2-eae1-4103-9111-391626a0f57e</trackback:ping>
      <wfw:comment>http://seankearney.com/post/Sitecore-Serialization-Format.aspx#comment</wfw:comment>
      <wfw:commentRss>http://seankearney.com/syndication.axd?post=1b9348c2-eae1-4103-9111-391626a0f57e</wfw:commentRss>
    <feedburner:origLink>http://seankearney.com/post.aspx?id=1b9348c2-eae1-4103-9111-391626a0f57e</feedburner:origLink></item>
    <item>
      <title>Sitecore Rules Engine and RegEx</title>
      <description>&lt;p&gt;I was having some fun with the Sitecore (6.5.0.110818) rules engine over the last couple days. Specifically, I was trying to show content editor warnings as well as control icons for templates based on the name of the item. However the Item name comparison, when using a regular expression, was never evaluating to true. &lt;/p&gt;
&lt;p&gt;Upon inspection of&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;Sitecore.Rules.Conditions.StringOperatorCondition&amp;lt;T&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I noticed that the RegEx call has the parameters flip-flopped! This means that any condition that uses the RegEx String Operator to compare will fail (assuming your regular express isn't exacly the string you are matching). The list of problem conditions is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Item Id&lt;/li&gt;
&lt;li&gt;Item Name&lt;/li&gt;
&lt;li&gt;Item Path&lt;/li&gt;
&lt;li&gt;Language&lt;/li&gt;
&lt;li&gt;Parent Name&lt;/li&gt;
&lt;li&gt;Domain Name&lt;/li&gt;
&lt;li&gt;User Name&lt;/li&gt;
&lt;li&gt;User Profile&lt;/li&gt;
&lt;li&gt;Database Name&lt;/li&gt;
&lt;li&gt;Device Name&lt;/li&gt;
&lt;li&gt;Website Name&lt;/li&gt;
&lt;li&gt;When Field&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Being I was only working with the Item Name condition I re-wrote it as such:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;public class MyItemNameCondition&amp;lt;T&amp;gt; : Sitecore.Rules.Conditions.ItemConditions.ItemNameCondition&amp;lt;T&amp;gt; where T : RuleContext
{
    protected override bool Execute(T ruleContext)
    {
        Assert.ArgumentNotNull(ruleContext, "ruleContext");
        Item item = ruleContext.Item;
        if (item == null)
        {
            return false;
        }
            
        // Sitecore flipped the params in Sitecore.Rules.Conditions.StringOperatorCondition&amp;lt;T&amp;gt;
        // when using regex compare here we switch them back
        if (GetOperator() == StringConditionOperator.MatchesRegularExpression)
        {
            return base.Compare(this.Value ?? string.Empty, item.Name);
        }
        else
        {
            return base.Execute(ruleContext);
        }
    }       
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This works for me, but if I need to use any of those other conditions I would hope to get a hotfix from Sitecore. I did log this bug (DefectId 352659) and hopefully it is addressed soon.&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/CarkneesBlog/~3/e7onHqo_Og4/post.aspx</link>
      <comments>http://seankearney.com/post/Sitecore-Rules-Engine-and-RegEx.aspx#comment</comments>
      <guid isPermaLink="false">http://seankearney.com/post.aspx?id=5a058a6c-cc4b-49e0-a290-9e27dc20c17c</guid>
      <pubDate>Thu, 29 Sep 2011 22:20:00 +0400</pubDate>
      <category>Sitecore</category>
      <dc:publisher>Sean</dc:publisher>
      <pingback:server>http://seankearney.com/pingback.axd</pingback:server>
      <pingback:target>http://seankearney.com/post.aspx?id=5a058a6c-cc4b-49e0-a290-9e27dc20c17c</pingback:target>
      <slash:comments>13</slash:comments>
      <trackback:ping>http://seankearney.com/trackback.axd?id=5a058a6c-cc4b-49e0-a290-9e27dc20c17c</trackback:ping>
      <wfw:comment>http://seankearney.com/post/Sitecore-Rules-Engine-and-RegEx.aspx#comment</wfw:comment>
      <wfw:commentRss>http://seankearney.com/syndication.axd?post=5a058a6c-cc4b-49e0-a290-9e27dc20c17c</wfw:commentRss>
    <feedburner:origLink>http://seankearney.com/post.aspx?id=5a058a6c-cc4b-49e0-a290-9e27dc20c17c</feedburner:origLink></item>
    <item>
      <title>Sitecore Security Report and Reset</title>
      <description>&lt;p&gt;I have a nice assortment of little scripts that I've written over the years to perform various tasks within Sitecore. Based on &lt;a href="http://stackoverflow.com/questions/6614776/viewing-and-clearing-all-user-specific-permissions-in-sitecore"&gt;this Stack Overflow question&lt;/a&gt; I figured I would release one.&lt;/p&gt;
&lt;p&gt;This script will show, and allow you to reset, the __security field on all items in a subtree. The code wasn't written to be pretty; it was written quickly to perform a very specific task.&lt;/p&gt;
&lt;p&gt;To use this, simply drop this aspx file into your webroot and browse to it. Delete when done. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" Debug="true" %&amp;gt;

&amp;lt;%@ Import Namespace="System.Linq" %&amp;gt;
&amp;lt;%-- 
#############################################################
Author: Sean Kearney
Date: 10/04/09
Description: View security set on items
Overview:

#############################################################
--%&amp;gt;

&amp;lt;script runat="server"&amp;gt;
    protected string StartingPath
    {
        get
        {
            return txtStartPath.Text;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnReport_Click(object sender, EventArgs e)
    {
        Execute(false);
    }

    protected void btnDelete_Click(object sender, EventArgs e)
    {
        Execute(true);
    }

    protected void Execute(bool delete)
    {
        if (string.IsNullOrEmpty(StartingPath))
            throw new Exception("Starting Path Not Set");

        Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
        Response.Write("&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type='text/css'&amp;gt;*{font-family:monospace;font-size:10pt;}&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;table border=1&amp;gt;");

        using (new Sitecore.SecurityModel.SecurityDisabler())
        {
            Recurse(master.GetItem(StartingPath), delete);
        }

        Response.Write("&amp;lt;/table&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;");
    }

    private void Recurse(Sitecore.Data.Items.Item item, bool reset)
    {
        foreach (Sitecore.Data.Items.Item child in item.Children)
        {
            if (!string.IsNullOrEmpty(child["__security"]))
            {
                Response.Write("&amp;lt;tr&amp;gt;&amp;lt;td nowrap='nowrap'&amp;gt;" + child.Paths.ContentPath + "&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;" + child["__security"] + "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;");

                if (reset)
                {
                    using (new Sitecore.Data.Items.EditContext(child))
                    {
                        child.Fields["__security"].Reset();
                    }
                }
            }

            // don't dive too deep
            if (item.Paths.ContentPath.Split("/".ToCharArray()).Length &amp;lt;= 5)
                Recurse(child, reset);
        }
    }
    
&amp;lt;/script&amp;gt;

&amp;lt;html&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;
    &amp;lt;fieldset&amp;gt;
        Starting Path
        &amp;lt;asp:TextBox ID="txtStartPath" runat="server" Text="/sitecore/content/home"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;
        &amp;lt;asp:Button ID="btnReport" runat="server" OnClick="btnReport_Click" Text="Run Report" /&amp;gt;
        &amp;lt;asp:Button ID="btnDelete" runat="server" Text="Reset '__security' to standard values" OnClick="btnDelete_Click" /&amp;gt;
    &amp;lt;/fieldset&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;</description>
      <link>http://feedproxy.google.com/~r/CarkneesBlog/~3/nYu9eFx1hws/post.aspx</link>
      <comments>http://seankearney.com/post/Sitecore-Security-Report-and-Reset.aspx#comment</comments>
      <guid isPermaLink="false">http://seankearney.com/post.aspx?id=cc967ef8-f0d5-46dd-91ba-b2c2ec3ddec3</guid>
      <pubDate>Thu, 07 Jul 2011 22:39:00 +0400</pubDate>
      <dc:publisher>Sean</dc:publisher>
      <pingback:server>http://seankearney.com/pingback.axd</pingback:server>
      <pingback:target>http://seankearney.com/post.aspx?id=cc967ef8-f0d5-46dd-91ba-b2c2ec3ddec3</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://seankearney.com/trackback.axd?id=cc967ef8-f0d5-46dd-91ba-b2c2ec3ddec3</trackback:ping>
      <wfw:comment>http://seankearney.com/post/Sitecore-Security-Report-and-Reset.aspx#comment</wfw:comment>
      <wfw:commentRss>http://seankearney.com/syndication.axd?post=cc967ef8-f0d5-46dd-91ba-b2c2ec3ddec3</wfw:commentRss>
    <feedburner:origLink>http://seankearney.com/post.aspx?id=cc967ef8-f0d5-46dd-91ba-b2c2ec3ddec3</feedburner:origLink></item>
    <item>
      <title>Re: Continuous Integration for Sitecore Projects</title>
      <description>&lt;p&gt;&lt;img style="float: right;" src="http://seankearney.com/image.axd?picture=2011%2f6%2fconfused.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;This post is in response to another &lt;a href="http://vasilinenko.blogspot.com/2011/05/coninuous-integration-for-sitecore.html" target="_blank"&gt;blog post by Dmitry Vasilinenko&lt;/a&gt;. I posted this up as a comment, but it was quickly taken down for some reason.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Dmitry,&lt;br /&gt;Continuous Integration (CI), for Sitecore based web sites, has been gaining traction over the past few years particularly amongst solution partners (i.e. &lt;a href="http://www.hhogdev.com"&gt;Hedgehog Development&lt;/a&gt;, Pentia, Inmento, etc...) and I am glad Sitecore is starting to take an interest in it.&lt;br /&gt;&lt;br /&gt;Part of my responsibilities here, at Hedgehog Development, has been to help other Sitecore partners create a proper build/deployment processes including the use of CI for their team. The major hurdle I've seen is the amount of understanding and time required to get a proper process in place. &lt;br /&gt;&lt;br /&gt;You've identified some fundamental concepts of Continuous Integration for any software development project. I also strongly agree that your project and the underlying CMS should be separate! This is &lt;a href="http://seankearney.com/post/Visual-Studio-Projects-and-Sitecore.aspx"&gt;something I've been pushing&lt;/a&gt; for some time now, and I believe is finally gaining support.&lt;br /&gt;&lt;br /&gt;The one aspect of CI with Sitecore that appears to be glossed over though is the Sitecore templates, or Sitecore items in general, and how they are handled. In my opinion, the Sitecore templates (and items) that are created specific for the solution at hand should be treated as code. The C# code you write would be worthless without the items then require. We, at Hedgehog Development, had created the &lt;a href="http://TeamDevelopmentForSitecore.com"&gt;Team Development for Sitecore&lt;/a&gt; (TDS) product to close this gap. TDS addresses many of the points you raise as well as the ability to deploy your sitecore items as code to a different Sitecore installation. &lt;br /&gt;&lt;br /&gt;As for your recommend free tools, and this is just my own opinion, I don't particularly care for them. I would suggest that the readers take a look at TeamCity by JetBrains, rather than cc.net + nAnt. TeamCity is also free and is a bit easier, IMHO, to work with. Personally, I am very happy with using Microsoft Team Foundation Server. The integration with Visual Studio is 2nd to none and the build and testing functionality is great. I do understand that this software isn't free, which is why you mentioned SVN, cc.net and nAnt.&lt;br /&gt;&lt;br /&gt;Sean Kearney&lt;br /&gt;Sitecore MVP&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;References:&lt;br /&gt;Sitecore and Visual Studio: &lt;a href="http://seankearney.com/post/Visual-Studio-Projects-and-Sitecore.aspx"&gt;http://seankearney.com/post/Visual-Studio-Projects-and-Sitecore.aspx&lt;/a&gt;&lt;br /&gt;Hedgehog: &lt;a href="http://TeamDevelopmentForSitecore.com"&gt;http://TeamDevelopmentForSitecore.com&lt;/a&gt;&lt;br /&gt;Pentia: &lt;a href="http://mcore.wordpress.com/2008/02/29/continous-integration-and-sitecore/"&gt;http://mcore.wordpress.com/2008/02/29/continous-integration-and-sitecore/&lt;/a&gt;&lt;br /&gt;Oshyn: &lt;a href="http://oshyn.com/_blog/Web_Content_Management/post/Enterprise-Sitecore-Continuous-Integration-Configuration-Management/"&gt;http://oshyn.com/_blog/Web_Content_Management/post/Enterprise-Sitecore-Continuous-Integration-Configuration-Management/&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/CarkneesBlog/~3/dVSE0rt336M/post.aspx</link>
      <comments>http://seankearney.com/post/Dmitry-Vasilinenko-Continuous-Integration-for-Sitecore-Projects.aspx#comment</comments>
      <guid isPermaLink="false">http://seankearney.com/post.aspx?id=7f9e3509-6b8f-452d-8eb4-9fae1eef038d</guid>
      <pubDate>Wed, 01 Jun 2011 22:37:00 +0400</pubDate>
      <category>Sitecore</category>
      <dc:publisher>Sean</dc:publisher>
      <pingback:server>http://seankearney.com/pingback.axd</pingback:server>
      <pingback:target>http://seankearney.com/post.aspx?id=7f9e3509-6b8f-452d-8eb4-9fae1eef038d</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://seankearney.com/trackback.axd?id=7f9e3509-6b8f-452d-8eb4-9fae1eef038d</trackback:ping>
      <wfw:comment>http://seankearney.com/post/Dmitry-Vasilinenko-Continuous-Integration-for-Sitecore-Projects.aspx#comment</wfw:comment>
      <wfw:commentRss>http://seankearney.com/syndication.axd?post=7f9e3509-6b8f-452d-8eb4-9fae1eef038d</wfw:commentRss>
    <feedburner:origLink>http://seankearney.com/post.aspx?id=7f9e3509-6b8f-452d-8eb4-9fae1eef038d</feedburner:origLink></item>
  </channel>
</rss>

