내 asp.net 핵심 웹 응용 프로그램을 로컬 파일 시스템에 게시 할 때 항상 값이 “Production”인 production-config 및 ASPNETCORE_ENVIRONMENT 변수를 사용합니다.
디버깅뿐만 아니라 게시에도 고려되도록 ASPNETCORE_ENVIRONMENT 변수의 값을 어떻게 그리고 어디에 설정해야 합니까? 나는 이미 성공하지 않고 다음 옵션을 시도했습니다.
- Windows 설정에서
- .pubxml 파일
- launchSettings.json에서
- project.json에서
답변
위에서 언급 한 옵션 외에 몇 가지 다른 솔루션이 있습니다.
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
. 다음 명령은 Development
web.config 파일에있는 환경 변수를 포함 합니다.
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
답변
옵션 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>
답변
답변
를 사용 하여 설명서에 제공된 지침을 따라야 합니다 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>
다른 환경 변수도 설정할 수 있습니다.
ASP.NET Core 모듈을 사용하면 aspNetCore 요소 아래에있는 environmentVariables 컬렉션 요소의 하나 이상의 environmentVariable 자식 요소에 지정하여 processPath 특성에 지정된 프로세스에 대한 환경 변수를 지정할 수 있습니다. 이 섹션에서 설정 한 환경 변수는 프로세스의 시스템 환경 변수보다 우선합니다.
답변
이것이 우리가 런타임에서 설정하는 방법입니다.
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();
}
답변
최신 버전의 dotnet cli (2.1.400 이상)에서는이 msbuild 속성을 설정하기 만하면 $(EnvironmentName)
게시 도구가 환경 이름을 사용하여 web.config에 ASPNETCORE_ENVIRONMENT를 추가하는 작업을 처리합니다.
또한 XDT 지원은 2.2.100-preview1부터 사용할 수 있습니다.
샘플 : https://github.com/vijayrkn/webconfigtransform/blob/master/README.md
답변
-
appsettings. *. json 파일을 만듭니다. (예 : appsettings.Development.json, appsettings.Staging.json, appsettings.Production.json)
-
해당 파일에 변수를 추가하십시오.
-
평소처럼 각 환경에 대해 별도의 게시 프로필을 만듭니다.
-
PublishProfiles / Development.pubxml을 엽니 다 (이름은 게시 프로필의 이름을 기반으로 함).
-
PublishProfile 에 태그를 추가 하여 EnvironmentName 변수 를 설정 하기 만하면 appsettings. *. json 파일 명명 규칙이 나머지 작업을 수행합니다.
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
“환경 설정”섹션을 참조하십시오.