Как сохранить переменную среды в консольном приложении .NET Core? - PullRequest
0 голосов
/ 09 октября 2019

В соответствии с примером , найденным здесь , код требует установки переменной среды в командной строке перед запуском.

setx storageconnectionstring "<yourconnectionstring>"

Можно ли хранить эту переменную где-нибудь внутри консольного приложения .NET Core? Как к нему будет обращаться код, если это возможно?

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете установить среду через командную строку (cmd), powershell, используя следующий синтаксис:

setx variable_name "value_to_store_as_a_string"

или используя Свойства системы (щелкните правой кнопкой мыши Этот компьютер , выберите Свойства , затем нажмите Расширенные настройки системы ) и нажмите кнопку Переменные среды ... (вы можете увидеть все пользовательские и системные среды исоздавать, редактировать или удалять их). Они будут сохраняться между перезапусками.

Или, вернувшись к вашему вопросу, вы можете использовать файл конфигурации, такой как app.config (который является файлом XML) или appsettings.json (который является файлом JSON). Есть несколько способов получить к нему доступ. Вот пример файла appsettings.json :

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "ConnectionStrings": {
    "SQL": "Data Source=servername;Initial Catalog=databasename;User Id=myuser;Password=complexpassword;",
    "MongoDb": "mongodb://username:password@10.0.0.2:27017,10.0.0.3:27017,10.0.0.3:27017,10.0.00.4:27017/?replicaSet=myreplicaset"
  },
  "variable_name": "string_value",
  "boolean_variable_name": false,
  "integer_variable_name": 30
}
  1. var appSettings = ConfigurationManager.AppSettings;
    
    string myVariable = appSettings["variable_name"];
    
public static IConfigurationRoot Configuration;

static void Main(string[] args)
{
    var configBuilder = new ConfigurationBuilder()
        .SetBasePath(System.IO.Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json");

    Configuration = configBuilder.Build();

    string myVariable = hostContext.Configuration.GetValue<string>("variable_name");
}
static void Main(string[] args)
{
    new HostBuilder()
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        config.SetBasePath(basePath: Directory.GetCurrentDirectory());
        config.AddJsonFile("appsettings.json", optional: true);
        config.AddEnvironmentVariables();
    })
    .ConfigureServices((hostContext, services) =>
    {
        string myVariable = hostContext.Configuration.GetValue<string>("variable_name");
    })
    .RunConsoleAsync().Wait();
}

Вы можете прочитать еще один пост здесь .

Вы можете прочитать больше в документации MS по здесь .

...