lorsque je publie mon application Web principale asp.net sur mon système de fichiers local, il prend toujours la production-config et la variable ASPNETCORE_ENVIRONMENT avec la valeur = "Production".
comment et où dois-je définir la valeur de la variable ASPNETCORE_ENVIRONMENT afin qu'elle soit prise en compte non seulement pour le débogage, mais également pour la publication? J'ai déjà essayé les options suivantes sans succès:
Option1:
Pour définir la variable d’environnement ASPNETCORE_ENVIRONMENT dans Windows,
Ligne de commande - setx ASPNETCORE_ENVIRONMENT "Development"
PowerShell - $Env:ASPNETCORE_ENVIRONMENT = "Development"
Pour les autres systèmes d’exploitation, reportez-vous à ceci - https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/environments
Option 2:
Si vous voulez définir ASPNETCORE_ENVIRONMENT en utilisant web.config
, puis ajoutez aspNetCore
comme ceci-
<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>
Outre les options mentionnées ci-dessus, il existe deux autres solutions.
1. Modification du fichier de projet (.CsProj) fichier
MSBuild prend en charge la propriété EnvironmentName
qui peut vous aider à définir la bonne variable d'environnement en fonction de l'environnement que vous souhaitez déployer. Le nom de l'environnement serait ajouté dans le fichier web.config lors de la phase de publication.
Ouvrez simplement le fichier de projet (* .csProj) et ajoutez le code XML suivant.
<!-- 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>
Le code ci-dessus ajouterait le nom de l'environnement sous la forme Development
pour la configuration de débogage ou si aucune configuration n'est spécifiée. Pour toute autre configuration, le nom de l'environnement serait Production
dans le fichier web.config généré. Plus de détails ici
2. Ajout de la propriété EnvironmentName dans les profils de publication.
Nous pouvons également ajouter la propriété <EnvironmentName>
dans le profil de publication. Ouvrez le fichier de profil de publication situé à l'emplacement Properties/PublishProfiles/{profilename.pubxml}
. Cela définira le nom de l'environnement dans web.config lors de la publication du projet. Plus de détails ici
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
3. Options de ligne de commande utilisant dotnet publish
De plus, nous pouvons transmettre la propriété EnvironmentName
en tant qu'option de ligne de commande à la commande dotnet publish
. La commande suivante inclurait la variable d’environnement sous la forme Development
dans le fichier web.config.
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
Vous devez suivre le instructions fournies dans la documentation , en utilisant le 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>
Notez que vous pouvez également définir d'autres variables d'environnement.
ASP.NET Core Module vous permet de spécifier des variables d'environnement pour le processus spécifié dans l'attribut processPath en les spécifiant dans un ou plusieurs éléments enfants EnvironmentVariable d'un élément de collection environmentVariables sous l'élément aspNetCore. Les variables d'environnement définies dans cette section ont priorité sur les variables d'environnement système du processus.
Avec la dernière version de dotnet cli (2.1.400 ou supérieure), vous pouvez simplement définir cette propriété msbuild $(EnvironmentName)
et l’outil de publication se chargera d’ajouter ASPNETCORE_ENVIRONMENT au fichier web.config avec le nom de l’environnement.
De plus, le support XDT est disponible à partir de 2.2.100-preview1.
Exemple: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md
Voici comment nous pouvons définir au moment de l'exécution:
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();
}