Featureアップグレードを使用してContentTypeにフィールドを追加する方法、新規および既存のサイトの場合
-
09-12-2019 - |
質問
だから、私はしばらくの間アップグレードを使用していますが、既存のインスタンスにはかなりうまく機能しますが、Feature Upgradeが自動的に発生しない限り、アップグレードをトリガする必要があります。中央管理ページのツールキット
問題は、サイト列に新しいフィールドを追加し、そのフィールドを既存のコンテンツタイプに追加したいということです。
前の開発者がこれをしたとき、それらは機能バージョン管理を使用していません。バージョンは0.0.0.0でした。
1.0.0.0にインクリメントされ、これは既存のサイトにはうまく機能します。
しかし私が新しいサイトを作成した場合、新しいサイトでは、機能が1.0.0.0ではなく1.0.0.0であるため、新しいフィールドが作成されていないと確信しています。
だから私がこれまでのものを持っているものです。
elements_1_0_0_0.xmlこれに含まれています:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field ID="{A32453DB-4382-4F5C-8E33-8284AB160E47}" Name="Recurrent" DisplayName="$Resources:SPNLMeetings,Field_AgendaPointRecurrent_Name;" Description="$Resources:SPNLMeetings,Field_AgendaPointRecurrent_Description;" Group="$Resources:SPNLMeetings,Field_NationaleLoterijMeetingColumns_Group;" Type="Boolean" StaticName="Recurrent" Required="FALSE" />
</Elements>
.
template.xmlにこれが含まれています:
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
ImageUrl="SPNL\spnl_feature.jpeg"
Title="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Title"
Description="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Description" Version="1.0.0.0">
<UpgradeActions>
<VersionRange BeginVersion="0.0.0.0" EndVersion="0.9.9.9">
<ApplyElementManifests>
<ElementManifest Location="Fields\Elements_1_0_0_0.xml" />
</ApplyElementManifests>
<AddContentTypeField ContentTypeId="0x0120D52000D56C75F51E1BD54E9D59BBBA1925379A01"
FieldId="{A32453DB-4382-4F5C-8E33-8284AB160E47}" PushDown="TRUE"/>
<CustomUpgradeAction Name="ReorderFields"/>
</VersionRange>
</UpgradeActions>
</Feature>
.
機能マニフェストのプレビューは次のようになります。
<Feature xmlns="http://schemas.microsoft.com/sharepoint/" ImageUrl="SPNL\spnl_feature.jpeg" Title="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Title" Description="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Description" Version="1.0.0.0" DefaultResourceFile="SPNLMeetings" Id="5d35f78b-2211-4cd8-bcba-6db7ac456b74" ReceiverAssembly="NationaleLoterij.SharePoint.Meetings.Solution, Version=1.0.0.0, Culture=neutral, PublicKeyToken=212c981019c3ab5d" ReceiverClass="NationaleLoterij.SharePoint.Meetings.Solution.Features.NLMeetingsContentTypes.NLMeetingsContentTypesEventReceiver" Scope="Site">
<UpgradeActions>
<VersionRange BeginVersion="0.0.0.0" EndVersion="0.9.9.9">
<ApplyElementManifests>
<ElementManifest Location="Fields\Elements_1_0_0_0.xml" />
</ApplyElementManifests>
<AddContentTypeField ContentTypeId="0x0120D52000D56C75F51E1BD54E9D59BBBA1925379A01" FieldId="{A32453DB-4382-4F5C-8E33-8284AB160E47}" PushDown="TRUE" />
<CustomUpgradeAction Name="ReorderFields" />
</VersionRange>
</UpgradeActions>
<ActivationDependencies>
<ActivationDependency FeatureTitle="$Resources:SPNL,Feature_NLBaseContentTypes_Title" FeatureDescription="$Resources:SPNL,Feature_NLBaseContentTypes_Description" FeatureId="e3356a10-dcd9-45a5-a1f5-6d9695b9c671" />
</ActivationDependencies>
<ElementManifests>
<ElementManifest Location="Fields\Elements.xml" />
<ElementManifest Location="ContentTypes\Elements.xml" />
<ElementFile Location="AgendaPointProposedContentTypeResources\docsethomepage.aspx" />
<ElementManifest Location="AgendaPointProposedContentTypeResources\Elements.xml" />
<ElementFile Location="AgendaPointContentTypeResources\docsethomepage.aspx" />
<ElementManifest Location="AgendaPointContentTypeResources\Elements.xml" />
</ElementManifests>
</Feature>
. 解決
答えはここにあります。
コンテンツタイプの更新 http:// msdn。 Microsoft.com/en-us/library/aa543504.aspx いかなる状況下でも、インストールした後にコンテンツタイプのコンテンツタイプ定義ファイルを更新しないでください。 SharePoint Foundationは、コンテンツタイプ定義ファイルに加えられたすべての変更を追跡しません。したがって、サイトコンテンツタイプに加えられたすべての変更を子コンテンツタイプにプッシュダウンするための信頼性の高い方法はありません。
子コンテンツの種類を更新する http:// msdn .microsoft.com / en-us / library / ms442695.aspx 既存のサイトコンテンツタイプに列を宣言的に追加することはできません。つまり、フィーチャXMLファイルを更新することで、