C# 如何使用config.json为Visual Studio 2015/DNX项目设置特定于环境的变量?

C# 如何使用config.json为Visual Studio 2015/DNX项目设置特定于环境的变量?,c#,json,azure,visual-studio-2015,dnx,C#,Json,Azure,Visual Studio 2015,Dnx,我有一个Visual Studio 2015解决方案,由针对DNX框架的项目组成。我一直在本地工作,但我计划部署到Azure环境(dev/test/prod)。当然,该解决方案会根据环境使用不同的数据库连接字符串和其他变量。过去,我使用云配置文件设置这些变量,使用CloudConfigurationManager读取它们 我知道我需要使用config.json文件。我的Startup.cs文件中有以下代码: public Startup(IHostingEnvironment env, IApp

我有一个Visual Studio 2015解决方案,由针对DNX框架的项目组成。我一直在本地工作,但我计划部署到Azure环境(dev/test/prod)。当然,该解决方案会根据环境使用不同的数据库连接字符串和其他变量。过去,我使用云配置文件设置这些变量,使用
CloudConfigurationManager
读取它们

我知道我需要使用config.json文件。我的Startup.cs文件中有以下代码:

public Startup(IHostingEnvironment env, IApplicationEnvironment app)
{
    Configuration = new ConfigurationBuilder(app.ApplicationBasePath)
        .AddJsonFile("config.json")
        .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables()
        .Build();

    Configuration.Set("ASPNET_ENV", "Development");
}

我的config.json文件当前是一个空对象
{}
。如何向该文件添加变量(语法?),如何从代码中访问变量?

您可以使用简单的旧JSON。例如,以下是如何定义连接字符串:

{
  "Foo": "Bar"
}
要访问配置值,请执行以下操作:

config.Get("username")
或:


您可以在此处找到更多信息:

注意启动代码中的这一行:

.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true)
这将添加一个附加的JSON配置文件,该文件的名称取决于您的环境名称。因此,请向项目中添加一个名为:

config.<environment-name>.json
config..json
并在其中设置详细信息,例如:

{
  "AppSettings": {
    "SomeVariable": "Blah"
  },
  "Data": {
    "YourConnectionString": {
      "ConnectionString": "<connection string here>"
    }
  }
}
{
“应用设置”:{
“SomeVariable”:“废话”
},
“数据”:{
“YourConnectionString”:{
“连接字符串”:”
}
}
}

对于阅读配置,这里有一个很好的答案:

您通读了吗?您已经有了加载特定于环境的JSON文件的代码-您有这样的文件吗?在堆栈交换标记中,三次倒勾不起作用-只需缩进代码块(或JSON,或其他)即可对其进行格式化。谢谢Erik,但我不明白您是如何获得
config
变量的?另外,我认为“username”应该是“Foo”才能得到字符串“Bar”?谢谢DavidG。我遵循了您链接到的答案中的示例,但它似乎过于繁琐-是否真的需要有一个“options”类并将每个配置键添加到我的startup类中的ConfigureServices方法中?我不能直接从文件中读取,或者这是一种糟糕的做法吗?我链接的答案中有很多代码,但总的来说,这是一种很好的方法。一旦你熟悉了DI,它实际上非常简单。至于不好的做法,直接从文件中读取并不是很糟糕,但是如果将来你决定将配置移动到数据库中,比如说,会发生什么呢?使用这种方法只需对一个文件进行简单的更改,但是如果您直接从文件中读取所有代码,您将需要进行更多的更改和测试。谢谢@DavidG,我看到了我的错误。它工作得很好。
{
  "AppSettings": {
    "SomeVariable": "Blah"
  },
  "Data": {
    "YourConnectionString": {
      "ConnectionString": "<connection string here>"
    }
  }
}