在构建配置中设置aspnetcore_environment

4
我有一个简单的asp.net core项目。我想通过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"

但它不起作用。

已经有一段时间没有使用Team City了,但您需要在执行“dotnet publish”之前通过命令行任务执行以下操作:set ASPNETCORE_ENVIRONMENT=prod-zone-a。然后,您需要确保将适用的“appsettings.prod-zone-a.json”文件作为项目的一部分。 - trevorc
1个回答

1
我找到的唯一方法(与此问题非常不同)是使用web.config转换那个方式(另一个我在SO上的问题)。
主要原因是需要在IIS上的应用程序运行时不仅发布具有必要的ASPNETCORE_ENVIRONMENT值的项目,而且还需要此值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接