如何配置 C# WinForms 应用程序以获取它部署到 Azure 上的 EnvironmentName?

How to configure C# WinForms application to get EnvironmentName that it is deployed to on Azure?

这个问题是关于:

问题 如何根据我们设置的不同订阅使 WinForms 应用程序环境感知?

上下文

关于如何跨多个订阅将 Winforms 应用程序部署到 Azure VM,我发现的文档和示例很少。例如,如果我将 Winforms 应用程序部署到标记为开发的订阅,那么它应该同时使用安全组和绑定到 Development 订阅的 SQL 服务器。冲洗并重复 UATProduction

目前,我们有一个 WinForms 应用程序,它有多个 appsettings.<env>.json 文件用于开发、UAT 和生产。我们正在使用 SlowCheetah 根据配置管理器所说的内容转换 appsettings.json 文件。这似乎与 MsBuild 管道任务中的 buildConfiguration 参数有关。 SQL 服务器连接字符串和安全组的 appsettings 文件中有不同的环境值。

它打算通过虚拟机部署的应用程序和环境是特定于订阅的。我们如何配置每个订阅以包含相应的环境名称,然后在运行时将其传递给应用程序?我们还会使用 SlowCheetah 并通过 MsBuild 任务中的 buildConfiguration 参数设置环境,还是我们会做其他事情?

似乎我们可以走那条路或者我们可以使用环境变量路线,但我不知道如何在 Azure 中为虚拟机设置环境变量。 非常感谢 我可以寻求的任何帮助、文档或示例!

注意:对于 Web 应用程序,这似乎非常简单。只需在项目和 Azure App Service 中的配置中设置 ASPNETCORE_ENVIRONMENT 变量。

如评论中所述,如果我对你的理解正确,你想在 Azure 门户中设置环境选项,并让它们对 VM 中的程序 运行 可见。

请注意,Azure 虚拟机只是基础架构即服务 - 它们有点裸露,只在顶部提供最少的 Azure 服务,因此没有虚拟机的概念生产或登台 - 这完全取决于您自己实施。

也就是说,您可以在 Azure 门户(并通过 PowerShell)中设置一些配置值,这些值将传递给 VM:这可以使用 VM 配置区域的“用户数据”区域来完成。

请注意,这仅适用于 ARM(Azure 资源管理器)VM,不适用于“经典”VM 或“云服务”AM。