developer tip

ASPNETCORE_ENVIRONMENT를 asp.net 핵심 응용 프로그램 게시에 고려하도록 설정하는 방법은 무엇입니까?

copycodes 2020. 11. 1. 18:15
반응형

ASPNETCORE_ENVIRONMENT를 asp.net 핵심 응용 프로그램 게시에 고려하도록 설정하는 방법은 무엇입니까?


내 asp.net 핵심 웹 응용 프로그램을 로컬 파일 시스템에 게시 할 때 항상 값이 "Production"인 production-config 및 ASPNETCORE_ENVIRONMENT 변수를 사용합니다.

디버깅뿐만 아니라 게시에도 고려되도록 ASPNETCORE_ENVIRONMENT 변수의 값을 어떻게 그리고 어디에 설정해야 합니까? 나는 이미 성공하지 않고 다음 옵션을 시도했습니다.

  • Windows 설정에서
  • .pubxml 파일
  • launchSettings.json에서
  • project.json에서

옵션 1:

Windows에서 ASPNETCORE_ENVIRONMENT 환경 변수를 설정하려면

명령 줄- setx ASPNETCORE_ENVIRONMENT "Development"

PowerShell- $Env:ASPNETCORE_ENVIRONMENT = "Development"

다른 OS의 경우 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments를 참조 하십시오.

Option2 :

ASPNETCORE_ENVIRONMENT를 사용하여 설정하려면 web.config다음 aspNetCore과 같이 추가하십시오 .

<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath=".\MyApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>

위에서 언급 한 옵션 외에 몇 가지 다른 솔루션이 있습니다.

1. 프로젝트 파일 (.CsProj) 파일 수정

MSBuild는 EnvironmentName배포하려는 환경에 따라 올바른 환경 변수를 설정하는 데 도움이 될 수 있는 속성을 지원합니다 . 환경 이름은 게시 단계 중에 web.config에 추가됩니다.

프로젝트 파일 (* .csProj)을 열고 다음 XML을 추가하기 만하면됩니다.

<!-- Custom Property Group added to add the Environment name during publish
  The EnvironmentName property is used during the publish for the Environment variable in web.config
  -->
  <PropertyGroup Condition=" '$(Configuration)' == '' Or '$(Configuration)' == 'Debug'">
    <EnvironmentName>Development</EnvironmentName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' != '' AND '$(Configuration)' != 'Debug' ">
    <EnvironmentName>Production</EnvironmentName>
  </PropertyGroup>

위의 코드는 Development디버그 구성 또는 구성이 지정되지 않은 경우 환경 이름을 추가 합니다. 다른 구성의 경우 환경 이름은 Production생성 된 web.config 파일에 있습니다. 자세한 내용은 여기

2. 게시 프로필에 EnvironmentName 속성을 추가합니다.

<EnvironmentName>게시 프로필에도 속성을 추가 할 수 있습니다 . Properties/PublishProfiles/{profilename.pubxml}프로젝트가 게시 될 때 web.config에 환경 이름이 설정됩니다. 에있는 게시 프로필 파일을 엽니 다 . 여기에 자세한 내용

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

3. dotnet publish를 사용하는 명령 줄 옵션

추가로, 속성 EnvironmentName을 명령 줄 옵션으로 명령에 전달할 수 있습니다 dotnet publish. 다음 명령은 Developmentweb.config 파일에있는 환경 변수를 포함 합니다.

dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development


Visual Studio IDE에서 설정하는 간단한 방법입니다.

프로젝트> 속성> 디버그> 환경 변수

여기에 이미지 설명 입력


사용 하여 설명서에 제공된 지침을 따라야 합니다 web.config.

<aspNetCore processPath="dotnet"
        arguments=".\MyApp.dll"
        stdoutLogEnabled="false"
        stdoutLogFile="\\?\%home%\LogFiles\aspnetcore-stdout">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

다른 환경 변수도 설정할 수 있습니다.

The ASP.NET Core Module allows you specify environment variables for the process specified in the processPath attribute by specifying them in one or more environmentVariable child elements of an environmentVariables collection element under the aspNetCore element. Environment variables set in this section take precedence over system environment variables for the process.


With the latest version of dotnet cli (2.1.400 or greater), you can just set this msbuild property $(EnvironmentName) and publish tooling will take care of adding ASPNETCORE_ENVIRONMENT to the web.config with the environment name.

Also, XDT support is available starting 2.2.100-preview1.

Sample: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md


This is how we can set in run-time:

public class Program
{
    public static void Main(string[] args)
    {
        Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development");

        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

이 변수를 Azure platorm에서 직접 설정하여 저에게 효과적이라는 것을 알았습니다 (사용하는 경우). 웹앱-> 구성-> 애플리케이션 설정을 선택하고 변수와 해당 값을 추가 한 다음 저장 버튼을 누릅니다.

참고 URL : https://stackoverflow.com/questions/41546943/how-to-set-aspnetcore-environment-to-be-considered-for-publishing-an-asp-net-cor

반응형