PDA

View Full Version : نوشتن در App.Config



RK977877
چهارشنبه 10 دی 1393, 17:06 عصر
با سلام خدمت دوستان
من وقتی در مد Runtime چیزی در داخل فایل App.config رایت میکنم
اضافه میشه ولی وقتی که برنامه رو میبندم تغییراتم پاک میشه
چطور میتونم تغییراتم رو داشته باشم

ghossein
چهارشنبه 10 دی 1393, 22:51 عصر
سلام
اگه براتون مقدوره ، کد ویرایش فایل App.Config رو بزارید تا بهتر بشه بهتون کمک کرد.

RK977877
پنج شنبه 11 دی 1393, 09:21 صبح
اخه این فایل مربوط تو مسیر برنلمه رو تغییر میده نه فایل اصلی رو
حالا چه کنم

ghossein
پنج شنبه 11 دی 1393, 10:34 صبح
سلام
اگه منظورتون اینه که App.Config تغییر نمی کنه این کد رو امتحان کن. در هنگام اجرای برنامه تنظیمات App.Config ، داخل فایل ProjectName.vshost.exe کش میشه ، و برنامه از این فایل به عنوان تنظیمات استفاده میکنه ، اگه می خواهید هم App.Config ویرایش کنید و تنظیمات برنامه رو رفرش کنید تا از اطلاعات بروز شده استفاده کنید ، باید فایل ProjectName.vshost.exe رو هم ویرایش کنید یعنی باید تغییرات به دو فایل ProjectName.vshost.exe و ProjectName.exe اعمال بشه.

برای مثال برای تغییر کانکشن استرینگ :

public static bool ChangeConnectionString(string Name, string value, string providerName, string AppName)
{
bool retVal = false;
try
{

string FILE_NAME = string.Concat(Application.StartupPath, "\\", AppName.Trim(), ".exe.Config"); //the application configuration file name
XmlTextReader reader = new XmlTextReader(FILE_NAME);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
reader.Close();
string nodeRoute = string.Concat("connectionStrings/add");

XmlNode cnnStr = null;
XmlElement root = doc.DocumentElement;
XmlNodeList Settings = root.SelectNodes(nodeRoute);

for (int i = 0; i < Settings.Count; i++)
{
cnnStr = Settings[i];
if (cnnStr.Attributes["name"].Value.Equals(Name))
break;
cnnStr = null;
}

cnnStr.Attributes["connectionString"].Value = value;
cnnStr.Attributes["providerName"].Value = providerName;
doc.Save(FILE_NAME);
retVal = true;
}
catch (Exception ex)
{
retVal = false;
//Handle the Exception as you like
}
return retVal;
}

RK977877
پنج شنبه 11 دی 1393, 10:54 صبح
مرسی از راهنمائیتون
ولی به نظر من درستش اینه که در قایل اصلی تغییرات ذخیره بشه به این دلیل که دیگه اطلاعات کش نشند که بعد از بستن برنامه از بین برند
و به صورت کلی در فایل اصلی باقی بمونند
حالا اگه مثال ماکلتری دارید برام بگذارید با تشکر

ghossein
پنج شنبه 11 دی 1393, 11:35 صبح
سلام

بله ، این سورسی که من گذاشتم تغییرات رو توی فایل app.config اعمال می کنه و اگه شما برنامه رو ببندید و فایل app.config رو با یه ویرایشگر باز کنید می بینید که تغییرات مد نظر شما ثبت شده.
وحالا اگه مجدداً برنامه رو اجرا کنید می بینید که محتویات فایل app.config درون فایل ProjectName.vshost.exe کش شده.(بعد اجرا برنامه فایل ProjectName.vshost.exe رو با یه ویرایشگر باز کنید و نتیجه رو ببینید)

RK977877
شنبه 13 دی 1393, 12:22 عصر
ببخشید میشه تگ مربوط به این رو هم بزارید
?: Name
تگ کامل از این آیتم

ghossein
شنبه 13 دی 1393, 13:14 عصر
سلام

?: Name
مربوط به کدوم قسمته app.config هست (کدوم تگه؟)
لطفاً متن کامل تگی رو که می خواهید تغییر بدید ، رو بنویسید.

RK977877
یک شنبه 14 دی 1393, 07:58 صبح
همین مثالی رو که در بالا ذکر کردید میخواستم تگه مربوط بهش رو هم بزارید به عنوان مثال عرض کردم
مرسی

RK977877
دوشنبه 15 دی 1393, 11:51 صبح
کسی هست که جواب بده ؟

SabaSabouhi
دوشنبه 15 دی 1393, 14:56 عصر
سلام
این کار خیلی ساده هست، فایل app.config یک فایل xml هست.
خیلی راحت بازش کنید، نود مورد نظر رو پیدا کرده و تغییر بدین
و بعد هم ذخیره کنید. به همین راحتی.

صبا صبوحی

RK977877
دوشنبه 15 دی 1393, 16:02 عصر
ببخشید من میخوام با کد نویسی این کار رو بکنم نه دستی ؟

SabaSabouhi
سه شنبه 16 دی 1393, 12:14 عصر
سلام
خوب منظور من هم همین بود. اگه با فایل‌های xml کار نکردی، مشکلت همینه.
خیلی از فایل‌هایی که باهاشون سر و کار داریم از جنس xml هستن. ( مثل فایل‌های html یا config )
دوستمون ghossein تو پست چهارم یه نمونه از کار کردن با xml رو نشون داده، از اون استفاده کن.
اگه اون رو متوجه نشدی بگو من یه مثال دیگه بزنم.
کار کردن با xmlها بسیار راحت، سریع و دوست‌داشتنی هست.

صبا صبوحی

RK977877
شنبه 20 دی 1393, 11:51 صبح
اگه ممکنه یه مثال برام بزارید دانلودش کنم

SabaSabouhi
شنبه 20 دی 1393, 14:47 عصر
سلام
پست دوستمون ghossein رو دوباره مطالعه کنید.

صبا صبوحی

RK977877
شنبه 20 دی 1393, 15:13 عصر
من تایپیک ایشون رو مطالعه کردم میخواستم تگ مربوط به این مثال رو ببینم اوکی ؟

mohammad2407
شنبه 22 فروردین 1394, 14:42 عصر
با سلام میشه نمونه برنامه پست شماره 4 قرار بدین

ghossein
شنبه 22 فروردین 1394, 16:35 عصر
سلام
خسته نباشید
نمونه برنامه ی که تغییراتی رو در فایل app.config در قسمت connectionstring اعمال می کنه .

موفق باشید%

LastAirbender
شنبه 22 فروردین 1394, 18:00 عصر
با سلام ، البته کدی که دوستمون گذاشتن درست هست ، منتها نیازی نیست به این فایل به دید یک XML صرف نگاه بکنید و برای تغییر این فایل شما می تونید از System.Configuration هم استفاده کنید..