Question Quels sont les différents paramètres "Build action" dans les propriétés du projet Visual Studio et que font-ils?


Pour la plupart, vous prenez simplement ce que Visual Studio vous a assigné par défaut ... Je fais référence à BuildAction propriété pour chaque fichier sélectionné dans l'Explorateur de solutions. Il y a un certain nombre d'options et il est difficile de savoir ce que chacune d'elles fera.


749
2017-09-28 12:15


origine


Réponses:


  • Aucun: Le fichier n'est pas inclus dans le groupe de sortie du projet et n'est pas compilé dans le processus de génération. Un exemple est un fichier texte contenant une documentation, par exemple un fichier Readme.

  • Compiler: Le fichier est compilé dans la sortie de génération. Ce paramètre est utilisé pour les fichiers de code.

  • Contenu: Vous permet de récupérer un fichier (dans le même répertoire que l'assembly) en tant que flux via Application.GetContentStream (URI). Pour que cette méthode fonctionne, il a besoin d'un attribut personnalisé AssemblyAssociatedContentFile que Visual Studio ajoute gracieusement lorsque vous marquez un fichier en tant que "Contenu"

  • Ressource intégrée: Incorpore le fichier dans une ressource manifeste d'assembly exclusive.

  • Ressource  (WPF seulement): Incorpore le fichier dans une ressource manifeste d'assembly partagée (par tous les fichiers de l'assembly avec des paramètres similaires) nommée AppName.g.resources.

  • Page  (WPF seulement): Utilisé pour compiler un xaml déposer dans baml. le baml est ensuite intégré avec la même technique que Resource (c'est-à-dire disponible en tant que "AppName.g.resources")

  • ApplicationDefinition  (WPF seulement): Marquez le fichier XAML / classe qui définit votre application. Vous spécifiez le code-behind avec le x: Class = "Namespace.ClassName" et définissez le formulaire de démarrage / page avec StartupUri = "Window1.xaml"

  • Écran de démarrage  (WPF seulement): Une image marquée comme SplashScreen  est affiché automatiquement lorsqu'une application WPF se charge, puis disparaît

  • Données de conception: Compile les viewmodels XAML afin que les contrôles utilisateur puissent être prévisualisés avec des exemples de données dans Visual Studio (utilise des types de simulation)

  • DesignDataWithDesignTimeCreatableTypes: Compile les viewmodels XAML afin que les contrôles utilisateur puissent être prévisualisés avec des exemples de données dans Visual Studio (utilise des types réels)

  • EntityDeploy: (Cadre d'entité): utilisé pour déployer les artefacts Entity Framework

  • CodeAnalysisDictionary: Un fichier XML contenant dictionnaire de mots personnalisés pour règles d'orthographe


882
2017-09-28 12:29



De la documentation:

La propriété BuildAction indique   ce que Visual Studio fait avec un fichier   quand une construction est exécutée. BuildAction   peut avoir plusieurs valeurs:

Aucun - Le fichier n'est pas inclus dans le   groupe de sortie du projet et n'est pas   compilé dans le processus de construction. Un   exemple est un fichier texte qui contient   documentation, comme un fichier Lisez-moi.

Compiler - Le fichier est compilé dans   la sortie de construction. Ce paramètre est utilisé   pour les fichiers de code.

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

Embedded Resource - Ce fichier est   intégré dans la construction du projet principal   sortie en tant que DLL ou exécutable. C'est   généralement utilisé pour les fichiers de ressources.


103
2017-09-28 12:20



Page - Prend le fichier XAML spécifié, et compile en BAML, et intègre cette sortie dans le flux de ressources gérées pour votre assembly (spécifiquement AssemblyName.g.resources), En outre, si vous avez les attributs appropriés sur l'élément racine XAML dans le fichier, il va créer un fichier blah.g.cs, qui contiendra une classe partielle de "codebehind" pour cette page; cela implique essentiellement un appel au goop BAML pour ré-hydrater le fichier en mémoire, et pour définir l'une des variables membres de votre classe pour les éléments créés maintenant (par exemple si vous mettez x: Name = "foo" sur un élément , vous serez en mesure de faire this.foo.Background = Purple ou similaire.

ApplicationDefinition - Similaire à Page, sauf qu'elle continue à fureter, et définit le point d'entrée de votre application qui va instancier votre objet App, appelez-le, ce qui va ensuite instancier le type défini par la propriété StartupUri, et donnera votre mainwindow .

Aussi, pour être clair, cette question est globalement infinie dans son ensemble de résultats; n'importe qui peut définir des BuildActions supplémentaires simplement en créant une tâche MSBuild. Si vous regardez dans le répertoire% systemroot% \ Microsoft.net \ framework \ v {version} \, et regardez le fichier Microsoft.Common.targets, vous devriez être capable de déchiffrer beaucoup plus (par exemple, avec VS Pro et plus, il y a une action "Shadow" qui vous permet de générer des accesseurs privés pour aider à tester des classes privées.


33
2017-09-28 16:12



VS2010 a une propriété pour 'Construire l'action', et aussi pour 'Copier dans le répertoire de sortie'. Ainsi, une action de 'None' sera toujours copiée dans le répertoire build si la propriété copy est définie sur 'Copy if Newer' ou 'Copy Always'.

Donc, une action de construction de 'Contenu' doit être réservée pour indiquer le contenu auquel vous accéderez via 'Application.GetContentStream'

J'ai utilisé le paramètre 'Build Action' de 'None' et le paramètre 'Copy to Output Direcotry' de 'Copy if Newer' pour certains .config externes.

G.


24
2018-04-09 21:37



Dans VS2008, l'entrée de doc qui semble la plus utile est:

Windows Presentation Foundation Création d'une application WPF (WPF)

ms-help: //MS.VSCC.v90/MS.MSDNQTR.v90.en/wpf_conceptual/html/a58696fd-bdad-4b55-9759-136dfdf8b91c.htm

ApplicationDefinition  Identifie le fichier de balisage XAML qui contient la définition de l'application (un fichier de balisage XAML dont l'élément racine est Application). ApplicationDefinition est obligatoire lorsque Install est true et que OutputType est winexe. Une application WPF et, par conséquent, un projet MSBuild ne peuvent avoir qu'une seule ApplicationDefinition.

Page  Identifie un fichier de balisage XAML dont le contenu est converti en un format binaire et compilé dans un assembly. Les éléments de page sont généralement implémentés conjointement avec une classe code-behind.

Les éléments de page les plus courants sont les fichiers XAML dont les éléments de niveau supérieur sont l'un des suivants:

Window (System.Windows..::.Window).

Page (System.Windows.Controls..::.Page).

PageFunction (System.Windows.Navigation..::.PageFunction<(Of <(T>)>)).

ResourceDictionary (System.Windows..::.ResourceDictionary).

FlowDocument (System.Windows.Documents..::.FlowDocument).

UserControl (System.Windows.Controls..::.UserControl).

Ressource  Identifie un fichier de ressources compilé dans un assembly d'application. Comme mentionné précédemment, UICulture traite les éléments de ressource.

Contenu  Identifie un fichier de contenu distribué avec une application. Les métadonnées qui décrivent le fichier de contenu sont compilées dans l'application (à l'aide de AssemblyAssociatedContentFileAttribute).


5
2018-03-31 17:53



Que diriez-vous cette page à partir de Microsoft Connect (en expliquant les types DesignData et DesignDataWithDesignTimeCreatableTypes). Citant:

Ce qui suit décrit les deux actions de construction pour les fichiers de données d'exemple.

Les exemples de fichiers .xaml doivent être associés à l'une des actions de construction ci-dessous:

Données de conception


4
2017-10-10 07:01



  • Fakes: Fait partie du cadre Microsoft Fakes (Unit Test Isolation). Non disponible sur toutes les versions de Visual Studio. Les faux sont utilisés pour prendre en charge les tests unitaires dans votre projet, vous aidant à isoler le code que vous testez en remplaçant les autres parties de l'application par des bouts ou des cales. Plus ici: https://msdn.microsoft.com/en-us/library/hh549175.aspx

3
2018-01-26 15:53