.NET- এ সেটিংস.সেটেটিং ফাইল ব্যবহার করার সময় কনফিগারেশনটি আসলে কোথায় সংরক্ষণ করা হয়?


100

.NET- এ সেটিংস.সেটেটিং ফাইল ব্যবহার করার সময় কনফিগারেশনটি আসলে কোথায় সংরক্ষণ করা হয়? আমি ডিফল্ট অবস্থায় ফিরে যেতে সংরক্ষিত সেটিংস মুছতে চাই, তবে এটি কোথায় সঞ্চিত আছে তা খুঁজে পাচ্ছি না ... কোনও ধারণা?

উত্তর:


100

এটি আপনার চয়ন করা সেটিংসটি "ব্যবহারকারীর" সুযোগ বা "অ্যাপ্লিকেশন" স্কোপে রয়েছে কিনা তা নির্ভর করে।

ব্যবহারকারীর সুযোগ

ব্যবহারকারীর স্কোপ সেটিংস সংরক্ষণ করা হয়

সি: u নথি এবং সেটিংস \ ব্যবহারকারীর নাম \ স্থানীয় সেটিংস \ অ্যাপ্লিকেশন ডেটা \ অ্যাপ্লিকেশন নাম ame

আপনি রানটাইমে এগুলি পড়তে / লিখতে পারেন।

ভিস্তা এবং উইন্ডোজ 7 এর জন্য, ফোল্ডারটি হ'ল

সি: \ ব্যবহারকারীদের \ ব্যবহারকারীর নাম \ অ্যাপডাটা \ স্থানীয় \ অ্যাপ্লিকেশননাম

বা

সি: \ ব্যবহারকারীদের \ ব্যবহারকারীর নাম \ অ্যাপডাটা \ রোমিং \ অ্যাপ্লিকেশন নাম

আবেদনের সুযোগ

অ্যাপ্লিকেশন স্কোপ সেটিংস এতে সংরক্ষণ করা হয় AppName.exe.configএবং এগুলি রানটাইম এ কেবলমাত্র পঠনযোগ্য।


20
ভিস্তা এবং উইন on এ ব্যবহারকারীর স্কোপ সেটিংসের ফোল্ডারটি সি: \ ব্যবহারকারীদের ব্যবহারকারীর নাম \ অ্যাপডাটা \ স্থানীয় \ অ্যাপ্লিকেশননাম \ প্রকাশক \ অ্যাপ্লিকেশননাম \ সংস্করণ বা সি: \ ব্যবহারকারীদের ব্যবহারকারীর নাম \ অ্যাপডাটা \ রোমিং \ অ্যাপ্লিকেশননাম \ প্রকাশক \ অ্যাপ্লিকেশননাম \ সংস্করণ সেটিংস ফলকে রোমিংয়ের সম্পত্তি মান।
জাকডেপ

4
এটির অ্যাডিন না হলে, কোনও ক্ষেত্রে এটি AppName.dll.config হবে
বেনামে টাইপ করুন

4
উইন্ডোজ on-এ আমার স্থানীয় ব্যবহারকারীকনফিগ সি-তে রয়েছে: \ ব্যবহারকারী \ <ব্যবহারকারীর নাম \ অ্যাপডাটা \ স্থানীয় \ প্রকাশক N অ্যাপ্লিকেশন নাম_ইড_ইভিডিশ্যাশ \ সংস্করণ
দ্য লোনলি কোডার

53

আপনি প্রোগ্রামালিটি ব্যবহারকারীর ফাইল কনফিগ ফাইলের অবস্থান পেতে স্নিপেটটি এখানে ব্যবহার করতে পারেন:

public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
  try
  {
    var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
    return UserConfig.FilePath;
  }
  catch (ConfigurationException e)
  {
    return e.Filename;
  }
}

অ্যাপ্লিকেশনসেটেটিং (যেমন সেটিংস.সেটেটিংস) ডিফল্টরূপে (যেমন আমার মনে আছে) ব্যবহারকারী সেটিংসের জন্য পেরুউসররোমিংএন্ডলোকল ব্যবহার করে।

আপডেট: অদ্ভুত তবে এখানে অনেকগুলি ভুল উত্তর রয়েছে। আপনি যদি ব্যবহারকারী স্কোপড সেটিংস ফাইল (ইউজার.কনফিগ) খুঁজছেন তবে এটি নীচের ফোল্ডারে (উইন্ডোজ এক্সপির জন্য) অবস্থিত হবে:

সি: \ ডকুমেন্টস এবং সেটিংস \ (ব্যবহারকারীর নাম) \ স্থানীয় সেটিংস \ অ্যাপ্লিকেশন ডেটা \ (সংস্থার নাম-যদি-উপস্থিত থাকে) \ (অ্যাপ্লিকেশন নাম) e (অ্যাপ্লিকেশন নাম) ex (অ্যাপ্লিকেশন নাম) _ (হ্যাশ) \ (অ্যাপ্লিকেশন সংস্করণ) \

ইউআরএল বা স্ট্রংনাম আপনার অ্যাসেম্বলিটির শক্তিশালী নাম প্রয়োগ করবেন কিনা তার উপর নির্ভর করে।


কোন পথে এই পথে হ্যাশটির অবদান কী? আমার অ্যাপ্লিকেশনটির পরবর্তী প্রতিটি প্রকাশের একটি আলাদা হ্যাশ মান পাচ্ছে, যা অ্যাপ্লিকেশনসেটিংজেসকে কল করে তোলে p : /
মাল রস

4
অ্যাপ্লিকেশন স্বাক্ষরিত হওয়ার সময় বা অ্যাপ্লিকেশন স্বাক্ষর না করা অবস্থায় পাথটি স্ট্রংনামের SHA1 হ্যাশ। এখানে আরও এমএসডিএন.মাইক্রোসফটকম /en-us/library/ms379611(v=vs.80).aspx
সালিস

20

ধরে নেওয়া যে আপনি ওয়েব অ্যাপ্লিকেশন নয় ডেস্কটপ সম্পর্কে কথা বলছেন:

আপনি যখন কোনও প্রকল্পে সেটিংস যুক্ত করেন, ভিএস app.configআপনার প্রকল্প ডিরেক্টরিতে একটি ফাইল তৈরি করে এবং সেই ফাইলটিতে সেটিংস সঞ্চয় করে। এটি Settings.csপৃথক সেটিংসে স্থির অ্যাক্সেসর সরবরাহ করে এমন ফাইলও তৈরি করে ।

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

আপনি যদি ভিএস সেটিংস সম্পাদকের মাধ্যমে কোনও সেটিংস পরিবর্তন করেন তবে এটি app.configএবং উভয়ই আপডেট হবে Settings.cs। (যদি আপনি উত্পাদিত কোডটিতে সম্পত্তি অ্যাক্সেসরের দিকে তাকান Settings.cs, আপনি দেখতে পাবেন যে সেগুলিকে আপনার app.configফাইলে থাকা সেটিংটির ডিফল্ট মান সম্বলিত একটি অ্যাট্রিবিউট দিয়ে চিহ্নিত করা হয়েছে )) আপনি যদি app.configসরাসরি ফাইল সম্পাদনা করে কোনও সেটিং পরিবর্তন করেন , Settings.csআপডেট করা হবে না, তবে নতুন প্রোগ্রামটি চালানোর সময় আপনার প্রোগ্রামটি এখনও ব্যবহার করবে কারণ সংকলনের সময় app.configঅনুলিপি হয়ে foo.exe.configযায়। আপনি যদি এটিটি বন্ধ করেন (ফাইলের বৈশিষ্ট্যগুলি সেট করে), আপনি foo.exe.configবিল্ড ডিরেক্টরিতে ফাইলটি সরাসরি সম্পাদনা করে একটি সেটিংস পরিবর্তন করতে পারেন ।

তারপরে ব্যবহারকারী-স্কোপযুক্ত সেটিংস রয়েছে।

অ্যাপ্লিকেশন-স্কোপ সেটিংস কেবল পঠনযোগ্য। আপনার প্রোগ্রামটি ব্যবহারকারী-স্কোপ সেটিংস সংশোধন ও সংরক্ষণ করতে পারে, এভাবে প্রতিটি ব্যবহারকারীর নিজস্ব সেটিংস থাকতে দেয়। এই সেটিংস foo.exe.configফাইলটিতে সংরক্ষণ করা হয় না (যেহেতু ভিস্তার অধীনে, কমপক্ষে, প্রোগ্রামগুলি Program Filesউচ্চতা ছাড়াই কোনও উপ-ডিরেক্টরিতে লিখতে পারে না ); তারা ব্যবহারকারীর অ্যাপ্লিকেশন ডেটা ডিরেক্টরিতে একটি কনফিগারেশন ফাইলে সংরক্ষণ করা হয়েছে।

এই ফাইলটির পথ হ'ল %appdata%\%publisher_name%\%program_name%\%version%\user.configউদাঃ C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config। মনে রাখবেন যে আপনি যদি আপনার প্রোগ্রামটিকে একটি শক্ত নাম দিয়ে থাকেন তবে শক্তিশালী নামটি এই পথে প্রোগ্রামের নামের সাথে যুক্ত করা হবে।


4
দেখে মনে হচ্ছে যে পথটির My_Company উপাদানটি মাইক্রোসফ্টে ডিফল্ট হবে। আমি এটি পরিবর্তন করার কোনও উপায় এখনও পাইনি যা আসলে কাজ করে, যদি কেউ জানে যে এটি যুক্ত করা ভাল।

4
ব্যবহারকারীর 6565869, আপনি কি ভিজ্যুয়াল স্টুডিওতে চেষ্টা করেছেন, প্রকল্পের সম্পত্তিটির অ্যাপ্লিকেশন ট্যাবটি খুলছেন, সমাবেশের তথ্য বোতামটি ক্লিক করুন এবং তারপরে আপনি কি সংস্থা পরিবর্তন করতে পারবেন? আপনার সমাধানের প্রতিটি প্রকল্পের জন্য এটি পুনরাবৃত্তি করুন
gg89

15

ফোল্ডারের নামটিতে হ্যাশটি বের করার জন্য আশেপাশে ব্রাউজ করার সময় আমি ( এই উত্তরটির মাধ্যমে ) পেরিয়ে এসেছি :

http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx

(সম্পাদনা: ওয়েব্যাক মেশিনের লিঙ্ক: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx )

user.configফাইলগুলির সঠিক পথটি দেখতে এমন কিছু দেখাচ্ছে:

<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config

কোথায়

<Profile Directory>- হয় রোমিং প্রোফাইল ডিরেক্টরি বা স্থানীয় একটি। স্থানীয় user.configফাইলে ডিফল্টরূপে সেটিংস সংরক্ষণ করা হয় । রোমিং user.configফাইলে একটি সেটিংস সঞ্চয় করতে , আপনাকে সেটটি SettingsManageabilityAttributeসহ SettingsManageabilityসেটটি চিহ্নিত করতে হবে Roaming

<Company Name>- সাধারণত স্ট্রিংটি নির্দিষ্ট করে দেওয়া হয় AssemblyCompanyAttribute(সতর্কতার সাথে যে স্ট্রিংটি প্রয়োজনীয়ভাবে কেটে যায় এবং কেটে যায়, এবং যদি সমাবেশে নির্দিষ্ট না করা হয় তবে আমাদের একটি ফ্যালব্যাক পদ্ধতি রয়েছে)।

<App Name>- সাধারণত স্ট্রিং দ্বারা নির্দিষ্ট করা হয় AssemblyProductAttribute(সংস্থার নাম হিসাবে একই সতর্কতা)।

<Evidence Type>এবং <Evidence Hash>- অ্যাপ্লিকেশন ডোমেন প্রমাণ থেকে প্রাপ্ত তথ্য সঠিক অ্যাপ্লিকেশন ডোমেন এবং সমাবেশ বিচ্ছিন্নতা সরবরাহ করতে।

<Version>- সাধারণত উল্লিখিত সংস্করণ AssemblyVersionAttribute। পাশাপাশি অ্যাপ্লিকেশনটির বিভিন্ন সংস্করণ বিচ্ছিন্ন করা প্রয়োজন।

ফাইলের নাম সর্বদা সহজ ' user.config' '


দুর্ভাগ্যক্রমে ব্লগের লিঙ্কটি নষ্ট হয়ে গেছে। আমি নিশ্চিত এটি আকর্ষণীয় ছিল।
UweBaemayr

3

এটি ব্যবহারকারীর হোম ফোল্ডারে অ্যাপ্লিকেশন ডেটা ফোল্ডারে আপনার অ্যাপ্লিকেশনটির নাম সহ একটি ফোল্ডারে রয়েছে (সি: \ নথি এবং সেটিংস x এক্সপি এবং সি: \ ব্যবহারকারী Windows ব্যবহারকারী Windows ব্যবহারকারী) উইন্ডোজ ভিস্তার ব্যবহারকারী)।

এখানেও কিছু তথ্য রয়েছে।

পিএস: - রান বাক্সে এটি% অ্যাপডাটা% দিয়ে অ্যাক্সেস করার চেষ্টা করুন!


2

হ্যাঁ, আপনি কি কেবল ডিফল্ট সেটিংসটি পুনরুদ্ধার করতে সেটিংস ব্যবহার করতে পারবেন না?


1

আপনার সমস্ত সেটিংস সম্পর্কিত। কনফিগ ফাইলে সংরক্ষিত আছে।

.Settings ফাইলটি কেবল একত্রে অন্তর্ভুক্ত সেটিংগুলির সেটগুলির জন্য দৃ strongly়ভাবে টাইপ করা শ্রেণীর সরবরাহ করে তবে প্রকৃত সেটিংসটি আপনার অ্যাপ্লিকেশনটিতে app.config বা একটি .config ফাইলে সঞ্চিত থাকে।

আপনি যদি একটি। সেটিং ফাইল যুক্ত করেন, যদি আপনার কাছে ইতিমধ্যে একটি না থাকে তবে একটি app.config সেটিংসটিতে স্বয়ংক্রিয়ভাবে যুক্ত হবে।


1

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

সম্পাদনা করুন

মতামত হিসাবে ইশারা করা হয়েছে: আপনার নকশা সময় অ্যাপ্লিকেশন সেটিংস ওয়েব অ্যাপ্লিকেশন ব্যতীত অন্যান্য অ্যাপ্লিকেশনগুলির জন্য একটি app.config ফাইলে রয়েছে। আপনি যখন বিল্ড করবেন তখন অ্যাপ.config ফাইলটি আউটপুট ডিরেক্টরিতে অনুলিপি করা হবে এবং আপনার নাম রাখা হবে yourexename .exe.config ig রানটাইমের সময় কেবলমাত্র yourexename.exe.config নামের ফাইলটি পড়তে হবে।


4
সঠিক না. চলমান অ্যাপ্লিকেশনগুলিতে কোনও app.config সেটিংস ফাইল নেই, কারণ app.config [appname] .exe.config এ পুনরায় নামকরণ করা হবে। এবং যাইহোক এই ফাইলটিতে সেটিংস.সেটিনগুলি থেকে কেবল অ্যাপ্লিকেশনস্কপযুক্ত সেটিংস থাকবে।
সালিশ

@ আরবিটার: সম্ভবত আমি প্রশ্নটি ভুল বুঝতে পেরেছি, তবে অ্যাডাম হাজির হয়েছিলেন নকশাকালীন সময়ের খেলাপি about এগুলি app.config এ সঞ্চিত আছে। বিল্ড-টাইমে, teh app.config ফাইলটি বিল্ড ডিরেক্টরিতে অনুলিপি করা হয় এবং নতুন নামকরণ করা হয় (theapp.exe.config)। তবে আপনি যদি সেই ফাইলটি সরাসরি সম্পাদনা করেন (এবং ভিজ্যুয়াল স্টুডিওতে কাজ করছেন), আপনি পরের বার নির্মাণের সময়ত লিখিত সামগ্রীগুলির ঝুঁকিটি চালান। নীচের লাইন: একটি মোতায়েন অ্যাপের জন্য (বা আপনি যদি আইডিই এর বাইরে চলতে থাকেন) তবে তেমন নাম.এক্সে.কনফিগ ফাইলটি পরিবর্তন করুন)। আপনি যদি ভিএস-এ কাজ করছেন, সেটিংসে ডিফল্ট মান বা অ্যাপকনফাইগ পরিবর্তন করুন
JMarsch

0

দুটি ফাইল: 1) একটি app.config বা ওয়েব কোডফাইগ ফাইল। একটি পাঠ্য সম্পাদকের সাহায্যে বিল্ড করার পরে তার সেটিংস কাস্টমাইজ করা যায়। 2) সেটিংস.ডিজাইনার.সি ফাইল। কনফিগার ফাইল থেকে সেটিংস লোড করার জন্য এই ফাইলটিতে অটোজেনেটেড কোড রয়েছে তবে কনফিগার ফাইলটিতে নির্দিষ্ট সেটিংস না থাকলে ডিফল্ট মানটি উপস্থিত থাকে।


0

আমি জানি এটি ইতিমধ্যে উত্তর পেয়েছে তবে আপনি কি আপনার ডিফল্ট সেটিংসে ফিরে যেতে সেটিংস ডিজাইনারের সেটিংসটিকে সিঙ্ক্রোনাইজ করতে পারবেন না?

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