lorsque je publie mon application Web principale asp.net sur mon système de fichiers local, il prend toujours la variable production-config et 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 aussi pour la publication ? j'ai déjà essayé les options suivantes sans succès:
- dans les paramètres de Windows
- dans un fichier .pubxml
- dans launchSettings.json
- dans project.json
Réponses:
Outre les options mentionnées ci-dessus, il existe quelques autres solutions.
1. Modification du fichier de projet (.CsProj)
MSBuild prend en charge la
EnvironmentName
propriété qui peut vous aider à définir la bonne variable d'environnement selon l'environnement que vous souhaitez déployer. Le nom de l'environnement serait ajouté dans le web.config lors de la phase de publication.Ouvrez simplement le fichier de projet (* .csProj) et ajoutez le XML suivant.
Le code ci-dessus ajouterait le nom de l'environnement comme
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 se trouveraitProduction
dans le fichier web.config généré. Plus de détails ici2. Ajout de la propriété EnvironmentName dans les profils de publication.
Nous pouvons également ajouter la
<EnvironmentName>
propriété dans le profil de publication. Ouvrez le fichier de profil de publication qui se trouve dans leProperties/PublishProfiles/{profilename.pubxml}
champ Cela définira le nom de l'environnement dans web.config lors de la publication du projet. Plus de détails ici3. Options de ligne de commande utilisant dotnet publish
De plus, nous pouvons transmettre la propriété en
EnvironmentName
tant qu'option de ligne de commande à ladotnet publish
commande. La commande suivante inclurait la variable d'environnement commeDevelopment
dans le fichier web.config.dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
la source
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
est exactement ce que je cherchais. Merci!Option 1:
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 souhaitez définir ASPNETCORE_ENVIRONMENT en utilisant,
web.config
ajoutezaspNetCore
comme ceci-la source
Un moyen simple de le définir dans l'IDE de Visual Studio.
Projet> Propriétés> Débogage> Variables d'environnement
la source
Vous devez suivre les instructions fournies dans la documentation , en utilisant le
web.config
.Notez que vous pouvez également définir d'autres variables d'environnement.
la source
Voici comment nous pouvons définir au moment de l'exécution:
la source
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 les outils de publication se chargeront d'ajouter ASPNETCORE_ENVIRONMENT au web.config avec le nom de l'environnement.De plus, la prise en charge de XDT est disponible à partir de la version 2.2.100-preview1.
Exemple: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md
la source
you can just set this msbuild property $(EnvironmentName) and publish
ou fournir une référence?Créez vos fichiers appsettings. *. Json. (Exemples: appsettings.Development.json, appsettings.Staging.json, appsettings.Production.json)
Ajoutez vos variables à ces fichiers.
Créez un profil de publication distinct pour chaque environnement, comme vous le feriez normalement.
Ouvrez PublishProfiles / Development.pubxml (le nom sera basé sur ce que vous avez nommé le profil de publication).
Ajoutez simplement une balise au PublishProfile pour définir le EnvironmentName variable , la convention de dénomination de fichier appsettings. *. Json s'occupe du reste.
Référence: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-3.1
Reportez-vous à la section «Définir l'environnement».
la source
Cette variable peut être enregistrée dans json. Par exemple envsettings.json avec le contenu ci-dessous
Modifiez ultérieurement votre programme.cs comme ci-dessous
De cette façon, il sera toujours inclus dans la publication et vous pouvez modifier la valeur requise en fonction de l'environnement dans lequel le site Web est hébergé. Cette méthode peut également être utilisée dans l'application console car les modifications sont dans Program.cs
la source
J'ai trouvé que cela fonctionnait pour moi en définissant cette variable directement sur Azure Platorm (si vous l'utilisez). Sélectionnez simplement votre application Web -> configuration -> paramètres de l'application et ajoutez la variable et sa valeur, puis appuyez sur le bouton Enregistrer.
la source
Une autre option que nous utilisons dans nos projets afin de pouvoir définir l'environnement par site est d'ajouter un fichier Parameters.xml au projet avec le contenu suivant:
L'action de génération de ce fichier est Content et l'action de copie est Copy If Newer , elle fera donc partie du package à déployer.
Ensuite, pour déployer le package et définir l'environnement, dans la version, sous la tâche "WinRM - Déploiement d'applications Web IIS" (cela fonctionne aussi bien lorsque vous utilisez la tâche "Déploiement d'applications Web IIS"), nous définissons des arguments supplémentaires pour msdeploy :
De cette façon, nous pouvons avoir plusieurs versions, toutes utilisant le même artefact, mais déployées dans des environnements différents.
la source
Je sais que c'est un ancien article, mais j'ai pensé que je jetterais ma solution simple dans le mélange puisque personne ne l'a suggérée.
J'utilise le répertoire actuel pour déterminer l'environnement actuel, puis je retourne la chaîne de connexion et la variable d'environnement. Cela fonctionne très bien tant que vous avez une convention de dénomination pour les dossiers de votre site telle que test / beta / sandbox.
la source