قراءة dll.config (وليس app.config!) من وحدة البرنامج المساعد

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

سؤال

أنا أكتب C# .NET 2.0 .dll وهو مكون إضافي لـ تطبيق أكبر.يحتوي مشروع الاستوديو المرئي الخاص بوحدتي على ملف app.config الذي تم نسخه إلى MyProj.dll.config بجانب MyProj.dll.

الخطة هي أنه سيتم تحرير MyProj.dll.config بعد نشر ملف .dll.أحاول قراءة إعداداتي من هذا الملف المحلي المعدل.لقد حاولت سحب LocalFilesSettingsObject وتغيير اسم التطبيق الخاص به إلى .dll الخاص بي مثل هذا:

        Properties.Settings config = Properties.Settings.Default;
        SettingsContext context = config.Context;
        SettingsPropertyCollection properties = config.Properties;
        SettingsProviderCollection providers = config.Providers;
        SettingsProvider configFile = Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
        configFile.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name;
        config.Initialize(context, properties, providers);
        config.Reload();

هذا لا يعمل.أجد صعوبة في استيعاب فوضى إعدادات .NET بأكملها.أريد وصفة لإنهاء هذه المهمة.أود أيضًا الحصول على رابط لشرح واضح (مع أمثلة) لكيفية عمل الإعدادات في .NET 2.0

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

المحلول

سوف تحتاج إلى تحميل x.dll.config (باستخدام واجهة برمجة التطبيقات للتكوين) بنفسك.جميع عمليات المعالجة التلقائية للملفات (بما في ذلك .Settings) يدور حول Machine.config/y.exe.config/user-settings.

لفتح ملف تكوين مسمى:

  • مرجع System.Configuration.dll حَشد.
  • استخدام System.Configuration
  • قم بإنشاء كود مثل:

    Configuration GetDllConfiguration(Assembly targetAsm) {
      var configFile = targetAsm.Location + ".config";
      var map = new ExeConfigurationFileMap {
        ExeConfigFilename = configFile
      };
      return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
    }
    

نصائح أخرى

1- افتح ملف app.config في الاستوديو المرئي

2- في علامة "التكوين" أضف التكوينات الخاصة بك في علامة "appSettings" كما يلي:

<configuration>
    <appSettings>
        <add key="UserName" value="aaa"/>
        <add key="Password" value="111"/>
    </appSettings>
</configuration>

3- في الكود الخاص بك C#

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["UserName"].Value;
string password = appConfig.AppSettings.Settings["Password"].Value;

ولا تنس إضافة هذين الاستخدامين لـ "ConfigurationManager" و"Assembly"

  • باستخدام System.Configuration؛
  • باستخدام System.Reflection؛

إذا لم يظهر System.Configuration، فيجب عليك إضافة المرجع "System.Configuration" في المراجع

4- يمكنك تحديث إعدادات ملف dll كما يلي:

  • افتح الملف "MyProj.dll.config"
  • ثم قم بتحديث التكوينات الخاصة بك
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top