كيفية تحديث إصدار تجميع Spitemeventreceiver في قائمة في SharePoint؟

StackOverflow https://stackoverflow.com/questions/382535

  •  23-08-2019
  •  | 
  •  

سؤال

لدينا Spitemeventreceiver تجميعها في التجمع الخاص بها.

نحن نستخدم STSDEV لتحديث محلول SharePoint مع هذا EventReceiver كميزة. أنا لا أقوم بتعيين SpitemeventreceiveriVerciver إلى ListMPlateId محددة داخل العناصر. xml بدلا من ذلك يربط بدلا من ذلك باستمرار في الميزة. xml و programmaticaly تعيين spitemeventreceiver إلى عناصر Spitemist متعددة.

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        foreach (SPWeb web in site.AllWebs)
        {
            SPListCollection webListCollection = web.Lists;

            foreach (SPList myList in webListCollection)
            {
                if (myList.Title == "Lab Reports")
                {
                    SPEventReceiverDefinitionCollection receivers = myList.EventReceivers;
                    SPEventReceiverDefinition receiver = receivers.Add();
                    receiver.Name = "PostUpdateLabReport";
                    receiver.Assembly = "LabReportEventHandlers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1111111111111";
                    receiver.Class = "LabReportEventHandlers.LabReportsHandler";
                    receiver.Type = SPEventReceiverType.ItemUpdated;
                    receiver.Update();
                    break;
                }
            }

            web.Dispose();
        }
    }

أنا أستخدم Featuredeactivating للقيام بعكس التعليمات البرمجية أعلاه، وإزالة EventReceiver من القوائم.

سؤال:

كيف يمكنني التعامل مع الحدث المستقبلي حيث يتم تحديث LabReporteventhAndlers وتغيير الإصدار؟

هذه هي الخيارات التي يمكنني التفكير فيها:

  1. مع إلغاء تنشيط / إعادة تنشيط الميزة - أود أن ألتف DLL المحدث مرة أخرى في ملف SharePoint Solution، وقم بتغيير التعليمات البرمجية أعلاه لتعكس الإصدار الجديد، واستخدم Stsadmin لترقية الحل. سأفعل ذلك / إعادة تنشيط / إعادة تنشيط الميزة.

  2. إضافة إعادة توجيه التجميع إلى web.config.

  3. لا تصطدم برقم إصدار labreporteventhAndlers.

هل هناك شيء في تغيير نسخة الحل التي ستساعدني؟

أعتقد أن هناك مشاكل مع 3 خيارات:

  1. بعد إلغاء تنشيط الميزة، يمكن لشخص ما تحديث عنصر قبل أن أتمكن من التفاعل.

  2. لن أرغب في تحرير web.config باليد، لذلك أود استخدام SharePoint API بدلا من ذلك. أين أركض هذا الرمز؟

  3. هذا هو مجرد خطأ سهل، ولكن سهل.

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

المحلول

ربما يمكنك تثبيت المنطق المعرضة للتغيير في تجميع منفصل، يتم الرجوع إليه واستخدامه بواسطة معالج الحدث الخاص بك. وبهذه الطريقة، لن يتغير معالج الأحداث نفسها للتغيير، فلن تقوم إلا بنشر مجموعة "المنطق" المحدثة فقط إلى دليل GAC أو BIN (IES) بشكل مناسب.

HTH، JT.

نصائح أخرى

لست متأكدا من ما تريده مع الترقية، سواء كنت تريد تطبيق معالج الأحداث الجديد على القوائم القديمة أو فقط لقوائم جديدة.

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

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

لذلك، باختصار: لقوائم جديدة، اقرأ تكوين التجمع من الملف الخارجي للقوائم القديمة، إضافة معلومات التجميع التي تمت ترقيتها قبل إزالة المعالج القديم.

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

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