J'ai trois fichiers de configuration, un pour chaque environnement:
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?
Inclure ceci dans "project.json" fonctionne pour moi:
...
"publishOptions": {
"include": [
"wwwroot",
...
"appsettings.json",
"appsettings.Development.json",
...
]
},
...
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);
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.
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.
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).