asp.net core - should - ¿Cómo configurar ASPNETCORE_ENVIRONMENT para que se considere para publicar una aplicación básica asp.net?
net core configure (7)
Cuando publico mi aplicación web central asp.net en mi sistema de archivos local, siempre toma la variable config-producción y ASPNETCORE_ENVIRONMENT con el valor = "Producción".
¿Cómo y dónde debo establecer el valor de la variable ASPNETCORE_ENVIRONMENT para que se considere no solo para la depuración, sino también para la publicación ? Ya probé las siguientes opciones sin éxito:
- en la configuración de windows
- en archivo .pubxml
- en launchSettings.json
- en project.json
Además de las opciones mencionadas anteriormente, hay un par de otras soluciones.
1. Modificación del archivo del proyecto (.CsProj)
MSBuild admite la propiedad
EnvironmentName
que puede ayudar a establecer la variable de entorno correcta según el entorno que desea implementar.
El nombre del entorno se agregaría en web.config durante la fase de publicación.
Simplemente abra el archivo del proyecto (* .csProj) y agregue el siguiente 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>
El código anterior agregaría el nombre del entorno como
Development
para la configuración de depuración o si no se especifica ninguna configuración.
Para cualquier otra configuración, el nombre del entorno sería
Production
en el archivo web.config generado.
Más detalles
here
2. Agregar la propiedad EnvironmentName en los perfiles de publicación.
También podemos agregar la propiedad
<EnvironmentName>
en el perfil de publicación.
Abra el archivo de perfil de publicación que se encuentra en
Properties/PublishProfiles/{profilename.pubxml}
Esto establecerá el nombre del entorno en web.config cuando se publique el proyecto.
Más detalles
here
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
3. Opciones de línea de comando usando dotnet Publish
Además, podemos pasar la propiedad
EnvironmentName
como una opción de línea de comando al comando de
dotnet publish
.
El siguiente comando incluiría la variable de entorno como
Development
en el archivo web.config.
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
Así es como podemos establecer en tiempo de ejecución:
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();
}
Con la última versión de dotnet cli (2.1.400 o superior), puede configurar esta propiedad msbuild
$(EnvironmentName)
y las herramientas de publicación se encargarán de agregar ASPNETCORE_ENVIRONMENT a web.config con el nombre del entorno.
Además, el soporte XDT está disponible a partir del 2.2.100-preview1.
Muestra: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md
Debe seguir las
instrucciones proporcionadas en la documentación
, utilizando
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>
Tenga en cuenta que también puede establecer otras variables de entorno.
El Módulo principal de ASP.NET le permite especificar variables de entorno para el proceso especificado en el atributo processPath al especificarlas en uno o más elementos secundarios environmentVariable de un elemento de colección environmentVariables en el elemento aspNetCore. Las variables de entorno establecidas en esta sección tienen prioridad sobre las variables de entorno del sistema para el proceso.
Lo encontré funcionando para mí configurando esta variable directamente en Azure Platorm (si la usa). Simplemente seleccione su aplicación web -> configuración -> configuración de la aplicación y agregue la variable y su valor, luego presione el botón Guardar.
Opción 1:
Para establecer la variable de entorno ASPNETCORE_ENVIRONMENT en Windows,
Línea de comando -
setx ASPNETCORE_ENVIRONMENT "Development"
PowerShell -
$Env:ASPNETCORE_ENVIRONMENT = "Development"
Para otros sistemas operativos, consulte esto: docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
Opcion 2:
Si desea configurar ASPNETCORE_ENVIRONMENT usando
web.config
, agregue
aspNetCore
manera:
<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>