سؤال

أحتاج إلى إنشاء حدث تحديث عنصر لقائمة موجودة في حل موجود لقد تحققت للتو وهناك بالفعل ميزة لذلك, السؤال هنا هو لهذا النوع من الترقية هل أحتاج إلى إنشاء ترقية الميزة?

أو فقط تحديث الحل + إنشاء رمز سوف تفعل خدعة?

هل كانت مفيدة؟

المحلول

يجب عليك استخدام ميزة الترقية لتسجيل إيفنتريسيفر الجديد.

مجرد إنشاء التعليمات البرمجية لن أقول شاريبوانت لاستدعاء إيفنتريسيفر عليك أن تفعل ذلك في أي من العناصر.ملف شمل باستخدام <Receivers> عنصر أو من خلال التعليمات البرمجية عن طريق إنشاء عنصر جديد في مجموعة إيفنتريسيفرز الصحيحة

بالنسبة للأمثلة التالية ، افترض أنك تقوم بالترقية إلى فيريون 7.0.0.0.

كامل
لإضافة جهاز استقبال الحدث في كام الميزة الخاصة بك.يجب أن يكون شمل شيء من هذا القبيل:

<?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>

مع العناصر الجديدة.شمل يتم تطبيقها على حد سواء على الترقية وعلى التنشيط الجديد

كود
لإضافة جهاز استقبال الحدث في رمز الميزة الخاصة بك.يجب أن يكون شمل شيء من هذا القبيل:

<?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>

وفي فيتاتوريسيفر سيكون لديك رمز مثل:

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;
  ...
}

مع رمز لإضافة إيفنتريسيفر يتم تشغيلها على الترقية مع أكتيونام = "أدنويفنتريسيفر" وكذلك على التنشيط الجديد.وبالطبع إزالته على التعطيل.

لإضافة إيفنتريسيفر في التعليمات البرمجية استخدام شيء مثل:

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

نصائح أخرى

يتم إطلاق featureupgrading عند إدخال ميزة في حالة الترقية، وهذا يتم تشغيله فقط إذا كانت الميزة مستحقة الترقية (أي: الإصدار المثبت أكبر من تلك النسخة المنشط).

لديك قراءة من خلال سلسلة مدونة Chris O'Brien حول ترقية ميزة للحصول على مزيد من فهم كيفية ترقية ميزة Works: http://www.sharepointnutsandbolts.com/2010/06/feature-upgrade-part-1-fundamentals.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top