首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多环境.NET核

多环境.NET核
EN

Stack Overflow用户
提问于 2018-01-25 08:52:09
回答 2查看 4.6K关注 0票数 5

我有一个.NET核心项目,我需要管理多个环境。假设我有开发、分期和生产环境。我必须为每个环境管理不同的变量。在我的Startup.cs中,我已经设法让appsettings.{env.EnvironmentName}.json工作了,所以当我用--launch-profile "ProfileName"启动应用程序时,我有了正确的配置。

现在我的问题是我必须部署这个解决方案,所以我必须做一些类似dotnet publish --launch-profile "ProfileName"的事情;我知道这个语法不存在,这就是我问这个问题的原因。由于同一台计算机上有多个部署(具有多个环境),因此我无法在主机ASPNETCORE_ENVIRONMENT上设置变量机器。我需要一种使用正确的配置文件进行部署的方法,以便正确的应用程序能够识别正确的appsettings.json。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-25 11:02:00

否,dotnet publish不提供为指定环境部署特定版本配置文件的可能性。我相信这是好的,因为遵循分离关注原则。

您仍然有几个选项可用于覆盖用例:

1.Powershell只允许使用PowerShell命令为当前的$Env会话设置环境变量。您可以创建简单的powershell启动程序,它设置ASPNETCORE_ENVIRONMENT环境变量,然后启动应用程序:

代码语言:javascript
复制
$Env:ASPNETCORE_ENVIRONMENT = "Production"
# Command for launching your application

ASPNETCORE_ENVIRONMENT环境变量只能在当前会话中访问,并且不会与应用程序的其他部署冲突。

该解决方案与Tomas提出的方法有些相似,但不需要为每个环境创建服务帐户。

2.您还可以从配置文件的动态选择(appsettings.{env.EnvironmentName}.json)中转移。您可以将所有特定于环境的设置放到一个文件中(例如,appSettings.environemntSpecific.json),并且只部署某个特定环境(例如开发或生产)所需的一个版本。在这种情况下,根本不需要设置ASPNETCORE_ENVIRONMENT

为此,从BuildWebHost方法加载新的配置文件:

代码语言:javascript
复制
public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.AddJsonFile("appSettings.environemntSpecific.json", optional: true);
        }).UseStartup<Startup>()
        .Build();

这里的最后一步是将所需版本的appSettings.environemntSpecific.json文件放在dotnet publish命令之后。同样,dotnet publish没有为这种选择提供任何可能性,因此您应该使用最简单的copy命令自己进行选择。

票数 3
EN

Stack Overflow用户

发布于 2019-09-17 19:49:12

我知道这是个老生常谈的问题,但我的回答可能会对某人有所帮助,我也在做同样的事情,所以我只想分享一下我是如何解决这个问题的。

  1. 在项目属性中设置ASPNETCORE_ENVIRONMENT变量->调试
  2. 为每个环境创建应用程序设置.{env.EnvironmentName}.json文件
  3. 保持appsettings.json中的公共配置,并根据每个环境添加/覆盖。
  4. 通过Visual发布。
    • 右键单击Project ->选择发布
    • 选择“发布目标”作为文件夹
    • 将其发布到目标文件夹
    • 根据您的环境从已发布的代码中更新web.config中的web.config变量。

代码语言:javascript
复制
    <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development"/>
    </environmentVariables>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48438922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档