উইন্ডোজ ফর্ম সি # অ্যাপ্লিকেশনটিতে কনফিগারেশন ফাইল রাখার সহজ উপায়


88

আমি .NET- এ সত্যিই নতুন, এবং কনফিগারেশন ফাইলগুলি কীভাবে কাজ করে সে সম্পর্কে আমি এখনও স্তব্ধ হয়ে উঠতে পারি নি।

আমি যখনই এটি সম্পর্কে গুগলে অনুসন্ধান করি তখনই আমি ওয়েবকনফিগ সম্পর্কে ফলাফল পাই তবে আমি উইন্ডোজ ফর্ম অ্যাপ্লিকেশনটি লিখছি।

আমি বুঝতে পেরেছিলাম যে আমার সিস্টেম. কনফিগারেশন নেমস্পেস ব্যবহার করা দরকার, তবে ডকুমেন্টেশন সাহায্য করছে না।

আমি কীভাবে নির্ধারণ করব যে আমার কনফিগারেশন ফাইলটি XYZ.xML? বা কনফিগারেশন ফাইলের জন্য এটির কোনও "ডিফল্ট" নাম আছে? আমি এখনও পেলাম না।

এছাড়াও, আমি কীভাবে একটি নতুন বিভাগটি সংজ্ঞায়িত করব? কনফিগারেশনসেকশন থেকে উত্তরাধিকার সূত্রে আমার এমন কোনও শ্রেণি তৈরি করা দরকার?

আমি এই জাতীয় কিছু মান সহ একটি কনফিগারেশন ফাইল রাখতে চাই:

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

এটি করার কোনও সহজ উপায় আছে? আপনি কীভাবে একটি সাধারণ কনফিগারেশন ফাইল থেকে / লিখতে এবং লিখতে চান তা সহজ উপায়ে ব্যাখ্যা করতে পারেন?


4
আপনার নেট .NET এর সংস্করণটি কী? ২.০ এবং উচ্চতর ক্ষেত্রে, সেটিংস নামে একটি খুব সুন্দর উপায় রয়েছে।
টমাস

4
@ তবুও এটি একটি টাইপো ছিল তবে এর অর্থ "উদাহরণ দিয়ে ব্যাখ্যা করুন" :)
ফ্যাবিও গোমস

উত্তর:


123

আপনি একটি App.Config ব্যবহার করতে চান।

আপনি যখন কোনও প্রকল্পে একটি নতুন আইটেম যুক্ত করেন তখন অ্যাপ্লিকেশন কনফিগারেশন ফাইল নামে কিছু থাকে। যোগ করুন

তারপরে আপনি কনফিগারেশন / অ্যাপসেটেশন বিভাগে কী যুক্ত করুন

পছন্দ:

<configuration>
 <appSettings>
  <add key="MyKey" value="false"/>

সদস্যদের অ্যাক্সেস করে

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

এটি .NET 2 এবং উপরের কাজ করে।


4
আসলে এটি v1.0 এর পরে থেকে .NET এর সমস্ত সংস্করণে কাজ করে। .NET 2.0 এ নতুন ক্লাসটি কনফিগারেশন ম্যানেজার।
মাইক ডিমমিক

4
আমি ব্যক্তিগতভাবে "অ্যাপ্লিকেশন বৈশিষ্ট্যগুলি" (ফ্রেমওয়ার্ক 2.0. এর পরে) "সেটিংস" ট্যাবটি ব্যবহার করি কারণ ভিজ্যুয়াল স্টুডিও আপনার সেটিংসের জন্য দৃ settings়ভাবে টাইপ করা বৈশিষ্ট্যগুলি কোড করবে। এগুলি "ব্যবহারকারীর" সেটিংস অন্তর্ভুক্ত করতে পারে যা রান সময়ে পড়া / লেখার সময়।
এড্রিয়ান ক্লার্ক

@ মাইক হ্যাঁ আমার মনে হয়েছে যে বিষয়টি ছিল তবে আমি খুব বেশি নিশ্চিত ছিলাম না। আমি 1 দিয়ে খুব বেশি কাজ করিনি
কুই

26
ConfigurationSettingsঅপ্রচলিত নোট , ব্যবহার করুন System.Configuration.ConfigurationManager.AppSettings["MyKey"];
জেএনএফ

16
এছাড়াও একটি নোট, System.Configuration.ConfigurationManagerআপনার প্রকল্পটি ব্যবহার করার জন্য একটি রেফারেন্স প্রয়োজনSystem.Configuration.dll
dmeglio

66

পূর্ববর্তী উত্তরগুলির স্পষ্টতা ...

  1. আপনার প্রকল্পে একটি নতুন ফাইল যুক্ত করুন ( → নতুন আইটেমঅ্যাপ্লিকেশন কনফিগারেশন ফাইল যুক্ত করুন )

  2. নতুন কনফিগারেশন ফাইলটি সলিউশন এক্সপ্লোরারে App.Config হিসাবে উপস্থিত হবে ।

  3. টেমপ্লেট হিসাবে নিম্নলিখিতটি ব্যবহার করে এই ফাইলে আপনার সেটিংস যুক্ত করুন

    <configuration>
      <appSettings>
        <add key="setting1" value="key"/>
      </appSettings>
      <connectionStrings>
        <add name="prod" connectionString="YourConnectionString"/>
      </connectionStrings>
    </configuration>
    
  4. তাদের এগুলি পুনরুদ্ধার করুন:

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }
    
  5. তৈরি হওয়ার পরে, আপনার আউটপুট ফোল্ডারে <<< নাম> .exe.config নামে একটি ফাইল থাকবে। এটি App.Config ফাইলের একটি অনুলিপি হবে। এই ফাইলটি তৈরি করতে বিকাশকারীদের আর কোনও কাজ করার দরকার নেই।


4
এটি আমার পক্ষে কার্যকর ছিল। অন্য দুটি পয়েন্ট: প্রকল্পটিতে নতুন ফাইল যুক্ত করার সময়, ডায়ালগটির বাম দিকে জেনারেল নোডটিতে ক্লিক করার পরে অ্যাপ্লিকেশন কনফিগারেশন ফাইলটি পাওয়া গেল। আমার কোডে কনফিগারেশন ম্যানেজার ক্লাসটি ব্যবহার করার জন্য, আমাকে আমার রেফারেন্সগুলিতে System.Configration DLL যুক্ত করতে হয়েছিল।
জন গিলমার

28

পূর্ববর্তী উত্তরগুলির দ্রুত পঠন থেকে, তারা সঠিক দেখায়, তবে দেখে মনে হয় না যে কেউ ভিজ্যুয়াল স্টুডিও ২০০৮-তে নতুন কনফিগারেশন সুবিধাগুলি উল্লেখ করেছে It এটি এখনও অ্যাপকনফাইগ ব্যবহার করে (আপনার অ্যাপ্লিকেশন.কম এক্সকনফাইগে সংকলনের সময় অনুলিপি করা হয়েছে), তবে বৈশিষ্ট্য নির্ধারণ এবং তাদের প্রকারগুলি নির্দিষ্ট করার জন্য একটি ইউআই উইজেট রয়েছে। ডাবল-ক্লিক Settings.settings আপনার প্রকল্পের এর "প্রোপার্টি" ফোল্ডারে।

সর্বোত্তম অংশটি হ'ল কোড থেকে এই সম্পত্তিটি অ্যাক্সেস করা টাইপসেফ - সংকলক সংখ্যার যথাযথ সম্পত্তির নাম ভুল টাইপ করার মতো ধরা পড়বে। উদাহরণস্বরূপ, app.config- এ মাইকনেকশন স্ট্রিং নামক কোনও সম্পত্তি যেমন অ্যাক্সেস করা হবে:

string s = Properties.Settings.Default.MyConnectionString;

এটি ভিএস ২০০৫ এ উপলব্ধ ছিল।
গ্রেগ ডি

4
দুর্দান্ত, তবে এটি (প্রকল্পের বৈশিষ্ট্য | সেটিংস) কোড উত্পন্ন করে যা সংকলন করতে হবে। আপনি যদি কোনও সেটিং পরিবর্তন করতে চান তবে আপনাকে গ্রাহকের কাছে নতুন বাইনারি প্রকাশ করতে হবে।
জনএল 4

@ জনএল 4 যদি এই সেটিংসটি "ব্যবহারকারীর" সুযোগে থাকে তবে আপনি এটিকে প্রোগ্রামগতভাবে পরিবর্তন করতে পারেন, যেমনSettings.Default.Test = "abc"; Settings.Default.Save();
পিট ব্রিটস

10

আপনি একটি তৈরি করা উচিত App.config ফাইল (খুব অনুরূপ web.config )।

আপনার প্রকল্পে ডান ক্লিক করা উচিত, নতুন আইটেম যুক্ত করা উচিত এবং নতুন "অ্যাপ্লিকেশন কনফিগারেশন ফাইল" বেছে নেওয়া উচিত

আপনার প্রকল্পে আপনি সিস্টেম.কনফিগারেশন ব্যবহার করে যুক্ত করেছেন তা নিশ্চিত করুন।

তারপরে আপনি এতে মান যুক্ত করতে পারেন:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }

কেবল একটি নোট: মাইক্রোসফ্টের মতে আপনার কনফিগারেশনসেটেটিংয়ের পরিবর্তে কনফিগারেশন ম্যানেজার ব্যবহার করা উচিত (মন্তব্যগুলির বিভাগটি দেখুন):

"কনফিগারেশনসেটেটিং ক্লাসটি কেবল পশ্চাদপটে সামঞ্জস্যতা সরবরাহ করে new


খুব উপকারী. আমার ইস্যু টি তে সমাধান করেছেন
জে.সি.মরিস

ভিজ্যুয়াল স্টুডিও 2015 তে: প্রকল্প> রেফারেন্স যুক্ত ক্লিক করুন। সিস্টেমটি সন্ধানের জন্য অর্ধেক নীচে স্ক্রোল করুন on কনফিগারেশন ঠিক আছে ক্লিক করুন, তারপরে নাথনের মন্তব্য অনুসারে কোডের লাইনটি আপডেট করুন।
রোবট 70

7

একটি কনফিগারেশন ফাইলের ডিফল্ট নাম হ'ল [yourexe] .exe.config। সুতরাং notepad.exe প্রোগ্রাম হিসাবে একই ফোল্ডারে notepad.exe.config নামে একটি কনফিগারেশন ফাইল থাকবে। এটি সিএলআর এবং ফ্রেমওয়ার্কের সমস্ত দিকের জন্য একটি সাধারণ কনফিগারেশন ফাইল, তবে এতে <appSettings>নোডের নীচে আপনার নিজস্ব সেটিংস থাকতে পারে ।

<appSettings>উপাদান যা অ্যাক্সেস করা যেতে পারে নাম-মান জোড়া একটি সংগ্রহ তৈরি করেSystem.Configuration.ConfigurationSettings.AppSettings । কনফিগারেশন ফাইলে পরিবর্তনগুলি সংরক্ষণ করার কোনও উপায় নেই তবে।

কনফিগারেশন ফাইলে আপনার নিজস্ব কাস্টম উপাদান যুক্ত করাও সম্ভব - উদাহরণস্বরূপ, কাঠামোগত সেটিংটি সংজ্ঞায়িত করা - যা প্রয়োগ করে এমন একটি ক্লাস তৈরি করে IConfigurationSectionHandlerএবং এটি <configSections>কনফিগারেশন ফাইলের উপাদানটিতে যুক্ত করে । তারপরে আপনি কল করে এটি অ্যাক্সেস করতে পারবেন ConfigurationSettings.GetConfig

.NET 2.0 একটি নতুন ক্লাস যুক্ত করেছে, System.Configuration.ConfigurationManagerযা প্রতি-সিস্টেমের ডেটার প্রতি ব্যবহারকারী ব্যবহারকারীর ওভাররাইড সহ একাধিক ফাইল সমর্থন করে। এটি সেটিংস ফাইলগুলিতে ফিরে পরিবর্তিত কনফিগারেশনগুলি সংরক্ষণ করে।

ভিজ্যুয়াল স্টুডিও একটি ফাইল তৈরি করে App.config , যা প্রকল্পটি তৈরি হওয়ার পরে এটি সঠিক নাম সহ EXE ফোল্ডারে অনুলিপি করে।


6

.NET অ্যাপ্লিকেশন কনফিগারেশন সম্পর্কে সেরা (আইএমএইচও) নিবন্ধটি কোডপ্রজেজে, .NET 2.0 কনফিগারেশনের রহস্য উন্মোচন করছে । .NET কনফিগারেশন ফাইলগুলির বিভাগগুলি সম্পর্কে আমার পরবর্তী প্রিয় (সংক্ষিপ্ত) নিবন্ধটি হ্যান্ডলারের অ্যাপ্লিকেশন - অ্যাপকনফাইগ ফাইল বোঝা হচ্ছে ।


এটি ব্যবহারকারীর কাছে জিজ্ঞাসা করা সহজতম উপায় নয়, তবে। নেট 2.0 কনফিগারেশনের রহস্য উন্মোচন করা নিবন্ধগুলির একটি দুর্দান্ত সিরিজ।
রিকার্ডো আমোরস

3

উইন্ডোজ ফর্মগুলিতে আপনার কাছে app.configফাইল রয়েছে যা ফাইলটির সাথে খুব মিল web.config। তবে যে বিষয়টির জন্য আমি এটি দেখতে চাইছি তা হ'ল কাস্টম মান, তাই আমি সেটিংস ব্যবহার করার পরামর্শ দিই ।

এটি করতে, আপনার প্রকল্পের বৈশিষ্ট্যগুলি খুলুন এবং তারপরে সেটিংসে যান। যদি কোনও সেটিংস ফাইল উপস্থিত না থাকে তবে একটি ফাইল তৈরি করতে আপনার লিঙ্ক থাকবে। তারপরে, আপনি যে টেবিলে দেখতে পাচ্ছেন সেটিতে আপনি সেটিংসটি যুক্ত করতে পারেন যা উপযুক্ত এক্সএমএল এবং একটি সেটিংস উভয়ই তৈরি করতে পারে সেটিতে লোড করতে এবং সেটিংস সংরক্ষণ করতে ব্যবহৃত হতে পারে এমন ক্লাস ।

সেটিংস শ্রেণীর নামকরণ করা হবে এরকম কিছু DefaultNamespace.Properties.Settings। তারপরে, আপনি এর মতো কোড ব্যবহার করতে পারেন:

using DefaultNamespace.Properties;

namespace DefaultNamespace {
    class Class {
        public int LoadMySettingValue() {
            return Settings.Default.MySettingValue;
        }
        public void SaveMySettingValue(int value) {
            Settings.Default.MySettingValue = value;
        }
    }
}

2

আমি অন্যান্য উত্তরগুলির সাথে একমত যা আপনাকে app.config এ নির্দেশ করে। যাইহোক, অ্যাপ্লিকেশনফিগ থেকে সরাসরি মানগুলি পড়ার পরিবর্তে আপনার সেগুলি পড়ার জন্য এবং তাদের সম্পত্তি হিসাবে প্রকাশ করার জন্য একটি ইউটিলিটি ক্লাস তৈরি করা উচিত (অ্যাপসেটিংস নামটি আমি ব্যবহার করি) create অ্যাপসেটেটিং ক্লাসটি বেশ কয়েকটি স্টোরের সামগ্রিক সেটিংস যেমন অ্যাপকনফাইগের মান এবং অ্যাসেম্বলি থেকে অ্যাপ্লিকেশন সংস্করণ সম্পর্কিত তথ্য (এসেম্বলি ভার্সন এবং এসেম্বলিফিলভিশন) ব্যবহার করা যেতে পারে।


2

এটি করার একটি খুব সহজ উপায় হ'ল আপনার নিজস্ব কাস্টম Settingsক্লাসটি ব্যবহার করা


এমএসডিএন.মাইক্রোসফটকম /en-us/library/… এ অ্যাপ্লিকেশনসেটিংয়ের কম ভার্বোজ লিঙ্কের জন্য +1 যা কনফিগারেশন ম্যানেজার বাস্তবায়নগুলির চেয়ে সহজ বলে মনে হচ্ছে। সেটিংস পান / সেট করুন, "এক্সএমএল শেপিং" সম্পর্কে চিন্তা করবেন না।
ম্যাক্সওয়েলব

1

ব্যবহার:

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

অ্যাপসেটেটিংগুলি অবহেলা করা হয়েছে এবং এখন এটি অপ্রচলিত ( লিঙ্ক ) হিসাবে বিবেচিত হয় ।

উপরন্তু, এর appSettings অধ্যায় app.config দ্বারা প্রতিস্থাপিত হয়েছে applicationSettings অধ্যায়।

অন্য কারও হিসাবে উল্লেখ করা আছে, আপনি System.Configration.ConfigrationManager ( লিঙ্ক ) ব্যবহার করা উচিত যা .NET 2.0 এর জন্য নতুন।


কনফিগারেশনসেটিংগুলি অ্যাপসেটিংগুলি না করে হ্রাস করা হয়েছে।
টবি

0

আপনি নেট এবং ভিজ্যুয়াল স্টুডিওর কোন সংস্করণ ব্যবহার করছেন?

আপনি যখন নতুন প্রকল্পটি তৈরি করবেন তখন আপনার সমাধানে একটি ফাইল থাকা উচিত যা অ্যাপকনফিগ বলে । এটি ডিফল্ট কনফিগারেশন ফাইল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.