2012-03-14 92 views
0

我正在开发一个解决方案, 15种自定义内容类型。因此,我在Visual Studio中创建了一个SharePoint项目并添加了在XML标记中定义的内容类型。 由于其中一些内容类型使用彼此之间的引用(Lookup-Columns),我也添加了List Definitions和List Instances。由于自SharePoint 2010开始可以用XML声明查找 - 一切正常。在SharePoint中依赖关系部署多种内容类型的最佳实践

现在我的功能包含所有的内容类型,列表定义和列表实例。

但问题是:有时部署成功,有时会失败。我想这可能是因为功能中的元素没有激活顺序。现在我可以更改我的项目并为每种内容类型创建一个功能并定义激活依赖关系来定义激活顺序。但是这将导致至少20个特征,并且在我看来,这不能成为正确处理这个问题的假设解决方案。

所以问题是:在相同的解决方案中,通过查找其他内容类型来部署内容类型的正确方法是什么?

有一个限制:因为我想部署在Sharepoint Online中,所有内容都必须进行沙盒处理。

在此先感谢

马丁

+0

形容 “有时会失败。”你有错误吗?它不工作吗?您是否可以从SharePoint Online获取ULS日志? – 2012-03-14 14:06:38

回答

2

我相信我有你同样的问题 - 我定义了两种内容类型; A和B,B依赖于A,两者都属于单一特征。然而,当它来到的时间来部署,我收到了一个错误:

Error occurred in deployment step 'Activate Features': The parent content type specified by content type identifier 0x010029043F0D68EC4DF1BC85141AFF451661 does not exist.

我看着在Manifest.xml文件是Visual Studio中的WSP/CAB文件中生成并注意到了两个内容类型的Elements.xml文件中定义的围绕错误的方式:

  1. B/Elements.xml
  2. A/Elements.xml

一个解决这个是简单地强制在某些功能Elements.xml文件的顺序(即把“根”的内容类型的文件在前)。

打开该功能,进入清单,打开编辑选项并输入需要首先在Elements.xml文件列表中指定的文件。

<ElementManifests> 
    <ElementManifest Location="A\Elements.xml" /> 
</ElementManifests> 

这发出以下XML到清单文件:

<ElementManifests> 
    <ElementManifest Location="A\Elements.xml" /> 
    <ElementManifest Location="B\Elements.xml" /> 
</ElementManifests>