188 votes

comment définir ASPNETCORE_ENVIRONMENT pour être considéré pour la publication d'un asp.net application de base?

lorsque je publie mon asp.net web de base de l'application de mon système de fichier local, il prend toujours la production-config et la ASPNETCORE_ENVIRONMENT variable avec la valeur = "Production".

comment et où dois-je régler la valeur de la ASPNETCORE_ENVIRONMENT variable de sorte qu'il sera considéré non seulement à des fins de 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 .pubxml fichier
  • dans launchSettings.json
  • en projet.json

175voto

Agalo Points 21

Autres que les options mentionnées ci-dessus, il ya un couple d'autres Solutions.

1. Modifier le fichier de projet (.CsProj) fichier

MSBuild prend en charge l' EnvironmentName de la Propriété qui peut aider à définir le droit de la variable d'environnement que par l'Environnement que vous souhaitez Déployer. Le nom de l'environnement devrait être ajouté dans le web.config lors de la publication de phase.

Il suffit d'ouvrir 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 permettrait d'ajouter le nom de l'environnement en tant que Development pour la configuration de Débogage ou si aucune configuration n'est spécifié. Pour toute autre Configuration le nom de l'Environnement serait Production dans le web générées.fichier de configuration. Plus de détails ici

2. L'ajout de la EnvironmentName de la Propriété dans les profils de publication.

Nous pouvons ajouter l' <EnvironmentName> propriété dans le profil de publication. Ouvrez le profil de publication du fichier, qui est situé à l' Properties/PublishProfiles/{profilename.pubxml} Ceci permettra de définir le nom de l'Environnement dans le web.config lors de la publication du projet. Plus de Détails ici

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

3. Options de ligne de commande en utilisant dotnet publier

De plus, nous pouvons passer à la propriété EnvironmentName comme une option de ligne de commande à l' dotnet publish commande. Suivant le commandement de l'inclure la variable d'environnement Development dans le web.fichier de configuration.

dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development

111voto

Sanket Points 11785

Option1:

Pour définir la ASPNETCORE_ENVIRONMENT variable d'environnement windows,

Ligne de commande - setx ASPNETCORE_ENVIRONMENT "Development"

PowerShell - $Env:ASPNETCORE_ENVIRONMENT = "Development"

Pour les autres OS reporter ce - https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments

Option2:

Si vous souhaitez définir ASPNETCORE_ENVIRONMENT l'aide d' web.config puis ajouter aspNetCore , ce

<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>

41voto

Drua Points 69

Moyen Simple de le mettre dans l'IDE de visual studio.

Projet > Propriétés> Debug > variables d'Environnement

enter image description here

23voto

David Pine Points 1964

Vous devez suivre les instructions fournies dans la documentation, à l'aide de l' 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.

L'ASP.NET Module de Base vous permet de spécifier des variables d'environnement pour le processus spécifié dans la processPath attribut en les précisant dans une ou plusieurs variable d'environnementqui les éléments enfants d'un environmentVariables collection élément sous la aspNetCore élément. Les variables d'environnement définies dans le présent article prévalent sur le système variables d'environnement du processus.

6voto

vijayrkn Points 311

Avec la dernière version de dotnet cli (2.1.400 ou plus), vous pouvez définir cette propriété msbuild $(EnvironmentName) et de publier de l'outillage prendra soin d'ajouter ASPNETCORE_ENVIRONMENT sur le web.config avec le nom de l'environnement.

Aussi, XDT de soutien est disponible à partir de 2.2.100-preview1.

Exemple: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X