app.config ফাইল থেকে পড়া


131

আমি কোডটি ব্যবহার করে নীচের অ্যাপ.config ফাইল থেকে স্টার্টিংমনথকালাম এবং বিভাগহাইডিংকলামটি পড়ার চেষ্টা করছি

ConfigurationSettings.AppSettings["StartingMonthColumn"]

তবে এটি বাতিল হয়ে যাচ্ছে, কনফিগারেশনসেটিংস.এপসেটেটিংস.সেসেন্টটি শূন্য দেয়

আমার উইন্ডোজ অ্যাপ্লিকেশনটিতে এটি পড়তে দয়া করে আমাকে সহায়তা করুন

<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="CTARepository.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <CTARepository.Properties.Settings>
            <setting name="Setting" serializeAs="String">
                <value />
            </setting>
        </CTARepository.Properties.Settings>
    </userSettings>
    <appSettings>
        <add key="StartingMonthColumn" value="7"/>
        <add key="CategoryHeadingColumn" value="1"/>
    </appSettings>
</configuration>

আপনি কি প্রকল্পের মূলটিতে কনফিগারেশন ফাইলটি পরিবর্তন করার সময় \ বিন \ ডিবাগ ফোল্ডার থেকে অ্যাপটি চালানোর চেষ্টা করছেন? অন্যথায়, কনফিগারটি পরিবর্তন করুন এবং একটি ক্লিনআপ চালানোর পরে কোডটি পুনঃনির্মাণ করুন।
কংকান

1
ফাইলটির নাম "app.config" ঠিক নেই? এটি আপনার প্রকল্পের নাম হিসাবে নিশ্চিত হয়েছে, তবে অ্যাপ্লিকেশন আউটপুট ডিরেক্টরিতে এটি আপনার আউটপুট বাইনারি + ".config" (যেমন "MyLibrary.dll.config", বা "MyProgram.exe.config" এর মতো একই জিনিসটির নামকরণ করা উচিত) ", ইত্যাদি ...)
BrainSlugs83

@ ব্রায়ানস্লাগস ৩৩ ধন্যবাদ সাথী, আমি ভাবছিলাম কেন আমার অ্যাপটি ক্র্যাশ হয়। এখন, দুই দিন সর্বত্র অনুসন্ধানের পরে, উত্তরটি এখানে মন্তব্যে রয়েছে। আমার সবেমাত্র "app.config" ছিল এবং কোনও "MyProgram.exe.config" নেই।
igমিগলিডিগলি

সমাধানের জন্য দয়া করে স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 1189364/… দেখুন । ধন্যবাদ
আরিফুল ইসলাম

উত্তর:


171

কনফিগারেশন সেটিং .AppSettings হয় অপ্রচলিত , আপনি ব্যবহার করা উচিত কনফিগারেশন ম্যানেজার .AppSettings পরিবর্তে (যদি আপনি একটি রেফারেন্স যোগ করার জন্য প্রয়োজন হবে System.Configuration )

int value = Int32.Parse(ConfigurationManager.AppSettings["StartingMonthColumn"]);

আপনার অ্যাপ্লিকেশন সেটিংসে এখনও পড়তে সমস্যা দেখা দিলে আপনার app.configফাইলটির নাম সঠিকভাবে দেওয়া আছে কিনা তা পরীক্ষা করে দেখুন । বিশেষত, এটি নির্বাহী সমাবেশ অনুযায়ী নামকরণ করা উচিত অর্থাত্ MyApp.exe.config, এবং একই ডিরেক্টরিতে থাকা উচিত MyApp.exe


2
যদি কনফিগারেশনসেটেটিংস.এপসেটেটিংস ["স্টার্টিংমোনথকলাম"] নালিশ বা একটি খালি স্ট্রিং ফিরে আসে তবে আমি সন্দেহ করব যে ইনট 32. পার্স সেই মানগুলিকে বিশ্লেষণ করার চেষ্টা করার ক্ষেত্রে একটি ব্যতিক্রম ছুঁড়ে ফেলবে।
বিটারকোডার

@ বিটারকোডার, হ্যাঁ এটি তবে আপনার অ্যাপস কোডফাইগ ফাইলটিতে সর্বদা সঠিক কনফিগারেশন থাকা উচিত । ওপি যদি সেখানে হ্যান্ডলিংয়ের কোনও ফর্ম যুক্ত করতে চায় অর্থাত্ ট্রাইপার্সে তবে তা সব উপায়ে তারা পারে। যাইহোক, এই প্রশ্ন ছিল না।
জেমস

2
দ্রষ্টব্য যে আপনি সেটিংস.ডাফল্টের মাধ্যমেও মানগুলির শক্তিশালী টাইপিত সংস্করণগুলিতে অ্যাক্সেস পেতে পারেন ie (যেমন, এই ক্ষেত্রে এটি সেটিংস.ডাফল্ট St স্টার্টিংমোনথকলাম)।
BrainSlugs83

@ BrainSlugs83 নোট করুন যে আপনার অ্যাপ্লিকেশন সেটিংসের সাথে ব্যবহারকারীদের সেটিংস বিভ্রান্ত করছে । আপনি যদি অ্যাপ্লিকেশন সেটিংসে দৃ strongly়ভাবে টাইপ অ্যাক্সেস করতে চান তবে আপনাকে একটি কাস্টম কনফিগারেশন
জেমস

এটি সঠিক নয়, মানগুলি "ব্যবহারকারী" বা "অ্যাপ্লিকেশন" এ স্কোপ করা না থাকলেই এটি অ্যাপকনফাইগ থেকে মানগুলি টেনে আনবে (জিইউআই ডিজাইনারের কাছ থেকে, আপনি প্রতিটি সেটিংয়ের সুযোগ চয়ন করতে পারেন)।
BrainSlugs83

20

কেবলমাত্র ভবিষ্যতের রেফারেন্সের System.Configurationজন্য আপনার রেফারেন্স লাইব্রেরিতে আপনাকে যুক্ত করতে হবে:

এখানে চিত্র বর্ণনা লিখুন


2
আপনার উত্তরটি এখানে প্রথম উত্তরের চেয়ে ভাল, সকলেই এটি বলতে ভুলে গিয়েছিল যে আপনাকে একটি রেফারেন্স যুক্ত করতে হবে
প্রবন্ধ

19

কনফিগারেশনসেটেটিং.এপসেটেটিংগুলি হ্রাস করা হয়েছে , এখানে দেখুন:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx

বলেছিল, এটি এখনও কাজ করা উচিত।

কেবলমাত্র একটি পরামর্শ, তবে আপনি কি নিশ্চিত করেছেন যে আপনার অ্যাপ্লিকেশন কনফিগারেশনটিই আপনার সম্পাদনযোগ্য ব্যবহার করছেন?

একটি ডিবাগার সংযুক্ত করার চেষ্টা করুন এবং নিম্নলিখিত মানটি পরীক্ষা করে দেখুন:

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

এবং তারপরে কনফিগারেশন ফাইলটি খুলুন এবং বিভাগটি যাচাই করা আপনার প্রত্যাশা অনুযায়ী রয়েছে।


হাই বিটারকোডার যখন আমি অ্যাপডোমাইন.কেন্দ্রডোমেন.সেটআপআইফরমেশন.কনফিগারেশনফিলের জন্য মানটি পাওয়ার চেষ্টা করি তখন আমি সি পাই: \\ প্রোগ্রাম ফাইলগুলি \\ মাইক্রোসফ্ট অফিস \\ অফিসিয়াল ১১ \\ exCEL.EXE.config যা আমার কনফিগারেশন ফাইল নয় ... কী হওয়া উচিত আমি করি
সতীশ

এটি সঠিক কনফিগারেশন ফাইল ... এটি কেবল এমন হতে পারে যে আপনি এটি প্রত্যাশা করেননি। আসলে এই ক্ষেত্রে আমি বিশ্বাস করি সি: \ প্রোগ্রাম ফাইলগুলি \ মাইক্রোসফ্ট অফিস \ অফিস্ট ১১ \ এক্সেল.এক্সইএকফনফিগ হ'ল একটি বিশ্বব্যাপী কনফিগারেশন, এবং যদি আপনি আপনার সমাবেশের মতো একই ডিরেক্টরিতে একটি অনুরুপভাবে এক্সেল.এক্সইএকফিগ স্থাপন করেন তবে এটি হ'ল যেখানে আপনার অ্যাপ্লিকেশন সেটিংস থেকে পড়া হবে। : বিস্তারিত জানার জন্য এই লিঙ্ক দেখুন dotnet247.com/247reference/msgs/56/281797.aspx stackoverflow.com/questions/2288575/...
Bittercoder


7

এই:

Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);

আমার জন্য ভাল কাজ করে।

লক্ষ্য করুন ConfigurationManagerরয়েছে System.Configurationনামস্থান (যাতে আপনি সম্ভবত একটি চাইবেন using System.Configuration;বিবৃতি), এবং যে যেহেতু কি পড় একটি স্ট্রিং টাইপ হয়েছে আপনি বিশ্লেষণ করতে কি যদি আপনি একটি নম্বর হিসাবে এটি ব্যবহার করার জন্য পড়া প্রয়োজন হবে।

এছাড়াও, নিশ্চিত হয়ে নিন যে আপনি system.configuration.dllআপনার প্রকল্পে বা বিল্ড স্ক্রিপ্টে একটি রেফারেন্স হিসাবে সেট করেছেন।


কনফিগারেশন ম্যানেজার.অ্যাপসেটিংগুলি ব্যবহার করার জন্য রেফারেন্সটি কী যুক্ত করা উচিত et নেট 2.0 ফ্রেমওয়ার্ক
সতীশ

1
আপনার একটি রেফারেন্স দরকার System.Configuration.dllConfigurationManagerবর্গ .NET 2.0 যোগ করা হয়েছে, যাতে আপনি ঠিক আছে হওয়া উচিত।
মাইকেল বুড়

7

কারণটি সহজ, আপনার কাছে কলটি ConfigurationSettings.AppSettingsপ্রয়োজনীয় কনফিগার ফাইলটি ফিরিয়ে দিচ্ছে না। দয়া করে নীচের যে কোনও একটি উপায় চেষ্টা করুন:

  • আপনার অ্যাপ্লিকেশনটির কনফিগারেশনের সাথে আপনার অ্যাপ্লিকেশনটির এক্সি ফাইল হিসাবে একই নাম রয়েছে - এক্সটেনশন সহ। কনফিগ যুক্ত করা হয়েছে যেমন MyApp.exe.config নিশ্চিত করুন
  • অথবা আপনি ব্যবহার করতে পারেন ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]

আশাকরি এটা সাহায্য করবে


3

আপনার প্রকল্পটি পুনর্নির্মাণের চেষ্টা করুন - এটি App.configবিল্ড লাইব্রেরিতে "<YourProjectName.exe> ​​.config" এর লিখিত সামগ্রী অনুলিপি করে ।


2

আপনি যে অ্যাপ্লিকেশনটি চালনা করেন সে অ্যাপ্লিকেশন কনফিগ-এ কী "স্টার্টিংমোনথকালাম" কী যুক্ত করুন, উদাহরণস্বরূপ পরীক্ষা প্রকল্পের অ্যাপকনফাইগ-এ।

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