| |
VB.NET - Ein- und UmsteigerConfigurationManager liest app.config nicht | | | Autor: asam | Datum: 13.01.10 22:59 |
| Hallo zusammen,
bin schon eine Weile an der Thematik dran, komme aber nicht wirklich weiter. Das Thema kommt im Forum auch schon vor, bei mir bekomme ich aber nicht das gewünschte Ergebnis.
Ich möchte einen Wert aus der app.confic (applicationSettings) auslesen. Ich beginne so:
Imports System.IO, System.Configuration, System.Collections.Specialized später als Versuche:
Dim Eintrag As String = System.Configuration.ConfigurationManager.AppSettings( _
"test")
MsgBox(Eintrag)
Dim appStgs As NameValueCollection = ConfigurationManager.AppSettings
For i As Integer = 0 To appStgs.Count - 1
MsgBox(appStgs(i))
Next Leider bringt keine der beiden Versuche ein Ergebnis. Wenn ich meine app.config anschaue ist der Eintrag "Test" aber vorhanden.
<userSettings>
<My.MySettings>
<setting name="pathSstMdb" serializeAs="String">
<value />
</setting>
</My.MySettings>
</userSettings>
<applicationSettings>
<My.MySettings>
<setting name="test" serializeAs="String">
<value>Teststring 2</value>
</setting>
</My.MySettings>
</applicationSettings> Die einzige Aufälligkeit: Wenn ich die app.config öffne erhalte ich Meldungen wie "Schematainformationen für das Element ..... konten nicht gefunden werden. Schließe ich die app.config erhalte ich keine Meldungen mehr. Dem Debugger scheinen diese Meldungen auch egal zu sein.
Kann jemand helfen?
Gru? asam | |
Re: ConfigurationManager liest app.config nicht | | | Autor: neoki | Datum: 14.01.10 09:05 |
| Also wenn du die Einstellungen (AppSettings) über VS erstellt hast
kannst du auf sie ganz einfach über
My.Settings.(Dein Einstellungsname) 'Ohne Klammern zugreifen.
Gruß Neoki
Beitrag wurde zuletzt am 14.01.10 um 09:06:39 editiert. | |
Re: ConfigurationManager liest app.config nicht | | | Autor: asam | Datum: 17.01.10 14:48 |
| Danke für Deine Antwort.
Ja, mit my.settings kann ich aber nur auf die benutzerdefinierten Einstellungen zugreifen. Ich habe meine Dokumentation so verstanden, das im Bereich appSettings in der app.config die anwendungsweiten Einträge gespeichert werden ... und die wollte ich auslesen.
Mittlerweile bin ich darauf gekommen, dass die Einträge gelesen werden, wenn ich Sie von Hand in die app.config im Bereich appSettings eintrage, aber
Dim Eintrag As String = System.Configuration.ConfigurationManager.AppSettings( _
"test") ließt den Wert trotzdem nicht ein.
Jemand noch eine Idee was ich noch so falsch mache?
Gru? asam | |
Re: ConfigurationManager liest app.config nicht | | | Autor: neoki | Datum: 18.01.10 11:42 |
| Also wenn dein Datei aufbau immer noch so ist
<userSettings>
<My.MySettings>
<setting name="pathSstMdb" serializeAs="String">
<value />
</setting>
</My.MySettings>
</userSettings>
<applicationSettings>
<My.MySettings>
<setting name="test" serializeAs="String">
<value>Teststring 2</value>
</setting>
</My.MySettings>
</applicationSettings> Funktioniert das auch nicht
Du musst um Einstellungen mit dem ConfigurationManager zu lesen so einen Aufbau haben
<configuration>
'... Weitere Einträge
<appSettings>
<add key ="Test" value ="Test 2"/>
</appSettings>
'... Weitere einträge
</configuration> dann Liest er die Einträge ein.
Gruß Neoki
Beitrag wurde zuletzt am 18.01.10 um 11:45:49 editiert. | |
Re: ConfigurationManager liest app.config nicht | | | Autor: asam | Datum: 19.01.10 12:35 |
| Danke für Eure Rückmeldungen:
Ich habe die Einträge in der app.config wie von neoki gepostet geändert und versuche mein Problem so zu beschreiben:
Ich mache ich einer "Haupt-"Klasse einen Eintrag:
Dim entry As String = "Testeintrag"
Dim cfg As Configuration = ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
cfg.AppSettings.Settings.Add(entry, "Neuer Eintrag")
cfg.Save(ConfigurationSaveMode.Modified)
Confi und möchte in einer anderen importierten Klasse den Wert abfragen:
Dim Eintrag As String = _
System.Configuration.ConfigurationManager.AppSettings("Testeintrag")
MsgBox(Eintrag) Das funktioniert jetzt so weit so gut, aber wenn ich mir die app.config dann in der Projektmappe öffne finde ich diesen Eintrag nicht in der Sektion <appSettings>. Ich dachte die Einträge in der app.config würden permanent in die xml-Datei geschrieben.
Wenn ich nun meine Klasse von einem Programmteil aufrufen ohne mit diesem vorher die EInträge in <appSettings> gemacht zu haben kann ich auf diese Einstellung "Testeintrag" nicht zu greifen. Trage ich "Testeintrag von Hand in die xml ein, steht er zur Verfügung.
Wenn ich diesen Eintrag per Code erledigenkönnte und er dort auch erscheint, wäre mein Problem gelöst, da ich von überall darauf zurgreifen könnte.
Hoffentlich konnte ich mein Problem jetzt besser beschreiben.
Gru? asam | |
Re: ConfigurationManager liest app.config nicht | | | Autor: DaveS (Moderator) | Datum: 19.01.10 13:06 |
| Die Settings im Designer heissen zwar app.config, daraus wird aber beim Starten des Projekts myprog.exe.config (oder beim Debuggen myprog.vshost.exe.config). Dort findest du neue Werte, immerhin bis die Anwendung wieder gestartet wird (von der IDE). AppSettings-Section wird aber grundsätzlich nicht mehr verwendet und die Datei steht ausserdem in dem Ausführungsverzeichnis, was meistens heutzutage von normalen Benutzern nicht geschrieben werden kann, daher ist eine solche Lösung nicht unbedingt optimal. Besser in vielen Fällen man verwendet die User Settings, die ins Benutzerprofil geschrieben werden, zB eine HashTable wenn man mehrere Werte dynamisch hinzufügen möchte, oder man lässt die Werte beim Administrator Install setzen.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: ConfigurationManager liest app.config nicht | | | Autor: asam | Datum: 22.01.10 08:34 |
| vielen Dank für Deine Antwort und sorry für die späte Rückmeldung aber ich musste mich erst einmal länger mit Deiner Information auseinander setzen.
Über die "Lage" der Configurationsdateien habe ich mir überhaupt noch keine Gedanken gemacht. Das wäre natürlich schief gegangen, da meine Nutzer nicht über Administratorenrechte verfügen. Ich habe also Deine Idee aufgegriffen und lege nun z.B. den Pfad zur Datenbank bei der Admin-Installation einmalig fest. Das scheint für mich erst einmal die einfachste und überschaubarste Lösung zu sein.
Vielen Dank noch einmal für Deine Anregungen.
Gru? asam | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|