Qu’est-ce que l’action de génération de contenu dans Visual Studio?

Que fait l’action de génération de contenu dans Visual Studio? On dirait que ça ne fait rien.

L’article Propriétés du fichier sur MSDN indique:

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 pour un fichier .htm ou un autre type de fichier Web.

Mais je n’ai aucune idée de ce que signifie le “groupe de sortie de contenu”.

Est-ce quelque chose à propos du déploiement? Ce qui signifie que l’action n’a aucun effet réel lors de la construction, mais seulement plus tard lors du déploiement?

“Contenu” signifie qu’il s’agit d’un élément de projet déployable. Il indique que le fichier doit être copié sur la machine cible.

Quelque chose que vous pouvez voir avec un projet simple en mode console. Projet + Ajouter un nouvel élément, sélectionnez le modèle d’élément Fichier bitmap. Son action de compilation est automatiquement définie sur “Contenu”. Utilisez Projet + Propriétés, onglet Publier et cliquez sur le bouton Fichiers de l’application. Notez comment le bitmap a été automatiquement ajouté à la liste des fichiers déployés:

entrer la description de l'image ici

Revenez à la fenêtre Propriétés et modifiez son action de génération sur Aucun. Cliquez à nouveau sur le bouton et notez comment le fichier n’est plus inclus.

Également utilisé par les utilitaires d’installation qui s’intègrent avec VS pour la même raison. Et dans les applications Web, beaucoup de fichiers doivent être déployés sur le serveur Web.

Après quelques tests et avec un conseil à partir de Quels sont les différents parameters “Build action” dans les propriétés du projet Visual Studio et que font-ils? J’ai constaté que l’action de génération de contenu avait un effet sur les projets WPF uniquement (éventuellement ASP également).

Il ajoute

[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAtsortingbute("filename")] 

WpfApplication1_Content.g.cs . Lisez à propos de AssemblyAssociatedContentFileAtsortingbute .

Dans les applications console ou WinForms, il ne fait rien (ni en code source ni en sortie binary).

Bien que dans le commentaire , à la question précédemment mentionnée, il y ait une note à propos de l’effet sur le déploiement:

Notez également que le contenu sera inclus lors du déploiement en un clic , mais aucun ne le sera même si “copier si plus récent” est sélectionné.

Cela fonctionne peut-être même pour les applications console et WinForms (je n’ai pas essayé).

Je pense que cela ne concerne que les projets C #. Voir l’image:

Contenu

Si vous définissez l’ option “Copier le répertoire de sortie” sur “Copier toujours” ou “Copier si plus récent” , le fichier sera copié dans le dossier de sortie lors de la création. Quelle action est effectuée lorsque vous appuyez sur ‘Build (solution)’ dépend de la propriété ‘Build action’ . D’après ce que j’ai compris du site Web de Microsoft, il ne fait que copier le fichier s’il s’agit d’un fichier de contenu tel qu’un fichier texte, HTML ou autre fichier normal.

Ce que font les autres actions de Build ne me sont pas connues, cela semble être une option avancée.

L’essentiel: il semble que cette fonctionnalité vous aide à conserver la structure des dossiers et les fichiers organisés pour chaque version. Elle est donc toujours prête pour le déploiement. J’espère que cela vous donne une idée de la fonctionnalité.