Commande de publication de l'application ASP.NET Core :
dotnet publish [<PROJECT>] [-f|--framework] [-r|--runtime] [-o|--output] [-c|--configuration] [--version-suffix] [-v|--verbosity] [-h|--help]
Publier un exemple de commande (généré dans le répertoire bin/release/netcoreapp1.1/publish
) :
dotnet publish -c release
au-dessus du la commande ne précise pas EnvironmentName
à publier. Qu'est-ce que cela signifie ? Par exemple, la configuration appsettings.json
dans l'application ASP.NET Core, l'environnement de test et la configuration de l'environnement de production sont différents (comme la chaîne de connexion à la base de données). Si nous utilisons la commande release ci-dessus, nous devons également copier manuellement le appsettings.json
. 🎜> de différents environnements. Si le fichier doit être modifié à l'avenir, il devra être à nouveau publié et mis à jour, ce qui est très gênant.
Comment résoudre le problème ci-dessus est très simple. Spécifiez la variable d'environnement ASPNETCORE_ENVIRONMENT
de la machine de développement ou du serveur. Après avoir défini la variable d'environnement, lors de l'exécution de dotnet *.dll
pour démarrer le programme, ASP.NET Core. chargera automatiquement ce fichier appsettings.*.json
correspondant à la variable d'environnement, telle que appsettings.Production.json
.
En fait, lorsque nous utilisons VS 2017 F5 pour déboguer le projet, la variable d'environnement ASPNETCORE_ENVIRONMENT
sera définie par défaut, comme launchSettings.json
dans l'ASP. NET Core. Exemple de configuration :
"profiles": {"IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "api/values", "environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development" }},"AspNetCore.Samples": { "commandName": "Project", "launchBrowser": true, "launchUrl": "api/values", "environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:59522"}}
Startup
Exemple de configuration :
public Startup(IHostingEnvironment env) {var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); }
Car dans la configuration ci-dessus, ASPNETCORE_ENVIRONMENT
est défini sur Development
, nous utilisons VS 2017 F5 pour déboguer le projet, et le fichier de configuration appsettings.Development.json
sous le projet sera chargé et utilisé si ce fichier n'existe pas, ASP.NET Core utilisera le. appsettings.json
fichier de configuration par défaut.
Alors comment définir la variable d'environnement ASPNETCORE_ENVIRONMENT
sur le serveur ? C'est très simple, il suffit de taper une commande.
Ligne de commande :
>setx ASPNETCORE_ENVIRONMENT "Development"SUCCESS: Specified value was saved.
ou (nécessite des droits d'administrateur)
>setx ASPNETCORE_ENVIRONMENT "Development" /MSUCCESS: Specified value was saved.
PowerShell
Commande :
$Env:ASPNETCORE_ENVIRONMENT = "Prodction"
Après avoir défini la commande d'environnement dans Windows, vous devez rouvrir une ligne de commande dotnet *.dll
pour démarrer le projet pour qu'il soit efficace.
Ligne de commande :
export ASPNETCORE_ENVIRONMENT=development
dotnet *.dll
Au démarrage du projet, nous pouvons voir le courant de Hosting environment
pour vérifier si c'est correct, exemple :
> dotnet AspNetCore.Samples.dllHosting environment: ProdtctionContent root path: C:\Users\yuezh\Desktop\Demo\AspNetCore.SamplesNow listening on: http://*:5003Application started. Press Ctrl+C to shut down.
Référence :
dotnet-publish
Travailler avec plusieurs environnements
Comment définir l'environnement d'hébergement dans ASP.NET Core
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!