كيف يمكنك إعادة تشغيل ملف / إعادة قراءة app.config التطبيق عند تعديل (.NET)؟

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

  •  19-08-2019
  •  | 
  •  

سؤال

ونحن نعلم جميعا أن تعديل ملف web.config ل. NET تطبيق الويب إعادة تشغيل التطبيق ويجعل من قراءة تكوين المحدثة. كيف يمكنك أن تفعل ذلك مع وحدة التحكم أو WinForms عناصر التطبيق؟ شكر:)

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

المحلول

وربما تحتاج لFileSystemWatcher لرصد الملف، والتعامل مع الحدث ذات الصلة. قد يكون الطبقة System.Configuration.ConfigManager الأساليب ذات الصلة لإعادة تحميل (استدعاء الأسلوب أو بعض هذه). ليس لدي VS أمامي، ولكن أقول هناك بالتأكيد بعض السنانير هناك بالتأكيد.

نصائح أخرى

استخدم FileSystemWatcher أن يتم إعلامك عند تغير ملف التكوين الخاص بك.

استخدم ConfigurationManager.RefreshSection لتحديث من القرص دون إعادة تشغيل التطبيق.

وهناك قسم جيدة على القيام فعلا تحديث البيانات <لأ href = "http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.refreshsection.aspx" يختلط = "نوفولو noreferrer" > هنا . مع أن الجمع بين FileSystemWatcher كما اقترح البط السري، وكنت قد يكون جيدا على الفائز.

FileSystemWatcher والاستماع إلى التغييرات في ملف التكوين.
عندما أثار استخدام التعليمات البرمجية التالية:

MyGeneratedSettingsFile.Default.Reload();

وlog4net لديه خيار للكشف عن التغيرات الخارجية إلى ملف * .config. وكما الجميع بالفعل وقال يتم ذلك باستخدام FileSystemWatcher التي تم تعيينها للاستماع لإجراء تغييرات في ملف * .config الخاص بك.

وخلاصة القول؛ FileSystemWatcher هو الطريق للذهاب.

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

وعلى سبيل المثال، قد تكوين الاحتياطي الخاص بك طبقات سياق قاعدة البيانات لSQL Server بعد كنت قد قرأت من التكوين الذي أنت ذاهب لاجراء محادثات مع SQL Server و حصلت سلسلة الاتصال لذلك.

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

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

إذا كنت تستخدم وعاء اللجنة الاولمبية الدولية، قد تحتاج إلى إعادة الأسلاك بعض تبعياته بسبب إعدادات جديدة.

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

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

إذا كنت تستخدم الإطار الصافي 2 وكنت تستخدم على المستخدم إعدادات نطاق انها شفافة جدا. بعد تغيير الإعدادات فقط استدعاء الأسلوب حفظ () وإعدادات جديدة لا تتوفر على الفور

وعلى سبيل المثال

My.Settings.UpdateInterval = 10
My.Settings.Save()

إذا كان الإعداد نطاق التطبيق ثم FileSystemWatcher قد يكون وسيلة للذهاب

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