2009-06-16 43 views
6

Tôi không hiểu những điều sau đây:Tệp cài đặt Visual Studio - cách hoạt động?

  1. Sự khác nhau giữa app.config (applicationname.exe.config) và tệp cài đặt là gì?
  2. Tôi không thể định vị tệp * .settings trong thư mục AppData của Windows7 trong tài khoản cụ thể (tôi nghe nói rằng nó nên được đặt ở đâu đó trên đó)?
  3. Giả sử rằng tệp * .settings ở đâu đó trên ổ cứng. Tại sao thời gian phát triển dữ liệu từ tập tin cài đặt được sao chép vào tập tin cấu hình ứng dụng?

Kind Regards PK

Trả lời

0
  1. Các file app.config đại diện cho các thiết lập bên trong ứng dụng, và sẽ áp dụng cho tất cả các phiên của ứng dụng. Tệp * .settings thường dành cho các cài đặt cụ thể cho việc sử dụng ứng dụng của người dùng nhất định.

  2. Hãy thử tìm trong thư mục Dữ liệu ứng dụng bên dưới Cài đặt cục bộ [«tên người dùng» \ Local Settings \ Application Data \ «tên ứng dụng ...»] thay vì thư mục Dữ liệu ứng dụng trực tiếp của người dùng [«username» \ Application Data ].

  3. Bản sao cài đặt trong tệp app.config cho tệp * .settings đã cho được sử dụng để khởi chạy nó lần đầu tiên các cài đặt đó được sử dụng; bao gồm cả trường hợp khi cài đặt mới được thêm vào và bản sao trước của tệp * .settings chưa có cài đặt mới.

Đây là liên kết để xem qua các cài đặt trong C#.

Using Settings in C# (MSDN)

+0

Vấn đề là tệp cài đặt không có ở đó. Không có thư mục ứng dụng nào trong: «username» \ Local Settings \ Application Data \:/Tôi đang sử dụng Windows 7. – pkolodziej

+0

Hãy thử «username» \ AppData \ Local thay thế. Thư mục này có thể bị ẩn, nhưng nên tồn tại. Bạn có thể bỏ đặt các mục bị ẩn trong chế độ xem cho trình khám phá. – meklarian

+0

Nó thực sự là không có! Bạn có biết bất kỳ công cụ nào mà tôi có thể sử dụng để giám sát nơi tệp exe đang đọc từ đâu không? – pkolodziej

5

Vì vậy, các thiết lập mặc định được lưu trữ trong các tập tin <exename>.config nằm trong cùng thư mục với tập tin thực thi.

Lý do bạn không thể tìm thấy tệp user.config là nó chỉ được tạo nếu bạn đã thực hiện thay đổi đối với mặc định. Cài đặt người dùng ghi đè các giá trị mặc định được lưu trữ trong tệp <exename>.config. Nếu không có thay đổi nào được thực hiện, thì sẽ không có tệp cấu hình người dùng nào tồn tại. Và ... một khi nó tồn tại, bạn sẽ nhận thấy rằng chỉ có các thiết lập đã được thay đổi sẽ hiển thị trong tập tin user.config.

Để kiểm tra điều này ... hãy tạo biến giả gọi là temp trong tệp Cài đặt của bạn. Khi bạn khởi động ứng dụng của bạn làm:

Settings1.Default.temp = Settings1.Default.temp + 1; 
Settings1.Default.Save(); 

Bây giờ bạn sẽ có một tập tin gọi là user.config tạo ra trong thư mục ApplicationData của người dùng đó trên Vista là: C:\Users\<username>\AppData\Local\<company>\<productname>

Dưới đây là một số mã tôi đã viết để giúp xác định nơi tất cả các SpecialFolders khác nhau, nơi trên hệ điều hành khác nhau.(Có thể muốn làm một tìm-thay thế cho log.Debug và thay thế bằng Console.WriteLine)

log.Debug("SpecialFolder.ApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
log.Debug("SpecialFolder.CommonApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); 
log.Debug("SpecialFolder.ProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)); 
log.Debug("SpecialFolder.CommonProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)); 
log.Debug("SpecialFolder.DesktopDirectory: " + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); 
log.Debug("SpecialFolder.LocalApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); 
log.Debug("SpecialFolder.MyDocuments: " + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); 
log.Debug("SpecialFolder.System: " + Environment.GetFolderPath(Environment.SpecialFolder.System)); 

Output Trên Windows Server 2003:

SpecialFolder.ApplicationData: "C:\Documents and Settings\blake\Application Data" 
SpecialFolder.CommonApplicationData: "C:\Documents and Settings\All Users\Application Data" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Documents and Settings\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Documents and Settings\blake\Local Settings\Application Data" 
SpecialFolder.MyDocuments: "C:\Documents and Settings\blake\My Documents" 
SpecialFolder.System: "C:\WINDOWS\system32" 

Output trên Vista:

SpecialFolder.ApplicationData: "C:\Users\blake\AppData\Roaming" 
SpecialFolder.CommonApplicationData: "C:\ProgramData" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Users\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Users\blake\AppData\Local" 
SpecialFolder.MyDocuments: "C:\Users\blake\Documents" 
SpecialFolder.System: "C:\Windows\system32" 
+1

Thêm một chút thông tin nhỏ tại đây. Kể từ khi câu hỏi là về Visual Studio tôi nghĩ nó thích hợp để đề cập đến rằng "" có thể là Microsoft_Corporation. thiết lập để làm ví dụ, tôi chỉ tìm thấy cho dự án hiện tại của tôi trong việc phát triển ở đây: "C: \ Users \ tony \ AppData \ Local \ Microsoft_Corporation \ DefaultDomain_Url_o3ghzq4nzylalqdtx0msfcg4cilbn2mv \ 12.0.31101.0 \ user.config" Đây là VS2013. – TonyG

Các vấn đề liên quan