简体   繁体   English

在构建配置中设置aspnetcore_environment

[英]Set aspnetcore_environment within build configuration

I have simple asp.net core project. 我有简单的asp.net核心项目。 I want to deploy it via TeamCity to IIS. 我想通过TeamCity将其部署到IIS。 The problem is that I can't setup ASPNETCORE_ENVIRONMENT when publishing the project. 问题是我在发布项目时无法设置ASPNETCORE_ENVIRONMENT。 My goal is to use default behaviour to load appsettings files: 我的目标是使用默认行为来加载appsettings文件:

.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

I use .csproj instead of project.json and Web.config's section related to configuration looks like: 我使用.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>

Publish is executed like: 发布执行如下:

dotnet publish --configuration prod-zone-a --output <some-dir>

Also it's necessary to have several site on IIS published with different configurations: prod-zone-a, prod-zone-b, etc (corresponded appsettings.{env.EnvironmentName}.json looks different too) 此外,有必要在IIS上发布具有不同配置的多个站点:prod-zone-a,prod-zone-b等(对应的appsettings。{env.EnvironmentName} .json也看起来不同)

How can I implement such idea? 我该如何实现这样的想法? Or probably I should to throw this idea out and follow another way? 或者我可能应该抛出这个想法,并采取另一种方式?

Update: 更新:

According to MS docs I've added separate build step to TeamCity (powershell command): 根据MS docs,我为TeamCity添加了单独的构建步骤(powershell命令):

$Env:ASPNETCORE_ENVIRONMENT = "prod-zone-a"

but it doesn't work. 但它不起作用。

The only way I found (quite different to this question) is to use web.config transformations that way (another my question on SO) 我找到的唯一方法(与此问题完全不同)是以这种方式使用web.config转换(另一个关于SO的问题)

The main reason is that it's necessary not just publish the project with necessary ASPNETCORE_ENVIRONMENT value, but this value is also needed in application runtime on IIS 主要原因是,不仅需要使用必要的ASPNETCORE_ENVIRONMENT值发布项目,而且IIS上的应用程序运行时也需要此值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何为控制台应用程序设置 ASPNETCORE_ENVIRONMENT? - How to set ASPNETCORE_ENVIRONMENT for console application? 如何在运行时设置 ASPNETCORE_ENVIRONMENT 变量 - How to set ASPNETCORE_ENVIRONMENT variable at runtime 如何在 AzureDevops 中为 Dockerfile 设置环境变量(ASPNETCORE_ENVIRONMENT)? - How to set environment variables (ASPNETCORE_ENVIRONMENT) in AzureDevops for Dockerfile? 在T4模板中获取ASPNETCORE_ENVIRONMENT? - Get ASPNETCORE_ENVIRONMENT in T4 Template? 创建新的ASPNETCORE_ENVIRONMENT进行开发 - Create new ASPNETCORE_ENVIRONMENT for Development 是否可以重命名 ASPNETCORE_ENVIRONMENT 变量? - Is it possible to rename ASPNETCORE_ENVIRONMENT variable? 将ASPNETCORE_ENVIRONMENT设置为Production时,内联页面JQuery函数不起作用 - Inline page JQuery function does not work when set ASPNETCORE_ENVIRONMENT to Production 如何设置要考虑发布 ASP.NET Core 应用程序的 AS.NETCORE_ENVIRONMENT - How to set ASPNETCORE_ENVIRONMENT to be considered for publishing an ASP.NET Core application AZURE_FUNCTIONS_ENVIRONMENT 与 ASPNETCORE_ENVIRONMENT - AZURE_FUNCTIONS_ENVIRONMENT vs ASPNETCORE_ENVIRONMENT 使用 ASPNETCORE_ENVIRONMENT 覆盖 Azure 上的 appsettings.json - Override appsettings.json on Azure using ASPNETCORE_ENVIRONMENT
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM