我正在开发一个大约的解决方案。 15种自定义内容类型。因此,我在Visual Studio中创建了一个SharePoint项目,并添加了在XML标记中定义的内容类型。 由于其中一些内容类型使用彼此之间的引用(Lookup-Columns),我还添加了List Definitions和List Instances。自从SharePoint 2010以来,可以在XML中声明查找 - 一切都很好。
现在,我的功能包含所有内容类型,列表定义和列表实例。
但问题是:有时部署成功,有时失败。我想这可能会发生,因为功能中的元素没有激活顺序。现在,我可以更改项目并为每种内容类型创建一个功能,并定义激活依赖项以定义激活顺序。但这会导致至少20个功能,在我看来,这不能成为正确处理这个问题的假设解决方案。
将查找内容类型部署到同一解决方案中的其他内容类型的正确方法是什么?
有一个限制:所有内容都必须沙箱化,因为我想在SharePoint Online中部署。
答案 0 :(得分:2)
我相信我和你有同样的问题 - 我定义了两种内容类型; A和B,B依赖于A.并且两者都在单一特征中。但是,当部署时,我收到了一个错误:
部署步骤“激活功能”中出错: 内容类型标识符0x010029043F0D68EC4DF1BC85141AFF451661指定的父内容类型不存在。
我查看了Visual Studio在wsp / cab文件中生成的Manifest.xml文件,发现两个内容类型的Elements.xml文件定义错误:
- B / Elements.xml的
- A / Elements.xml的
醇>
解决这个问题的方法是简单地强制特征中某些Elements.xml文件的顺序(即首先放置'root'内容类型文件)。
打开该功能,转到Manifest,打开Edit Options,然后在Elements.xml文件列表中输入您需要首先指定的文件。
<ElementManifests>
<ElementManifest Location="A\Elements.xml" />
</ElementManifests>
这会将以下XML发送到清单文件中:
<ElementManifests>
<ElementManifest Location="A\Elements.xml" />
<ElementManifest Location="B\Elements.xml" />
</ElementManifests>