web-dev-qa-db-fra.com

Comment puis-je m'assurer que appsettings.dev.json est copié dans le dossier de sortie?

J'ai trois fichiers de configuration, un pour chaque environnement:

  1. appsettings.json -> production
  2. appsettings.dev.json -> développement
  3. appsettings.stg.json -> mise en scène

Si je règle ASPNETCORE_ENVIRONMENT sur dev , une exception d'exécution se plaint de ne pas pouvoir trouver appsettings.dev.json. J'ai essayé d'ajouter

"copyToOutput": [
  "appsettings.dev.json"
]

dans la section buildOptions de project.json mais cela ne semble pas avoir d’effet.

Existe-t-il un autre moyen de forcer appsettings.dev.json à être copié dans le répertoire de sortie?

9
Alex G.

Inclure ceci dans "project.json" fonctionne pour moi:

...
"publishOptions": {
  "include": [
    "wwwroot",
     ...
    "appsettings.json",
    "appsettings.Development.json",
    ...
  ]
},
...
7
Fabricio Koch

Avez-vous défini le chemin de base où appsettings.dev.json est placé?

var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
6
Ivan Zaruba

Dans mon cas, appsettings.json n'est pas copié pour les tests unitaires.

Si vous cliquez avec le bouton droit de la souris sur le fichier et choisissez Propriétés , cette boîte de dialogue s'affichera. Changer Action de construction en Ressource incorporée et le fichier sera copié dans le dossier bin pour le test unitaire.

 enter image description here

5
Jess

Suppose que vous utilisez Visual Studio:

En général, par le passé, d'autres développeurs ont défini des "événements de construction" pour s'assurer que certains éléments du projet sont générés. Il s'agit généralement d'un exemple dans les propriétés de projet ASP.NET pour Visual Studio 2015:> "Evénements de génération" (volet de gauche)> Cliquez sur "Modifier la post-génération". Ecrivez dans les instructions en ligne de commande la manière dont le projet doit générer pour produire. PAR EXEMPLE:

mkdir "$(ProjectDir)bin\Setup"  

créer un répertoire sous bin appelé 'Setup'

Del "$(ProjectDir)bin\Setup\*.* /Q"

Supprime tous les éléments existants dans le nouveau bac créé

copy "$(TargetDir)*.dll"  "$(ProjectDir)bin\Setup"

Copie les dll de l'emplacement de construction vers le nouvel emplacement d'installation

Désormais, si vous effectuez un processus de construction dans lequel votre 'Gestionnaire de configuration' génère une sortie différente pour chaque environnement et que vous souhaitez simplement que chacun d'entre eux soit permanent, vous devrez probablement parcourir un niveau supérieur, recherchez ces bacs par leur nom ' dev 'ou' stg 'puis les recopier. Vous pourrez peut-être créer ou répertorier une variable connue de VS pour l'environnement, qui correspond également à vos données JSON. 

2
djangojazz

Dans la solution Explorer faites un clic droit sur votre fichier qui veut être copié dans la sortie (dans votre cas appsettings.dev.json) et appuyez sur Propriétés , Dans le volet de la fenêtre Propriétés, définissez Copier dans le répertoire de sortie option sur Copier toujours . Ainsi, chaque fois que vous construirez votre projet, votre fichier sera copié dans le répertoire de sortie (votre corbeille de projet ou votre répertoire de publication en fonction de votre profil de construction).

0
Code_Worm