web-dev-qa-db-fra.com

Différence entre le contenu de l'action de génération et «Copier dans le répertoire de sortie» dans Visual Studio

Dans mon projet dans Visual Studio, j'ai des fichiers que je veux inclure dans la sortie, mais pas compilés ni incorporés.

Je suis conscient qu'il y a 2 façons d'y parvenir.

  1. Définition de l'action de génération du fichier sur "Contenu"
  2. Définition du "Copier dans le répertoire de sortie" sur "Copier toujours" ou "Copier si plus récent"

Quelqu'un peut-il me dire quelle est la différence et dans quel scénario chacune des options convient-elle?

44
ilias

Lors du réglage de Build Action à Content, le fichier ne sera pas compilé et sera placé dans le groupe de sortie Contenu.

Que le fichier soit copié ou non dépend du Copy to Output Directory réglage à ce point.

Bien sûr, si vous définissez Copy Always sur un fichier, il peut être compilé et puis copié.

Voir Propriétés du fichier sur MSDN:

Contenu - Le fichier n'est pas compilé, mais est inclus dans le groupe de sortie Contenu. Par exemple, ce paramètre est la valeur par défaut d'un fichier .htm ou d'un autre type de fichier Web.

26
Oded

L'action de génération de contenu a un effet visible dans les projets WPF (éventuellement ASP aussi)).

Il ajoute

[Assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("filename")]

à WpfApplication1_Content.g.cs. En savoir plus sur AssemblyAssociatedContentFileAttribute .

Dans WinForms et l'application console (ce que OP peut utiliser), cela ne fait pas cela, il n'y a donc aucune différence avec Aucune action lors de la construction.

Dans ce commentaire , j'ai également trouvé une note sur l'effet sur le déploiement:

Notez également que Le contenu sera inclus lors de l'utilisation d'un déploiement en un clic , mais aucun ne le sera même si "copier si plus récent" est sélectionné.

Peut-être que cela fonctionne même pour les applications console et WinForms (je n'ai pas essayé).

10
Martin Prikryl

Copy Always déclenchera également une reconstruction de ce projet dans une solution même si aucun code n'a changé.

8
MattC