質問

既存のソリューションの既存のリストにアイテム更新イベントを作成する必要があります 私はちょうどチェックされていて、すでに機能がありますが、ここでの質問はこのタイプのアップグレードのためのものです私は機能アップグレードを作成する必要がありますか?

または解決策の更新のみ+コードの作成はトリックを実行しますか?

役に立ちましたか?

解決

新しいEventReceiverを登録するための機能アップグレードを使用する必要があります。

コードを作成するだけでは、EventReceiverを呼び出すにはSharePointに通知します。<Receivers>要素を使用したElements.xmlファイルまたはコードを使用してコードを使用する必要があります。

次の例では、Verion 7.0.0.0にアップグレードしているとします。

caml
camlにイベント受信側を追加するには、feature.xmlのようなものにする必要があります。

<?xml version="1.0" encoding="utf-8" ?>
<Feature ... Version="7.0.0.0">
  <UpgradeActions>
    <VersionRange BeginVersion="0.0.0.0" EndVersion="7.0.0.0">
      <ApplyElementManifests>
        <ElementManifest Location="MyNewEventReceiver\Elements.xml" />
      </ApplyElementManifests>
    </VersionRange>
  <UpgradeActions>
  ...
  <ElementManifest Location="MyNewEventReceiver\Elements.xml" />
</Feature>
.

新しいElements.xmlがアップグレードと新機能の両方で適用されている

コード
Feature.xmlのコードにイベント受信者を追加するには、次のようなものにする必要があります。

<?xml version="1.0" encoding="utf-8" ?>
<Feature ...   ReceiverAssembly="XXX" ReceiverClass="YYY" Version="7.0.0.0">
  <UpgradeActions>
    <VersionRange BeginVersion="0.0.0.0" EndVersion="7.0.0.0">
      <CustomUpgradeAction Name="AddNewEventReceiver" />
    </VersionRange>
  <UpgradeActions>
  ...
</Feature>
.

とFeaturereCeiverには、次のようなコードがあります。

public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
{
  SPWeb parentWeb = (SPWeb)properties.Feature.Parent;
  switch (upgradeActionName)
  {
    case "AddNewEventReceiver":
      // Add EventReceiver;
      break;
    ...
  }
}

public override virtual void FeatureActivated(SPFeatureReceiverProperties properties)
{
  SPWeb parentWeb = (SPWeb)properties.Feature.Parent;
  ...
  // Add EventReceiver;
  ...
}

public override virtual void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
  SPWeb parentWeb = (SPWeb)properties.Feature.Parent;
  ...
  // Remove EventReceiver;
  ...
}
.

EventReceiverを追加するためのコードは、ActionName="AddneWeventReceiver"と新しいアクティブ化のアップグレード時に実行されます。そしてもちろん失活に取り除く。

コードにEventReceiverを追加するには、次のようなものを使用します。

parentWeb.Lists[_listName].EventReceivers.Add(_eventType, Assembly.GetExecutingAssembly().FullName, _eventReceiverClassName);
.

他のヒント

機能アップグレードは、機能がアップグレード状態に入っているときに起動され、これは機能がアップグレードのために予定されている場合にのみトリガされます(つまり、インストールされているバージョンはアクティブ化バージョンのそれよりも大きい)。

Chris O'Brienのブログシリーズを読み込んで、機能のアップグレードに関する機能アップグレードについての機能アップグレードについては、機能アップグレードの作業を得るための機能アップグレードについてhttp://www.sharepointnutsandbolts.com/2010/06/Feature-upgrade-part-1-fundamentalals.html "rel=" nofollow "> http://www.sharepointnutsandbolts.com/2010/06/feature-upgrade-part--fundamentals.html

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top