Khi sử dụng tệp Settings.settings trong .NET, cấu hình thực sự được lưu trữ ở đâu? Tôi muốn xóa các cài đặt đã lưu để quay lại trạng thái mặc định, nhưng không tìm thấy nơi lưu trữ nó ... có ý kiến gì không?
Khi sử dụng tệp Settings.settings trong .NET, cấu hình thực sự được lưu trữ ở đâu? Tôi muốn xóa các cài đặt đã lưu để quay lại trạng thái mặc định, nhưng không tìm thấy nơi lưu trữ nó ... có ý kiến gì không?
Câu trả lời:
Nó phụ thuộc vào việc cài đặt bạn đã chọn nằm ở phạm vi "Người dùng" hay "Ứng dụng".
Cài đặt phạm vi người dùng được lưu trữ trong
C: \ Documents and Settings \ username \ Local Settings \ Application Data \ ApplicationName
Bạn có thể đọc / ghi chúng trong thời gian chạy.
Đối với Vista và Windows 7, thư mục là
C: \ Users \ tên người dùng \ AppData \ Local \ ApplicationName
hoặc là
C: \ Users \ tên người dùng \ AppData \ Roaming \ ApplicationName
Cài đặt phạm vi ứng dụng được lưu trong AppName.exe.config
và chúng chỉ được đọc trong thời gian chạy.
Đây là đoạn mã bạn có thể sử dụng để lấy vị trí tệp user.config theo chương trình:
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings (tức là settings.settings) sử dụng PerUserRoamingAndLocal cho cài đặt người dùng theo mặc định (như tôi đã nhớ).
Cập nhật: Lạ nhưng có quá nhiều câu trả lời sai ở đây. Nếu bạn đang tìm kiếm tệp cài đặt phạm vi người dùng (user.config), tệp này sẽ nằm trong thư mục sau (dành cho Windows XP):
C: \ Documents and Settings \ (tên người dùng) \ Local Settings \ Application Data \ (tên công ty-nếu-tồn tại) \ (app-name) .exe_ (Url | StrongName) _ (hash) \ (app-version) \
Url hoặc StrongName phụ thuộc vào việc bạn có lắp ráp ứng dụng tên mạnh hay không.
Giả sử rằng bạn đang nói về máy tính để bàn chứ không phải ứng dụng web:
Khi bạn thêm cài đặt vào một dự án, VS sẽ tạo một tệp có tên app.config
trong thư mục dự án của bạn và lưu trữ các cài đặt trong tệp đó. Nó cũng xây dựng Settings.cs
tệp cung cấp các trình truy cập tĩnh cho các cài đặt riêng lẻ.
Tại thời điểm biên dịch, VS sẽ (theo mặc định; bạn có thể thay đổi điều này) sao chép app.config
vào thư mục xây dựng, thay đổi tên của nó để phù hợp với tệp thực thi (ví dụ: nếu tệp thực thi của bạn được đặt tên foo.exe
, tệp sẽ được đặt tên foo.exe.config
), đó là tên. Trình quản lý cấu hình NET sẽ tìm kiếm khi nó truy xuất cài đặt trong thời gian chạy.
Nếu bạn thay đổi cài đặt thông qua trình chỉnh sửa cài đặt VS, nó sẽ cập nhật cả app.config
và Settings.cs
. (Nếu bạn nhìn vào các trình truy cập thuộc tính trong mã được tạo trong Settings.cs
, bạn sẽ thấy rằng chúng được đánh dấu bằng thuộc tính chứa giá trị mặc định của cài đặt có trong app.config
tệp của bạn .) Nếu bạn thay đổi cài đặt bằng cách chỉnh sửa app.config
tệp trực tiếp, Settings.cs
sẽ không được cập nhật, nhưng giá trị mới sẽ vẫn được chương trình của bạn sử dụng khi bạn chạy nó, vì app.config
được sao chép vào foo.exe.config
lúc biên dịch. Nếu bạn tắt tính năng này (bằng cách đặt thuộc tính của tệp), bạn có thể thay đổi cài đặt bằng cách chỉnh sửa trực tiếp foo.exe.config
tệp trong thư mục bản dựng.
Sau đó, có cài đặt phạm vi người dùng.
Cài đặt phạm vi ứng dụng ở chế độ chỉ đọc. Chương trình của bạn có thể sửa đổi và lưu cài đặt phạm vi người dùng, do đó cho phép mỗi người dùng có cài đặt của riêng mình. Các cài đặt này không được lưu trữ trong foo.exe.config
tệp (ít nhất vì trong Vista, các chương trình không thể ghi vào bất kỳ thư mục con nào Program Files
mà không có độ cao); chúng được lưu trữ trong một tệp cấu hình trong thư mục dữ liệu ứng dụng của người dùng.
Đường dẫn đến tệp đó là %appdata%\%publisher_name%\%program_name%\%version%\user.config
, ví dụ C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config
. Lưu ý rằng nếu bạn đã đặt tên mạnh cho chương trình của mình, thì tên mạnh sẽ được thêm vào tên chương trình trong đường dẫn này.
Trong khi duyệt xung quanh để tìm hiểu về hàm băm trong tên thư mục, tôi đã xem qua (thông qua câu trả lời này ):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(chỉnh sửa: Liên kết Wayback Machine: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx )
Đường dẫn chính xác của các
user.config
tệp trông giống như sau:
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
Ở đâu
<Profile Directory>
- là thư mục hồ sơ chuyển vùng hoặc thư mục cục bộ. Cài đặt được lưu trữ theo mặc định tronguser.config
tệp cục bộ . Để lưu một cài đặt tronguser.config
tệp chuyển vùng , bạn cần đánh dấu cài đặtSettingsManageabilityAttribute
vớiSettingsManageability
cài đặt thànhRoaming
.
<Company Name>
- thường là chuỗi được chỉ định bởiAssemblyCompanyAttribute
(với cảnh báo rằng chuỗi được thoát và cắt bớt khi cần thiết, và nếu không được chỉ định trên hợp ngữ, chúng tôi có một thủ tục dự phòng).
<App Name>
- thường là chuỗi được chỉ định bởiAssemblyProductAttribute
(lưu ý tương tự như đối với tên công ty).
<Evidence Type>
và<Evidence Hash>
- thông tin thu được từ bằng chứng miền ứng dụng để cung cấp miền ứng dụng phù hợp và cách ly lắp ráp.
<Version>
- thường là phiên bản được chỉ định trongAssemblyVersionAttribute
. Điều này là bắt buộc để cô lập các phiên bản khác nhau của ứng dụng được triển khai song song.Tên tệp luôn đơn giản là '
user.config
'.
Nó nằm trong một thư mục có tên ứng dụng của bạn trong thư mục Dữ liệu Ứng dụng trong thư mục chính của Người dùng (C: \ Documents and settings \ user trên xp và c: \ users \ user trên Windows Vista).
Cũng có một số thông tin ở đây .
Tái bút: - hãy thử truy cập nó bằng% appdata% trong hộp chạy!
Erm, bạn có thể không chỉ sử dụng Settings.Default.Reset () để khôi phục cài đặt mặc định của mình không?
Tất cả cài đặt của bạn được lưu trữ trong tệp .config tương ứng.
Tệp .settings chỉ đơn giản cung cấp một lớp được đánh mạnh cho một tập hợp các cài đặt thuộc về nhau, nhưng các cài đặt thực tế được lưu trữ trong app.config hoặc tệp .config trong ứng dụng của bạn.
Nếu bạn thêm tệp .settings, một app.config sẽ tự động được thêm vào nơi chứa cài đặt nếu bạn chưa có.
Nếu tệp cài đặt của bạn nằm trong ứng dụng web, chúng sẽ nằm trong tệp teh web.config (ngay bên dưới dự án của bạn. Nếu chúng nằm trong bất kỳ loại dự án nào khác, chúng sẽ nằm trong tệp app.config (cũng bên dưới dự án của bạn) .
Biên tập
Như đã chỉ ra trong các nhận xét: cài đặt ứng dụng thời gian thiết kế của bạn nằm trong tệp app.config cho các ứng dụng khác với ứng dụng web. Khi bạn xây dựng, tệp app.config được sao chép vào thư mục đầu ra và sẽ được đặt tên là yourexename .exe.config. Trong thời gian chạy, chỉ tệp có tên yourexename.exe.config mới được đọc.
Hai tệp: 1) Tệp app.config hoặc web.config. Các cài đặt cô ấy có thể được tùy chỉnh sau khi xây dựng bằng trình chỉnh sửa văn bản. 2) Tệp settings.designer.cs. Tệp này có mã được tạo tự động để tải cài đặt từ tệp cấu hình, nhưng giá trị mặc định cũng có trong trường hợp tệp cấu hình không có cài đặt cụ thể.
Tôi biết nó đã được trả lời nhưng bạn không thể đồng bộ hóa cài đặt trong trình thiết kế cài đặt để chuyển về cài đặt mặc định của mình?