4

J'ai une application WPF que je construis. J'utilise Visual Studio Community 2015. Dans le but de créer une version "vraie", je modifie certains paramètres de génération afin de ne générer que les fichiers nécessaires qui seront installés sur l'ordinateur de l'utilisateur. Donc, pas de vshost exe, pas de fichiers XML générés, etc. etc. etc. (Je conserve la génération de fichiers PDB, cependant).Comment ne pas copier le fichier app.config dans le répertoire de sortie

J'ai tout exactement comme je le veux, sauf pour un fichier. J'ai un fichier App.config dans chaque projet. Cela ne me dérange pas d'être copié dans le répertoire de sortie de mes builds de débogage, mais sur ma "vraie" version, je ne le veux pas.

Le fichier est déjà défini comme "Ne pas copier" dans ses propriétés. Voir les images ci-dessous:

App.config image

Malgré la « Ne pas copier » réglage, cependant, je reçois toujours un fichier « MyAppName.exe.config » généré chaque fois que je construis le projet. Pourquoi cela est-il ainsi? Comment puis-je l'éteindre? C'est assez ennuyeux.

Merci pour votre conseil!

+0

Si vous n'en avez pas besoin, supprimez-le du projet. – Clemens

+0

Merci, mais cela ne répond pas vraiment à la question. Temporairement, je résous le problème en utilisant une étape post-construction qui supprime le fichier du répertoire de sortie pour mes versions de version. – David

+0

Il y a exactement deux options. Soit l'application a besoin du fichier, ensuite elle doit être copiée dans le dossier de sortie. Ou l'application n'en a pas besoin, alors elle ne devrait pas être dans votre projet. Vous pouvez le recréer à tout moment plus tard. – Clemens

Répondre

6

Le traitement des app.config est spéciale, elle est traitée par Nom, le processus de construction sélectionnera le fichier app.config suivant cet ordre:

  • Choisissez la valeur $ (AppConfig) situé dans le projet principal.
  • Choisissez @ (Aucune) App.Config dans le même dossier que le projet.
  • Choisissez @ (Content) App.Config dans le même dossier que le projet.
  • Choisissez @ (Aucun) App.Config dans n'importe quel sous-dossier du projet.
  • Choisissez @ (Contenu) App.Config dans n'importe quel sous-dossier du projet.

$ (AppConfig) est une propriété MSBuild, si elle est vide, il va chercher un fichier avec le nom « App.Config » dans le « None » ou « contenu » MSBuild Groupes d'articles, s'il y a un match , le fichier sera utilisé et sera copié dans le répertoire de sortie en remplaçant le nom app.config par [AssemblyName] .config

Si vous voulez conserver le fichier sans le supprimer, vous devrez changer le "Action de construction" "propriété à quelque chose de différent à" Aucun "ou" Contenu ", vous pouvez utiliser n'importe quelle valeur existante dans la liste (je suggère" AdditionalFiles ") ou toute valeur que vous souhaitez utiliser, par exemple" MyConfigFile ", et maintenant le fichier conservera le fichier dans le projet, mais sans la logique qui génère le fichier de configuration dans le répertoire de sortie.

Ou vous pouvez renommer le fichier à quelque chose de différent de "app.config" et conserver les valeurs de propriété actuelles pour "Action de construction" et "Copier dans le répertoire de sortie".

+0

Brillante réponse, merci d'expliquer ces détails. Fait drôle: mon VS2015 a ajouté un "App1.config" à mon projet (et je n'étais pas au courant de l'addiction du nom) -> résultat: no AssemblyName.Le fichier de configuration a été créé. Renommer App1.config App.config a immédiatement aidé. – Nicolas