Pau*_*ito 3 c# configuration console-application asp.net-core
我正在构建一个控制台应用程序来为我做一些数据库工作,并希望设置不同的 appsettings 文件来存储每个环境的适当连接字符串。我目前在我的 Main 函数中有这样的工作:
static void Main(string[] args)
{
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
var dbconnection = config["db"];
}
Run Code Online (Sandbox Code Playgroud)
但是,虽然这是有效的,但它只是一个全局 appsettings 文件。我希望能够为每个环境(例如appsettings.Dev.json、appsettings.Staging.json等)创建不同的应用程序设置,但是当我将应用程序运行到 addjsonfile 字符串时,我无法弄清楚如何提供配置管理器中的任何选择。
对于一些其他上下文,如果这会影响任何内容,我想稍后在应用程序中将其输入到我的 dbcontext 中。
您可以拥有任意数量的配置文件,只需向配置生成器添加一行代码,如下所示:
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", false)
.AddJsonFile($"appsettings.{environmentName}.json", true)
.Build();
Run Code Online (Sandbox Code Playgroud)
您还需要为您的应用程序配置环境名称,如下所示:
此处的其他答案很有帮助,但我想详细说明我为遇到此问题的其他人所做的工作。
您要做的第一件事是进入您的启动 settings.json 并添加如下内容:
{
"profiles": {
"DataMigration (Local)": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Local"
}
},
"DataMigration (Dev)": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Dev"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将使您能够访问环境变量,具体取决于您使用哪个配置文件启动项目(请注意,配置管理器在这里没有影响)。
然后您可以创建不同的 appsetting.json 文件。例如,我制作了一个appsettings.Local.json和一个appsettings.Dev.json文件。
appsettings.Local.json
{
"db": "connectionstringhere"
}
Run Code Online (Sandbox Code Playgroud)
和
appsettings.Dev.json
{
"db": "connectionstringhere"
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以访问运行应用程序的环境变量,如下所示:
{
"profiles": {
"DataMigration (Local)": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Local"
}
},
"DataMigration (Dev)": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Dev"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了更进一步,我没有在这里做,而是通过 db context 灵活地制作,如下所示:
{
"db": "connectionstringhere"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4099 次 |
| 最近记录: |