【问题标题】:Set aspnetcore_environment within build configuration在构建配置中设置 aspnetcore_environment
【发布时间】:2018-08-25 06:00:52
【问题描述】:

我有一个简单的 asp.net 核心项目。我想通过 TeamCity 将其部署到 IIS。 问题是我在发布项目时无法设置 ASPNETCORE_ENVIRONMENT。 我的目标是使用默认行为来加载 appsettings 文件:

.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

我使用 .csproj 而不是 project.json,Web.config 的与配置相关的部分如下所示:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'prod-zone-a|AnyCPU' ">
    <IntermediateOutputPath>obj\Debug\netcoreapp1.1</IntermediateOutputPath>
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
    <DefineConstants>TRACE;DEBUG;NETCOREAPP1_1</DefineConstants>
</PropertyGroup>

发布执行如下:

dotnet publish --configuration prod-zone-a --output <some-dir>

此外,必须在 IIS 上发布多个具有不同配置的站点:prod-zone-a、prod-zone-b 等(对应的 appsettings.{env.EnvironmentName}.json 看起来也不同)

我怎样才能实现这样的想法? 或者也许我应该把这个想法抛在脑后,走另一条路?

更新:

根据MS docs,我已向 TeamCity 添加了单独的构建步骤(powershell 命令):

$Env:ASPNETCORE_ENVIRONMENT = "prod-zone-a"

但它不起作用。

【问题讨论】:

  • 有一段时间没有与团队城市合作,但您需要在“dotnet 发布”之前通过命令行任务执行:set ASPNETCORE_ENVIRONMENT=prod-zone-a。然后,您需要确保将适用的“appsettings.prod-zone-a.json”文件作为项目的一部分。

标签: c# asp.net-core web-config teamcity


【解决方案1】:

我发现的唯一方法(与这个问题完全不同)是使用 web.config 转换that way(我对 SO 的另一个问题)

主要原因是不仅需要发布具有必要 ASPNETCORE_ENVIRONMENT 值的项目,而且在 IIS 上的应用程序运行时也需要此值

【讨论】:

    猜你喜欢
    • 2014-05-14
    • 2018-09-15
    • 2017-03-09
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多