繁体   English   中英

launchSettings.json 和 appSettings.json 是如何工作的?

[英]how do launchSettings.json and appSettings.json work?

在创建新的 .NET 核心项目时,Rider 为我生成了一个launchSettings.jsonappSettings.jsonappSettings.Development.json文件 .NET Core 似乎能够自行处理这些配置,我无需自己编写任何代码。 这些文件都不会被版本控制忽略。

.NET Core 对我来说是新的,我只知道 Node 后端。 在节点中,我将安装dotenv package,创建一个内容为PORT=3000的新.env文件,将.env文件添加到 my.gitignore 并通过我的代码中的process.env.PORT访问端口。 这些配置值只对我有用,因为它们不在版本控制范围内。

比较方法有一些我不明白的事情:

  • .env文件应该在版本控制之外,但这些文件不是吗? 敏感信息呢? 还是我应该手动将它们添加到.gitignore?
  • 这里开始,明确建议避免使用多个配置文件。

    在十二因素应用程序中,环境变量是精细控件,每个控件都与其他环境变量完全正交。 它们从不组合为“环境”,而是为每个部署独立管理。 这是一个 model,随着应用程序在其生命周期内自然扩展到更多部署,它可以平滑扩展。

    那么删除appSettings.Development.json文件并坚持使用appSettings.json不是更好吗?

  • launchSettings.json包含有关应用程序配置的信息(例如"applicationUrl": "https://localhost:5001;http://localhost:5000", )并被版本控制获取。 如果我想更改端口或其他设置怎么办? 既然你知道这是一个 json 文件,我将无法为环境变量添加占位符,例如http://{{baseUrl}}:{{port}} 如何处理?
  • launchSettings.json配置文件有一个environmentVariables部分,初始值为"ASPNETCORE_ENVIRONMENT": "Development" ,但appSettings.json的目的是什么?

我认为事情比看起来容易,但这个概念让我感到困惑。 有人介意解释一下吗?

虽然我不知道 of.env 文件,但我对 rest 的回答如下:

When you have appsettings.json and appsettings.development.json and you specify in your ASPNETCORE_ENVIRONMENT that you are running development the settings in appsettings.development.json should overwrite the ones in appsettings.json while the ones not overwritten will be read from appsettings. json。 I however almost always use an appsettings.json containing only {} and then use appsettings.production.json and appsettings.development.json to be explicit about what settings go where.

关于安全性,我认为其目的是将机密添加到 CD 系统中,例如 Octopus deploy 或 teamcity,然后在部署解决方案时将占位符机密交换为真实机密。

Launchsettings.json 只涉及在本地运行项目而不发布,无论是通过 Rider 还是 Visual Studio,它都会告诉系统是否启动浏览器以及在哪个 url 上找到应用程序,端口只是默认值,可以在代码中覆盖,然后您必须匹配启动设置中新选择的端口才能按预期进行调试。

我希望这是有道理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM