我有简单的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"
但它不起作用。
答案 0 :(得分:1)
我找到的唯一方法(与此问题完全不同)是使用web.config转换that way(另一个关于SO的问题)
主要原因是,不仅需要使用必要的ASPNETCORE_ENVIRONMENT值发布项目,而且IIS上的应用程序运行时也需要此值