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.
Quelqu'un peut-il me dire quelle est la différence et dans quel scénario chacune des options convient-elle?
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.
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é).
Copy Always déclenchera également une reconstruction de ce projet dans une solution même si aucun code n'a changé.