我有一个简单的asp.net core项目。我想通过TeamCity将其部署到IIS。问题是在发布项目时我无法设置ASPNETCORE_ENVIRONMENT。我的目标是使用默认行为来加载appsettings文件:
此外,有必要在IIS上发布几个具有不同配置的站点:prod-zone-a、prod-zone-b等(相应的appsettings.{env.EnvironmentName}.json也看起来不同)。
我该如何实现这个想法?或者我应该放弃这个想法,采取另一种方式?
更新:
根据MS docs的说明,我已经在TeamCity中添加了单独的构建步骤(powershell命令)。
但它不起作用。
.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"
但它不起作用。
set ASPNETCORE_ENVIRONMENT=prod-zone-a
。然后,您需要确保将适用的“appsettings.prod-zone-a.json”文件作为项目的一部分。 - trevorc