เมื่อใช้ไฟล์ Settings.settings ใน. NET จริงๆแล้ว config ถูกเก็บไว้ที่ไหน? ฉันต้องการลบการตั้งค่าที่บันทึกไว้เพื่อกลับไปสู่สถานะเริ่มต้น แต่ไม่พบว่าเก็บไว้ที่ใด ... มีแนวคิดอย่างไร
เมื่อใช้ไฟล์ Settings.settings ใน. NET จริงๆแล้ว config ถูกเก็บไว้ที่ไหน? ฉันต้องการลบการตั้งค่าที่บันทึกไว้เพื่อกลับไปสู่สถานะเริ่มต้น แต่ไม่พบว่าเก็บไว้ที่ใด ... มีแนวคิดอย่างไร
คำตอบ:
ขึ้นอยู่กับว่าการตั้งค่าที่คุณเลือกอยู่ในขอบเขต "ผู้ใช้" หรือขอบเขต "แอปพลิเคชัน"
การตั้งค่าขอบเขตผู้ใช้จะถูกเก็บไว้ใน
C: \ Documents and Settings \ ชื่อผู้ใช้ \ Local Settings \ Application Data \ ApplicationName
คุณสามารถอ่าน / เขียนได้ที่รันไทม์
สำหรับ Vista และ Windows 7 โฟลเดอร์คือ
C: \ Users \ ชื่อผู้ใช้ \ AppData \ Local \ ApplicationName
หรือ
C: \ Users \ ชื่อผู้ใช้ \ AppData \ Roaming \ ApplicationName
การตั้งค่าขอบเขตแอ็พพลิเคชันจะถูกบันทึกไว้AppName.exe.config
และเป็นแบบอ่านอย่างเดียวที่รันไทม์
นี่คือตัวอย่างข้อมูลที่คุณสามารถใช้เพื่อรับตำแหน่งไฟล์ user.config โดยทางโปรแกรม:
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings (เช่น settings.settings) ใช้ PerUserRoamingAndLocal สำหรับการตั้งค่าผู้ใช้โดยค่าเริ่มต้น (ตามที่ฉันจำได้)
อัปเดต:แปลก แต่มีคำตอบที่ไม่ถูกต้องมากเกินไปที่นี่ หากคุณกำลังมองหาไฟล์การตั้งค่าขอบเขตผู้ใช้ของคุณ (user.config) ไฟล์นั้นจะอยู่ในโฟลเดอร์ต่อไปนี้ (สำหรับ Windows XP):
C: \ Documents and Settings \ (ชื่อผู้ใช้) \ Local Settings \ Application Data \ (company-name-if-มีอยู่) \ (app-name) .exe_ (Url | StrongName) _ (hash) \ (app-version) \
URL หรือ StrongName ขึ้นอยู่กับว่าคุณมีชื่อที่รัดกุมของแอสเซมบลีแอสเซมบลีหรือไม่
สมมติว่าคุณกำลังพูดถึงเดสก์ท็อปไม่ใช่เว็บแอปพลิเคชัน:
เมื่อคุณเพิ่มการตั้งค่าให้กับโปรเจ็กต์ VS จะสร้างไฟล์ที่มีชื่อapp.config
ในไดเร็กทอรีโปรเจ็กต์ของคุณและจัดเก็บการตั้งค่าในไฟล์นั้น นอกจากนี้ยังสร้างSettings.cs
ไฟล์ที่ให้ตัวเข้าถึงแบบคงที่สำหรับการตั้งค่าแต่ละรายการ
ในเวลาคอมไพล์ VS จะ (โดยค่าเริ่มต้นคุณสามารถเปลี่ยนสิ่งนี้ได้) คัดลอกapp.config
ไปยังไดเร็กทอรี build โดยเปลี่ยนชื่อให้ตรงกับไฟล์ปฏิบัติการ (เช่นหากไฟล์ปฏิบัติการของคุณตั้งชื่อfoo.exe
ไฟล์จะถูกตั้งชื่อfoo.exe.config
) ซึ่งเป็นชื่อไฟล์. NET configuration manager มองหาเมื่อดึงการตั้งค่าที่รันไทม์
หากคุณเปลี่ยนการตั้งค่าผ่าน VS การตั้งค่าแก้ไขก็จะอัปเดตทั้งสองและapp.config
Settings.cs
(หากคุณดูตัวเข้าถึงคุณสมบัติในโค้ดที่สร้างขึ้นSettings.cs
คุณจะเห็นว่ามีการทำเครื่องหมายด้วยแอตทริบิวต์ที่มีค่าเริ่มต้นของการตั้งค่าที่อยู่ในapp.config
ไฟล์ของคุณ) หากคุณเปลี่ยนการตั้งค่าโดยแก้ไขapp.config
ไฟล์โดยตรงSettings.cs
จะไม่ได้รับการอัปเดต แต่ค่าใหม่จะยังคงถูกใช้โดยโปรแกรมของคุณเมื่อคุณเรียกใช้เนื่องจากapp.config
จะถูกคัดลอกไปfoo.exe.config
ในเวลาคอมไพล์ หากคุณปิดสิ่งนี้ (โดยการตั้งค่าคุณสมบัติของไฟล์) คุณสามารถเปลี่ยนการตั้งค่าโดยแก้ไขfoo.exe.config
ไฟล์โดยตรงในไดเร็กทอรีบิลด์
จากนั้นมีการตั้งค่าขอบเขตผู้ใช้
การตั้งค่าขอบเขตแอปพลิเคชันเป็นแบบอ่านอย่างเดียว โปรแกรมของคุณสามารถแก้ไขและบันทึกการตั้งค่าขอบเขตผู้ใช้ซึ่งทำให้ผู้ใช้แต่ละคนมีการตั้งค่าของตนเอง การตั้งค่าเหล่านี้ไม่ได้จัดเก็บไว้ในfoo.exe.config
ไฟล์ (เนื่องจากใน Vista อย่างน้อยโปรแกรมไม่สามารถเขียนไปยังไดเร็กทอรีย่อยใด ๆ ที่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
โปรดทราบว่าหากคุณตั้งชื่อที่ชัดเจนให้กับโปรแกรมของคุณชื่อที่คาดเดายากจะต่อท้ายชื่อโปรแกรมในเส้นทางนี้
ในขณะที่ค้นหาข้อมูลเกี่ยวกับแฮชในชื่อโฟลเดอร์ฉันเจอ (ผ่านคำตอบนี้ ):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(แก้ไข: ลิงค์ Wayback Machine: 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
"
อยู่ในโฟลเดอร์ที่มีชื่อแอปพลิเคชันของคุณในโฟลเดอร์ Application Data ในโฟลเดอร์บ้านของผู้ใช้ (C: \ documents and settings \ user บน xp และ c: \ users \ user บน Windows Vista)
มีข้อมูลบางอย่างที่นี่ด้วย
PS: - ลองเข้าถึงโดย% appdata% ในกล่องรัน!
เอิ่มคุณใช้แค่ Settings.Default.Reset () เพื่อคืนค่า default settings ไม่ได้เหรอ?
การตั้งค่าทั้งหมดของคุณจะถูกเก็บไว้ในไฟล์. config ตามลำดับ
ไฟล์. settings จัดเตรียมคลาสที่พิมพ์ไว้อย่างชัดเจนสำหรับชุดการตั้งค่าที่อยู่ร่วมกัน แต่การตั้งค่าจริงจะถูกเก็บไว้ใน app.config หรือไฟล์. config ในแอปพลิเคชันของคุณ
หากคุณเพิ่มไฟล์. settings app.config จะถูกเพิ่มโดยอัตโนมัติเพื่อจัดการการตั้งค่าหากคุณยังไม่มี
หากไฟล์การตั้งค่าของคุณอยู่ในเว็บแอปไฟล์เหล่านี้จะอยู่ในไฟล์ web.config (ด้านล่างโปรเจ็กต์ของคุณหากอยู่ในโปรเจ็กต์ประเภทอื่นไฟล์เหล่านั้นจะอยู่ในไฟล์ app.config (อยู่ด้านล่างโปรเจ็กต์ของคุณด้วย) .
แก้ไข
ตามที่ระบุไว้ในความคิดเห็น: การตั้งค่าแอปพลิเคชันเวลาออกแบบของคุณอยู่ในไฟล์ app.config สำหรับแอปพลิเคชันอื่นที่ไม่ใช่เว็บแอปพลิเคชัน เมื่อคุณสร้างไฟล์ app.config จะถูกคัดลอกไปยังไดเรกทอรีการส่งออกและจะได้รับการตั้งชื่อyourexename .exe.config ในรันไทม์จะอ่านเฉพาะไฟล์ชื่อ yourexename.exe.config
สองไฟล์: 1) ไฟล์ app.config หรือ web.config การตั้งค่าของเธอสามารถปรับแต่งได้หลังจากสร้างด้วยโปรแกรมแก้ไขข้อความ 2) ไฟล์ settings.designer.cs ไฟล์นี้มีโค้ดที่สร้างขึ้นโดยอัตโนมัติเพื่อโหลดการตั้งค่าจากไฟล์กำหนดค่า แต่จะมีค่าเริ่มต้นด้วยในกรณีที่ไฟล์กำหนดค่าไม่มีการตั้งค่าเฉพาะ
ฉันรู้ว่าได้รับคำตอบแล้ว แต่คุณไม่สามารถซิงโครไนซ์การตั้งค่าในตัวออกแบบการตั้งค่าเพื่อย้ายกลับไปที่การตั้งค่าเริ่มต้นของคุณได้หรือไม่?