Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 如何检查SiteCore';将序列化树转换为TFS_Version Control_Tfs_Sitecore - Fatal编程技术网

Version control 如何检查SiteCore';将序列化树转换为TFS

Version control 如何检查SiteCore';将序列化树转换为TFS,version-control,tfs,sitecore,Version Control,Tfs,Sitecore,我们使用Sitecore并在开发人员之间共享内容,我们将内容树序列化到文件系统,然后将其检查到源代码管理中。这在上一个使用SVN的项目中运行良好,但这个新项目使用TFS 不幸的是,TFS不接受带有美元符号的路径,即 \serialization\master\sitecore\templates\Branches\Calendar\Agenda View Settings\$name.item 这是Sitecore序列化结构的一个非常常见的文件名。这有什么办法吗?是否可以将Sitecore更改

我们使用Sitecore并在开发人员之间共享内容,我们将内容树序列化到文件系统,然后将其检查到源代码管理中。这在上一个使用SVN的项目中运行良好,但这个新项目使用TFS

不幸的是,TFS不接受带有美元符号的路径,即

\serialization\master\sitecore\templates\Branches\Calendar\Agenda View Settings\$name.item

这是Sitecore序列化结构的一个非常常见的文件名。这有什么办法吗?是否可以将Sitecore更改为不在文件名前添加$,或者我们必须切换到SVN?

建议的解决方法对您有用吗?

我做了一些深入研究。这是可行的,但不是马上就能实现的

序列化树时,Sitecore调用:Sitecore.Shell.Framework.Commands.Serialization.DumpTreeCommand。这在/App_Config/Commands.Config中定义。反序列化时,将调用等效的.LoadTreeCommand

这些命令所做的只是调用:

受保护的覆盖无效转储(项)
{
Sitecore.Data.Serialization.Manager.DumpTree(项);
}
不幸的是,要获得需要覆盖的功能,您必须1)覆盖commands.config中的命令,然后创建自己的序列化管理器(从Sitecore的继承)

我不完全确定这有多容易,因为这个类中的大多数方法都是静态成员。您需要重写/重新实现的方法如下:

公共静态无效转储项(字符串路径,项)
{
Assert.ArgumentNotNullOrEmpty(路径,“路径”);
Assert.ArgumentNotNull(项目,“项目”);
CreateDirectory(Path.GetDirectoryName(Path));
使用(新的SecurityDisabler())
{
TextWriter writer=newstreamwriter(File.Create(path));
尝试
{
ItemSynchronization.WriteItem(item,writer);
}
抓住
{
}
writer.Close();
}
}
如您所见,文件名完全基于项目的路径。假设是,您可以使用类似.Replace(“$”,“!dollartoken!”)的东西,并在反序列化程序中实现相反的功能


不幸的是,似乎还有很多工作要做。

哦,还有一件事

我还没有机会亲自测试这个工具,但它看起来很有趣,可能是解决源代码管理难题的答案。

这看起来很熟悉:)我承认,这不是一个很好的解决方法;在SiteCore端进行更改肯定会更好。