c# - 在构建配置中设置 aspnetcore_environment

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

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

.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"

但它不起作用。

最佳答案

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

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

关于c# - 在构建配置中设置 aspnetcore_environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054050/

相关文章:

c# - 检查保存 Date 的字符串是否包含时间

c# - .net core2 Data isn't null 但 View Keep saying Data is Null

asp.net - 一种#if(调试符号),但用于 web.config 文件

c# - 无法读取配置部分 'customErrors',因为它缺少部分声明

asp.net - 从 URL 中删除尾部斜杠

c# - 如何获取 XML 格式的 SOAP header ?

c# - 当没有编码时,如何在整个项目文件中强制使用 C# 根命名空间?

c# - vstest.console.exe 未发现 xunit 测试

mysql - 无法找到名称为 MySql.Data.EntityFrameworkCore 的提供程序程序集

c# - 如何从 .Net Core 中的单独类库获取经过身份验证的用户