.NET Core 配置的环境变量与构建配置
Environment variables vs build configurations for .NET Core configuration
为开发和生产环境配置 .net 核心应用程序哪个更好:环境变量或构建配置? IE。我可以将 appsettings.*environment*.json
绑定到这两种方式
我认为这取决于您对环境进展的看法。
如果它的构建配置,那么每个环境都有一个 'different' 可执行文件,因为你为每个环境重建它,所以你没有准确测试你将实际部署到生产环境的内容。
构建配置是 .NET Framework 时代的遗留物。虽然您可以在某种程度上在 .NET Core 应用程序中使用它们,但它们的实用性是有限的。关于唯一的用途是指令,您可以在其中执行以下操作:
#if DEBUG
// stuff
#endif
但是,首先,这是一个有问题的做法。
对于 .NET Core,范例是您为所有环境发布一次。环境的概念应该独立于代码本身。这可确保您的代码在从 dev/test 升级到 staging/QA 并最终进入生产环境时能够正常工作,因为代码就是代码。
除此之外,由于您专门询问配置,基于构建的配置在 .NET Core 中不起作用。没有 app.config/web.config,即使有 web.config,专门用于支持在 IIS 中托管,它实际上并没有被 .NET Core 以任何方式使用 - 只是 IIS。
因此,这个问题没有实际意义。对于 .NET Core 中的配置,您使用 Microsoft.Extensions.Configuration
,它本身依赖于环境的概念也是基于配置的,而不是基于构建的。实际上,您 没有 环境变量。环境也可以通过命令行传递。关键是它设置了 运行 时间,而不是编译时间。
为开发和生产环境配置 .net 核心应用程序哪个更好:环境变量或构建配置? IE。我可以将 appsettings.*environment*.json
绑定到这两种方式
我认为这取决于您对环境进展的看法。
如果它的构建配置,那么每个环境都有一个 'different' 可执行文件,因为你为每个环境重建它,所以你没有准确测试你将实际部署到生产环境的内容。
构建配置是 .NET Framework 时代的遗留物。虽然您可以在某种程度上在 .NET Core 应用程序中使用它们,但它们的实用性是有限的。关于唯一的用途是指令,您可以在其中执行以下操作:
#if DEBUG
// stuff
#endif
但是,首先,这是一个有问题的做法。
对于 .NET Core,范例是您为所有环境发布一次。环境的概念应该独立于代码本身。这可确保您的代码在从 dev/test 升级到 staging/QA 并最终进入生产环境时能够正常工作,因为代码就是代码。
除此之外,由于您专门询问配置,基于构建的配置在 .NET Core 中不起作用。没有 app.config/web.config,即使有 web.config,专门用于支持在 IIS 中托管,它实际上并没有被 .NET Core 以任何方式使用 - 只是 IIS。
因此,这个问题没有实际意义。对于 .NET Core 中的配置,您使用 Microsoft.Extensions.Configuration
,它本身依赖于环境的概念也是基于配置的,而不是基于构建的。实际上,您 没有 环境变量。环境也可以通过命令行传递。关键是它设置了 运行 时间,而不是编译时间。