Wat is App.config in C#.NET? Hoe het te gebruiken?

Ik heb een project gedaan in C#.NET waarbij mijn databasebestand een Excel-werkmap is. Aangezien de locatie van de verbindingsreeks hard gecodeerd is in mijn codering, is er geen probleem om deze in mijn systeem te installeren, maar voor andere systemen wel.

Is er een manier om de gebruiker een keer te vragen een pad in te stellen nadat de installatie van de applicatie is voltooid?

De antwoorden die ik kreeg waren “Gebruik App.Config”… kan iemand vertellen wat deze App.config is en hoe ik het hier in mijn context kan gebruiken?


Antwoord 1, autoriteit 100%

Op zijn eenvoudigst is app.config een XML-bestand met veel vooraf gedefinieerde configuratiesecties en ondersteuning voor aangepaste configuratiesecties. Een “configuratiesectie” is een XML-fragment met een schema dat bedoeld is om een bepaald type informatie op te slaan.

Instellingen kunnen worden geconfigureerd met behulp van ingebouwde configuratiesecties zoals connectionStringsof appSettings. U kunt uw eigen aangepaste configuratiesecties toevoegen; dit is een geavanceerd onderwerp, maar zeer krachtig voor het bouwen van sterk getypte configuratiebestanden.

Webapplicaties hebben meestal een web.config, terwijl Windows GUI/service-applicaties een app.config-bestand hebben.

Configuratiebestanden op toepassingsniveau nemen instellingen over van algemene configuratiebestanden, bijv. de machine.config.

Lezen van de App.Config

Verbindingsreeksen hebben een vooraf gedefinieerd schema dat u kunt gebruiken. Merk op dat dit kleine fragment eigenlijk een geldig app.config (of web.config) bestand is:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

Nadat u uw app.config hebt gedefinieerd, kunt u het lezen in de code met behulp van de ConfigurationManager klasse. Wordt niet geïntimideerd door de uitgebreide MSDN-voorbeelden; het is eigenlijk vrij eenvoudig.

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

Schrijven naar de app.config

Vaak wijzigen van de * .Config-bestanden is meestal geen goed idee, maar het klinkt alsof je alleen eenmalige setup wilt uitvoeren.

Zie: Verbindingsstring & amp; Reload app.config op looptijd die beschrijft hoe u de connectionStringssectie van het * -config-bestand bij runtime bijwerken.

Merk op dat u van Iigent dergelijke configuratie van een eenvoudige installateur zou uitvoeren.

Locatie van de app.config op runtime

Q : Stel dat ik handmatig enkele <value>in app.config verander, sla het op en sluit het dan. Als ik nu naar mijn bakmap ga en het .exe-bestand van hier start, waarom weerspiegelt het niet de toegepaste veranderingen?

A: wanneer u een toepassing compileert, wordt app.config gekopieerd naar de bin-directory1met een naam die overeenkomt met uw exe. Als uw exe bijvoorbeeld “test.exe” heette, zou er een “text.exe.config” in uw bin-map moeten staan. U kunt de configuratie wijzigen zonder opnieuw te compileren, maar u moet het configuratiebestand bewerken dat tijdens het compileren is gemaakt, niet het oorspronkelijke app.config.

1: Houd er rekening mee dat web.config-bestanden niet worden verplaatst, maar in plaats daarvan op dezelfde locatie blijven tijdens het compileren en implementeren. Een uitzondering hierop is wanneer een web.config getransformeerd is .

.NET Core

Er zijn nieuwe configuratie-opties geïntroduceerd met .NET Core. De manier waarop *.config-bestanden werken lijkt niet te zijn veranderd, maar ontwikkelaars zijn vrij om nieuwe, flexibelere configuratieparadigma’s te kiezen.


Antwoord 2, autoriteit 30%

Simpelweg, App.configis een op XMLgebaseerde bestandsindeling die de Applicatieniveau-configuratiesbevat.

Voorbeeld:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

Je hebt toegang tot de configuraties met ConfigurationManagerzoals weergegeven in het stukje codefragment hieronder:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

Opmerking:ConfigurationSettingsis een verouderde methode om configuratie-informatie op te halen.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];

Antwoord 3, autoriteit 2%

Om nog iets toe te voegen dat ik in alle antwoorden miste – ook al lijkt het dwaas en voor de hand liggend zodra je het weet:

Het bestand moet de naam “App.config” of “app.config” hebben en kan zich in uw project op hetzelfde niveau bevinden als b.v. Programma.cs.

Ik weet niet of andere locaties mogelijk zijn, andere namen (zoals application.conf, zoals gesuggereerd in de ODP.net-documentatie) werkten niet voor mij.

PS. Ik ben begonnen met Visual Studio Code en heb een nieuw project gemaakt met “dotnet new”. Er wordt in dit geval geen configuratiebestand gemaakt, ik weet zeker dat er andere gevallen zijn.
PPS. Mogelijk moet u een nuget-pakket toevoegen om het configuratiebestand te kunnen lezen, in het geval van .NET CORE zou dit “dotnet add package System.Configuration.ConfigurationManager –version 4.5.0” zijn


Antwoord 4, autoriteit 2%

App.Config is een XML-bestand dat wordt gebruikt als configuratiebestand voor uw toepassing. Met andere woorden, u slaat er elke instelling in op die u mogelijk wilt wijzigen zonder de code te hoeven wijzigen (en opnieuw te compileren). Het wordt vaak gebruikt om verbindingsreeksen op te slaan.

Zie dit MSDN-artikelover hoe u dat kunt doen.


Antwoord 5

Je hebt toegang tot sleutels in de App.Configmet:

ConfigurationSettings.AppSettings["KeyName"]

Bekijk deze thread


Antwoord 6

Nog één punt toevoegen

Met app.config kunt u op een of andere manier de toegang tot applicaties beheren, u wilt een bepaalde wijziging toepassen op het volledige app-configuratiebestand van de applicatie en u hebt toegang tot de instellingen zoals hieronder
ConfigurationSettings.AppSettings[“Sleutel”]

Other episodes