web-dev-qa-db-fra.com

Qu'est-ce que Content Build Action dans Visual Studio?

À quoi sert l'action de génération de contenu dans Visual Studio? On dirait que ça ne fait rien.

L'article sur les propriétés de fichier sur MSDN (n'existe plus) dit:

Conten - 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.

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? Cela signifie que l'action n'a aucun effet réel lors de la construction, mais seulement plus tard lors du déploiement?

41
Martin Prikryl

Documentation Visual Studio mise à jour a une description plus significative:

Contenu - Un fichier marqué comme Contenu peut être récupéré sous forme de flux par appelant Application.GetContentStream . Pour les projets ASP.NET, ces fichiers sont inclus dans le cadre du site lors de son déploiement.


Aussi après quelques tests et avec un indice de Quels sont les différents paramètres "Build action" dans les propriétés du projet Visual Studio et que font-ils? , j'ai trouvé que le Content l'action de génération a cet effet dans les projets WPF (éventuellement ASP aussi).

Il ajoute

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

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

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

Bien que dans le commentaire , à la question mentionnée précédemment, il y a 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é).

7
Martin Prikryl

"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 en mode console simple. Projet + Ajouter un nouvel élément, choisissez le modèle d'élément Fichier bitmap. Son action de génération est automatiquement définie sur "Contenu". Utilisez Projet + Propriétés, onglet Publier et cliquez sur le bouton Fichiers d'application. Notez comment le bitmap a été automatiquement ajouté à la liste des fichiers déployés:

enter image description here

Revenez à la fenêtre Propriétés et remplacez son action de génération par Aucune. Cliquez à nouveau sur le bouton et notez que le fichier n'est plus inclus.

Également utilisé par les utilitaires d'installation qui s'intègrent à VS pour la même raison. Et un gros problème dans les applications Web, ils ont généralement un lot de fichiers qui doivent être déployés sur le serveur Web.

29
Hans Passant

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

Content

Si vous définissez 'Copier le répertoire de sortie' sur 'Copier toujours' ou ' Copier si plus récent ' il copiera ce fichier dans le dossier de sortie lors de la construction. L'action effectuée lorsque vous appuyez sur 'Build (solution)' dépend de la propriété 'Build action' . D'après ce que je comprends du site Web de Microsoft, il copie simplement le fichier s'il s'agit d'un fichier content comme un fichier texte, html ou autre fichier normal.

Ce que les autres actions de construction 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 à chaque génération, elle est donc toujours prête à être déployée. J'espère que cela vous donne une idée de la fonctionnalité.

4
RB-Develop