ASP.NET CORE

Configuración en ASP.NET Core Mediante Argumentos de Línea de Comandos

El proceso de configuración en ASP.NET Core mediante argumentos de línea de comandos, se realiza de forma implícita por medio de proveedores u orígenes de configuración, que en la mayoría de escenarios, es suficiente.

Sin embargo, hay casos estrictamente necesarios en los cuales se requiere permitir el paso de argumentos de línea de comandos de forma explícita, y para realizar esta tarea existe el método de extensión AddCommandLine perteneciente al proveedor CommandLineConfigurationProvider, el cual carga la configuración desde pares clave-valor en tiempo de ejecución.

¡Importante!
¡IMPORTANTE!

Si se usa la configuración predeterminada, los valores de configuración establecidos mediante argumentos de línea de comandos reemplazan al de los otros proveedores que tengan la misma clave.

Establecimiento de Argumentos Subir

Argumentos de línea de comando de ejemplo:

MongoDbSettings
MongoDbSettings
Host: localhost
Port: 27017

Para establecer los argumentos por línea de comando, hay que tomar en cuenta las siguientes reglas:

Establecimiento de Argumentos Vía launchSettings.json

Se puede establecer los argumentos por medio de la propiedad commandLineArgs del archivo launchSettings.json:

launchSettings.json
"profiles":
{
  "https": {
    "commandName": "Project",
    "dotnetRunMessages": true,      
    "launchBrowser": true,
    "applicationUrl": "https://localhost:7270;http://localhost:5245",
    "commandLineArgs": "MongoDbSettings:Host=10 MongoDbSettings:Port=20",
    "environmentVariables": {
       "ASPNETCORE_ENVIRONMENT": "Development"
    },
  }
}

O también mediante la interfaz gráfica de Iniciar Perfiles o Perfiles de Lanzamiento (Launch Profiles) de Visual Studio.

Launch Profiles

Ejemplo Subir

Con el objetivo de asignar solamente valores de configuración por medio de línea de comandos, se removieron o invalidaron todos los orígenes o proveedores que se cargan de forma predeterminada (Archivos appsettings.json, appsettings.{Environment}.json, variables de entorno, etc.) por medio del método Clear.

Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Configuration.Sources.Clear();
builder.Configuration.AddCommandLine(args);

builder.Services.ConfigureHttpJsonOptions(options =>
{
    options.SerializerOptions.WriteIndented = true;
});

var app = builder.Build();

app.MapGet("/", () => app.Configuration.AsEnumerable());
app.Run();

Resultado:

Resultado
[
  {
    "key": "MongoDbSettings",
    "value": null
  },
  {
    "key": "MongoDbSettings:Port",
    "value": "27017"
  },
  {
    "key": "MongoDbSettings:Host",
    "value": "localhost"
  }
]

Artículos Relacionados

Recursos Adicionales