.NET'te bir Settings.settings dosyasını kullanırken, yapılandırma gerçekte nerede depolanır? Varsayılan duruma geri dönmek için kaydedilen ayarları silmek istiyorum, ancak nerede depolandığını bulamıyorum ... herhangi bir fikir?
.NET'te bir Settings.settings dosyasını kullanırken, yapılandırma gerçekte nerede depolanır? Varsayılan duruma geri dönmek için kaydedilen ayarları silmek istiyorum, ancak nerede depolandığını bulamıyorum ... herhangi bir fikir?
Yanıtlar:
Seçtiğiniz ayarın "Kullanıcı" kapsamında mı yoksa "Uygulama" kapsamında mı olduğuna bağlıdır.
Kullanıcı kapsamı ayarları şurada saklanır:
C: \ Documents and Settings \ kullanıcı adı \ Local Settings \ Application Data \ ApplicationName
Bunları çalışma zamanında okuyabilir / yazabilirsiniz.
Vista ve Windows 7 için klasör
C: \ Kullanıcılar \ kullanıcı adı \ AppData \ Local \ UygulamaAdı
veya
C: \ Kullanıcılar \ kullanıcı adı \ AppData \ Dolaşım \ UygulamaAdı
Uygulama kapsamı ayarları kaydedilir AppName.exe.config
ve çalışma zamanında salt okunurdur.
User.config dosya konumunu programlı olarak almak için kullanabileceğiniz kod parçacığı şu şekildedir:
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings (yani ayarlar.settings) varsayılan olarak kullanıcı ayarları için PerUserRoamingAndLocal kullanır (hatırladığım gibi).
Güncelleme: Garip ama burada çok fazla yanlış cevap var. Kullanıcı kapsamlı ayarlar dosyasını (user.config) arıyorsanız, aşağıdaki klasörde (Windows XP için) bulunacaktır:
C: \ Documents and Settings \ (kullanıcı adı) \ Local Settings \ Application Data \ (şirket-adı-varsa) \ (uygulama-adı) .exe_ (Url | GüçlüAdı) _ (karma) \ (uygulama sürümü) \
Url veya StrongName, uygulama derlemesi güçlü adınızın olup olmadığına bağlıdır.
Web uygulamaları yerine masaüstü hakkında konuştuğunuzu varsayarsak:
Bir projeye ayarlar eklediğinizde, VS app.config
proje dizininizde adlandırılmış bir dosya oluşturur ve ayarları bu dosyada depolar. Ayrıca Settings.cs
, bağımsız ayarlara statik erişim sağlayan dosyayı da oluşturur .
Derleme zamanında, VS (varsayılan olarak; bunu değiştirebilirsiniz) app.config
, adını yürütülebilir dosya ile eşleşecek şekilde değiştirerek (örneğin, yürütülebilir dosyanın adı verilmişse foo.exe
, dosya adlandırılacaktır foo.exe.config
), yani. NET yapılandırma yöneticisi, çalışma zamanında ayarları aldığında arar.
VS ayarları düzenleyicisi aracılığıyla bir ayarı değiştirirseniz, hem app.config
ve hem de Settings.cs
. (Oluşturulan koddaki özellik erişimcilerine bakarsanız, dosyanızda Settings.cs
bulunan ayarın varsayılan değerini içeren bir öznitelikle işaretlendiklerini görürsünüz app.config
.) app.config
Dosyayı doğrudan düzenleyerek bir ayarı değiştirirseniz , Settings.cs
güncellenmez, ancak yeni değer onu çalıştırdığınızda programınız tarafından kullanılmaya devam eder, çünkü derleme zamanında app.config
kopyalanır foo.exe.config
. Bunu kapatırsanız (dosyanın özelliklerini ayarlayarak), dosyayı doğrudan foo.exe.config
yapı dizininde düzenleyerek bir ayarı değiştirebilirsiniz .
Ardından, kullanıcı kapsamlı ayarlar vardır.
Uygulama kapsamı ayarları salt okunurdur. Programınız, kullanıcı kapsamı ayarlarını değiştirebilir ve kaydedebilir, böylece her kullanıcının kendi ayarlarına sahip olmasına izin verir. Bu ayarlar foo.exe.config
dosyada saklanmaz (en azından Vista altında programlar Program Files
yükseltmesiz herhangi bir alt dizine yazamazlar); kullanıcının uygulama verileri dizinindeki bir yapılandırma dosyasında saklanırlar.
Bu dosyanın yolu %appdata%\%publisher_name%\%program_name%\%version%\user.config
, örn C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config
. Programınıza güçlü bir ad verdiyseniz, güçlü adın bu yoldaki program adına ekleneceğini unutmayın.
Klasör adındaki hash hakkında bilgi edinmek için etrafta gezinirken karşılaştım ( bu cevapla ):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(düzenleme: Wayback Machine bağlantısı: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx )
user.config
Dosyaların tam yolu şuna benzer:
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
nerede
<Profile Directory>
- ya gezici profil dizini ya da yerel olandır. Ayarlar varsayılan olarak yereluser.config
dosyada saklanır . Dolaşım bir ayarı kaydetmek içinuser.config
dosyaya, sizinle ayarı işaretlemek gerekirSettingsManageabilityAttribute
ileSettingsManageability
karşı setteRoaming
.
<Company Name>
- tipik olarak tarafından belirtilen dizedirAssemblyCompanyAttribute
(dizenin gerektiği şekilde kaçtığı ve kesildiği uyarısıyla ve derlemede belirtilmezse, bir geri dönüş prosedürünüz vardır).
<App Name>
- tipik olarak tarafından belirtilen dizedirAssemblyProductAttribute
(şirket adıyla aynı uyarılar).
<Evidence Type>
ve<Evidence Hash>
- uygun uygulama alanı ve derleme izolasyonu sağlamak için uygulama alanı kanıtından elde edilen bilgiler.
<Version>
- genellikleAssemblyVersionAttribute
. Bu, yan yana dağıtılan uygulamanın farklı sürümlerini izole etmek için gereklidir.Dosya adı her zaman basittir '
user.config
'.
Kullanıcının ana klasöründeki Uygulama Verileri klasöründe uygulamanızın adının bulunduğu bir klasördedir (xp'de C: \ belgeler ve ayarlar \ kullanıcı ve Windows Vista'da c: \ users \ user).
Burada da bazı bilgiler var .
Not: - çalıştırma kutusunda% appdata% ile erişmeyi deneyin!
Erm, varsayılan ayarlarınızı geri yüklemek için sadece Settings.Default.Reset () 'i kullanamaz mısınız?
Tüm ayarlarınız ilgili .config dosyasında saklanır.
.Settings dosyası, birbirine ait bir dizi ayar için kesin olarak yazılmış bir sınıf sağlar, ancak gerçek ayarlar uygulamanızdaki app.config veya .config dosyasında saklanır.
Bir .settings dosyası eklerseniz, bir app.config dosyası yoksa, ayarları barındırmak için otomatik olarak eklenir.
Ayarlar dosyanız bir web uygulamasındaysa, web.config dosyasında (projenizin hemen altında. Başka bir proje türündeyse, app.config dosyasında (ayrıca projenizin altında) olacaktır. .
Düzenle
Yorumlarda belirtildiği gibi: tasarım zamanı uygulama ayarlarınız, web uygulamaları dışındaki uygulamalar için bir app.config dosyasındadır. Oluşturduğunuzda , app.config dosyası çıktı dizinine kopyalanır ve adınız .exe.config olarak adlandırılır . Çalışma zamanında, yalnızca yourexename.exe.config adlı dosya okunacaktır.
İki dosya: 1) Bir app.config veya web.config dosyası. Ayarlar, bir metin düzenleyiciyle oluşturulduktan sonra özelleştirilebilir. 2) settings.designer.cs dosyası. Bu dosya, ayarı yapılandırma dosyasından yüklemek için otomatik olarak oluşturulmuş bir koda sahiptir, ancak yapılandırma dosyasının belirli bir ayara sahip olmaması durumunda da varsayılan bir değer mevcuttur.
Zaten yanıtlandığını biliyorum, ancak varsayılan ayarlarınıza geri dönmek için ayar tasarımcısındaki ayarları senkronize edemez misiniz?