在构建配置中设置aspnetcore_environment

时间:2017-03-27 18:39:02

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

我有简单的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"

但它不起作用。

1 个答案:

答案 0 :(得分:1)

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

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