web-dev-qa-db-fra.com

Quels sont les différents paramètres "Action de compilation" dans les propriétés de projet Visual Studio et que font-ils?

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

822
Gishu
  • 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 contenant de la documentation, telle qu'un fichier Lisez-moi.

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

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

  • Ressource incorporée : incorpore le fichier dans une ressource de manifeste Assembly exclusive.

  • Ressource (WPF uniquement) : incorpore le fichier dans un fichier partagé (de tous les fichiers de l'Assemblée avec paramètre similaire) Ressource de manifeste d’assemblage nommée AppName.g.resources.

  • Page (WPF uniquement) : Utilisé pour compiler un fichier xaml en baml. La baml est ensuite incorporée avec la même technique que Resource (c'est-à-dire disponible sous `AppName.g.resources)

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

  • SplashScreen (WPF uniquement) : une image marquée en tant que SplashScreens'affiche automatiquement lors du chargement d'une application WPF, puis s'estompe progressivement

  • DesignData : compile les modèles de vue XAML afin que les contrôles utilisateur puissent être prévisualisés avec des exemples de données dans Visual Studio (utilise des types fictifs).

  • DesignDataWithDesignTimeCreatableTypes : compile les modèles de vue XAML afin que les contrôles utilisateur puissent être prévisualisés avec des exemples de données dans Visual Studio tilise des types réels)

  • EntityDeploy : (Entity Framework) : tilisé pour déployer les artefacts Entity Framework = =

  • CodeAnalysisDictionary : un fichier XML contenant dictionnaire Word personnalisé pour règles d'orthographe

983
Gishu

De la documentation:

La propriété BuildAction indique ce que Visual Studio fait avec un fichier lorsqu'une génération est exécutée. BuildAction peut avoir l'une des valeurs suivantes:

None - 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 contenant de la documentation, telle qu'un fichier Lisez-moi.

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

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.

Ressource incorporée - Ce fichier est incorporé dans la sortie de génération du projet principal en tant que DLL ou exécutable. Il est généralement utilisé pour les fichiers de ressources.

107
Paul Batum

Page - Prend le fichier XAML spécifié et le compile en BAML, puis incorpore cette sortie dans le flux de ressources gérées de votre Assembly (en particulier AssemblyName.g.resources). De plus, si vous disposez des attributs appropriés sur l'élément XAM racine du fichier, il créera un fichier blah.g.cs, qui contiendra une classe partielle de "codebehind" pour cette page; cela implique essentiellement un appel au groupe BAML pour réhydrater le fichier en mémoire et pour définir l'une des variables membres de votre classe sur les éléments créés (par exemple, si vous mettez x: Name = "foo" sur un élément). , vous pourrez faire ceci.foo.Background = Purple ou similaire.

ApplicationDefinition - similaire à Page, à la différence près qu'il continue onestep furthur, et définit le point d'entrée de votre application qui instanciera votre objet d'application, l'appel sera exécuté, qui instanciera ensuite le type défini par la propriété StartupUri, et donnera votre mainwindow .

En outre, 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 construisant une tâche MSBuild. Si vous regardez dans le répertoire% systemroot%\Microsoft.net\framework\v {version}\et que vous regardez le fichier Microsoft.Common.targets, vous devriez pouvoir en déchiffrer beaucoup plus (par exemple, avec VS Pro et au-dessus, il existe une action "Shadow" qui vous permet de générer des accesseurs privés pour vous aider à tester les classes privées.

34
Dominic Hopton

VS2010 a une propriété pour "Action de construction", ainsi que pour "Copier dans le répertoire de sortie". Ainsi, une action de "Aucune" sera toujours copiée dans le répertoire de construction si la propriété de copie est définie sur "Copier si plus récent" ou "Copier toujours".

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

J'ai utilisé le paramètre "Construire l'action" de "Aucun" et le paramètre "Copier dans le répertoire de sortie" de "Copier si plus récent" pour certains fichiers .config liés en externe.

G.

29
Gerard ONeill

Dans VS2008, l’entrée de documentation qui semble la plus utile est:

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

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

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

Page Identifie un fichier de marquage XAML dont le contenu est converti au format binaire et compilé dans un assembly. Les éléments de page sont généralement implémentés 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
James Moore

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

Ce qui suit décrit les deux actions de génération pour les fichiers de données exemple.

Les exemples de fichiers .xaml de données doivent être affectés à l'une des actions de construction suivantes:

DesignData : Des exemples de types de données seront créés en tant que types erronés. Utilisez cette action de génération lorsque les exemples de types de données ne peuvent pas être créés ou ont des propriétés en lecture seule pour lesquelles vous souhaitez définir des exemples de valeurs de données.

DesignDataWithDesignTimeCreatableTypes : Des exemples de types de données seront créés à l'aide des types définis dans l'exemple de fichier de données. Utilisez cette action de construction lorsque les exemples de types de données peuvent être créés à l'aide de leur constructeur vide par défaut.

Pas donc incroyablement exhaustif, mais cela donne au moins un indice. Cette procédure pas à pas MSDN donne également quelques idées. Je ne sais pas si ces actions de construction sont également applicables aux projets autres que Silverlight.

4
Per Lundberg
  • Fakes: Fait partie de la structure 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 d'autres parties de l'application par des talons ou des cales. Plus ici: https://msdn.Microsoft.com/en-us/library/hh549175.aspx
4
Jorge Garcia