Localiser proprement, et simplement son fichier de configuration sur Linux, et Windows en deux lignes de code seulement

En temps normal, un fichier de configuration pour Linux doit se trouver dans un dossier /etc/monapplication. Ce que peu de développeurs .net font. Si vous souhaitez respecter les habitudes de vos gentils administrateurs système, il faut utiliser ce dossier.

Avec Windows, le fichier de configuration se trouve généralement à la racine de l'application.

Concilier les deux est possible et ne demande aucun effort. Nul besoin de s'arracher les cheveux ni d'ajouter un code détectant l'OS. Il suffit de profiter des possibilités offertes par le ConfigurationBuilder, et la méthode AddJsonFile :

  • On effectue un appel de AddJsonFile pour chaque chemin possible.
  • On indique que chaque fichier de configuration est optionnel.

Voici un exemple d'application Console :


using Microsoft.Extensions.Configuration;

namespace ConsoleApp1
{
  internal class Program
  {
    static void Main(string[] args)
    {
      var configuration = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json", true)
        .AddJsonFile("/etc/monapplication/appsettings.json", true)
        .Build();
 
        var message = configuration.GetValue<String>("message");
 
        Console.WriteLine(message);
      }
  }
}


Avec le fichier de configuration appsettings.json:


{
  "message": "Coucou"
}

Au final :

  • S’il y a un fichier de configuration dans "/etc/monapplication", celui-ci sera utilisé (même s’il y en a un à la racine de l'application). Les dernières informations trouvées remplaçant les informations trouvées précédemment.
  • Sur Windows, le fichier de configuration utilisé sera celui qui se trouve à la racine de l'application.

Ce code est exploitable dès qu'une application utilise l'hôte générique destiné à l'injection de dépendances.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.