cuando publico mi aplicación web principal asp.net en mi sistema de archivos local, siempre toma la variable production-config y ASPNETCORE_ENVIRONMENT con el valor = "Production".
¿Cómo y dónde tengo que 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
Respuestas:
Además de las opciones mencionadas anteriormente, hay un par de otras soluciones.
1. Modificar el archivo de proyecto (.CsProj).
MSBuild admite la
EnvironmentName
propiedad, 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.
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 estaríaProduction
en el archivo web.config generado. Más detalles aquí2. Agregar la propiedad EnvironmentName en los perfiles de publicación.
También podemos agregar la
<EnvironmentName>
propiedad 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 aquí3. Opciones de la línea de comandos con dotnet publish
Además, podemos pasar la propiedad
EnvironmentName
como una opción de línea de comando aldotnet publish
comando. El siguiente comando incluiría la variable de entorno comoDevelopment
en el archivo web.config.dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
fuente
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
es exactamente lo que estaba buscando. ¡Gracias!Opción 1:
Para configurar la variable de entorno ASPNETCORE_ENVIRONMENT en Windows,
Línea de comando -
setx ASPNETCORE_ENVIRONMENT "Development"
Potencia Shell -
$Env:ASPNETCORE_ENVIRONMENT = "Development"
Para otros sistemas operativos, consulte esto: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
Opcion 2:
Si desea configurar ASPNETCORE_ENVIRONMENT usando
web.config
, agregueaspNetCore
así:fuente
Una forma sencilla de configurarlo en Visual Studio IDE.
Proyecto> Propiedades> Depurar> Variables de entorno
fuente
Debe seguir las instrucciones proporcionadas en la documentación , utilizando la extensión
web.config
.Tenga en cuenta que también puede establecer otras variables de entorno.
fuente
Así es como podemos configurar en tiempo de ejecución:
fuente
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 al web.config con el nombre del entorno.Además, la compatibilidad con XDT está disponible a partir de 2.2.100-preview1.
Muestra: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md
fuente
you can just set this msbuild property $(EnvironmentName) and publish
o proporcionar una referencia?Cree sus archivos appsettings. *. Json. (Ejemplos: appsettings.Development.json, appsettings.Staging.json, appsettings.Production.json)
Agregue sus variables a esos archivos.
Cree un perfil de publicación independiente para cada entorno, como lo haría normalmente.
Abra PublishProfiles / Development.pubxml (la denominación se basará en el nombre del perfil de publicación).
Simplemente agregue una etiqueta al PublishProfile para establecer la variable EnvironmentName , la convención de nomenclatura de archivos appsettings. *. Json hace el resto.
Referencia: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-3.1
Consulte la sección "Establecer el entorno".
fuente
Esta variable se puede guardar en json. Por ejemplo envsettings.json con el contenido de la siguiente manera
Más tarde modifique su program.cs como se muestra a continuación
De esta manera, siempre se incluirá en la publicación y puede cambiar al valor requerido de acuerdo con el entorno donde se aloja el sitio web. Este método también se puede utilizar en la aplicación de consola, ya que los cambios están en Program.cs
fuente
Lo encontré funcionando para mí estableciendo esta variable directamente en la plataforma de Azure (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.
fuente
Otra opción que usamos en nuestros proyectos para poder configurar el entorno por sitio es agregar un archivo Parameters.xml al proyecto con el siguiente contenido:
La acción de compilación para este archivo es Contenido y la acción de copia es Copiar si es más reciente, por lo que será parte del paquete para implementar.
Luego, para implementar el paquete y configurar el entorno, en la versión, bajo la tarea "WinRM - Implementación de aplicaciones web IIS" (funciona igual de bien cuando se usa la tarea "Implementación de aplicaciones web IIS"), establecemos argumentos adicionales para msdeploy :
De esta manera podemos tener múltiples lanzamientos, todos usando el mismo artefacto, pero implementados como entornos diferentes.
fuente
Sé que esta es una publicación antigua, sin embargo, pensé en lanzar mi solución simple a la mezcla, ya que nadie la ha sugerido.
Utilizo el directorio actual para determinar el entorno actual y luego volteo la cadena de conexión y la variable de entorno. Esto funciona muy bien siempre que tenga una convención de nomenclatura para las carpetas de su sitio, como test / beta / sandbox.
fuente