2012-07-02 13 views
11

Bir app.config dosyasındaki bazı ayarların yönetimi için küçük bir GUI oluşturdum. GUI, bir metin düzenleyicide açmadan app.config dosyasındaki değerleri değiştirmeyi mümkün kılan, ürünümün bir parçası olarak piyasaya sürüldü.app.config uygulamasında configSection sürümüne özel bilgilerden kaçının.

özellikleri kuvvetle kodda yazılan yapım özel configSection uygulanır.

<section name="ConfigurationSettings" type="PerformanceDude.MSBuildShellExtension.Common.ConfigurationSettings, Common, Version=2.2.1.0, Culture=neutral, PublicKeyToken=1ab1b15115e63xxx" /> 

ben bu montaj yükseltme: Benim sorunum (ben GUI kaydederken) app.config dosyası güncellendiğinde, benim toplanma tam adı şöyle configSection yazılır yani, Yeni bir sürüm numarası, GUI kodu derleme sürümü, app.config dosyasındaki montaj referanslarıyla daha fazla uyuşmuyor.

config.Save(ConfigurationSaveMode.Minimal, true); 

Ben versiyon her şey güncellemesini değişen bir yükseltme komut yazmak istemiyorum: Bu benim ayarları kaydetmek nasıl

var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = ConfigFilePath }, ConfigurationUserLevel.None); 
var settings = Config.GetSection("ConfigurationSettings") as ConfigurationSettings; 

:

Bu benim ayarları yüklemek nasıl . Bu problem için herkes iyi bir çözüm biliyor mu?

+2

Seri hale getirmek ve yapılandırmayı kaydetmek için kullandığınız kodu eklemek mümkün mü lütfen? – dash

+0

Yükleme ve kaydetme kodu şimdi açıklamasında bulunuyor :) – ThomasArdal

+0

Bunun için bir çözüm buldunuz mu? – Zoomzoom

cevap

2

Daha önce benzer bir şey yapmak zorunda kaldım. Config dosyasını xml olarak yükledim, ilgili bölümleri nesnelere serileştirdikten sonra xml'ye geri koydum. Bu şekilde .net yapılandırma API'sinden kaçınmak, sürümle ilgili sorunlardan kaçının.

başka bir yaklaşım, yeni bir sürüme toplanma eski sürümünü yönlendirmektir. Derlemeniz GAC'de ise, bunu yapmak için ilke dosyalarını kullanabilir ve yeni bir sürümü dağıtırken bunları dağıtabilirsiniz; sonra yapılandırmadaki sürüm sayıları önemli değil.

+0

Aslında --- eğer yapılandırma DLL'sini GAC'ye eklerseniz, konfigürasyon bölümünüzü tanımlarken tam nitelikli bir isme ihtiyacınız yoktur. İhtiyacınız olan tek şey (sınıf, derleme) –

+0

Sure @SASS_Shooter, ancak bir politika dosyası varsa, sürüm numarasını oraya koyarsa dikkat etmesine gerek olmamasıdır. – tallseth

+1

DLL, GAC'de değil. Yapılandırmayı XML olarak yüklerseniz, veriler kuvvetle yazılmaz. C#. Bir config bölümünün kullanılmasıyla ilgili tüm fikir, her özelliği, güçlü yazılan özellikler içeren bir C# nesnesi üzerinden yükleme ve kaydetme özelliğiydi. Teklifiniz için teşekkür ederim, yine de :) – ThomasArdal