Visual Studio项目属性中的各种“构build操作”设置是什么?它们是做什么的?

大多数情况下,您只需要将 Visual Studio为您设置的默认值设置为…我指的是在解决scheme资源pipe理器中select的每个文件的BuildAction属性。 有很多select,很难知道他们每个人会做什么。

  • :文件不包含在项目输出组中,不在编译过程中编译。 一个示例是包含文档的文本文件,如自述文件。

  • 编译 :文件被编译到编译输出中。 此设置用于代码文件。

  • 内容 :允许您通过Application.GetContentStream(URI)作为stream检索文件(与程序集在同一目录中)。 对于此方法的工作,它需要一个AssemblyAssociatedContentFile自定义属性Visual Studio慷慨添加标记为“内容”文件时,

  • embedded式资源 :将文件embedded到独占程序集清单资源中。

  • 资源 (仅适用WPF) :将文件embedded名为AppName.g.resources的共享(通过具有类似设置的程序集中的所有文件)程序集清单资源。

  • Page (仅限WPF) :用于将xaml文件编译为bamlbaml然后embedded与Resource相同的技术(即作为AppName.g.resources提供)

  • ApplicationDefinition (仅限WPF) :标记定义应用程序的XAML / class文件。 使用x:Class =“Namespace.ClassName”指定代码隐藏,并使用StartupUri =“Window1.xaml”设置启动窗体/页面

  • SplashScreen (仅限WPF) :标记为SplashScreen的图像在WPF应用程序加载后自动显示,然后淡入

  • DesignData :编译XAML视图模型,以便可以使用Visual Studio中的示例数据预览usercontrols(使用模拟types)

  • DesignDataWithDesignTimeCreatableTypes :编译XAML视图模型,以便可以使用 Visual Studio中的示例数据预览usercontrols (使用实际types)

  • EntityDeploy :( entity framework) : 用于部署entity framework工件

  • CodeAnalysisDictionary :包含拼写规则的 自定义词典的 XML文件

从文档:

BuildAction属性指示执行构build时Visual Studio用文件执行的操作。 BuildAction可以有几个值之一:

无 – 文件不包含在项目输出组中,不在编译过程中编译。 一个示例是包含文档的文本文件,如自述文件。

编译 – 文件被编译到编译输出中。 此设置用于代码文件。

内容 – 文件未编译,但包含在“内容”输出组中。 例如,此设置是.htm或其他types的Web文件的默认值。

embedded式资源 – 该文件作为DLL或可执行文件embedded到主项目构build输出中。 它通常用于资源文件。

Page – 接收指定的XAML文件,并编译为BAML,并将该输出embedded到您的程序集的托pipe资源stream中(特别是AssemblyName.g.resources)。此外,如果您具有适当的XAML元素文件,它将创build一个blah.g.cs文件,该文件将包含该页面的“代码隐藏”的部分类; 这基本上涉及到一个调用BAML goop重新水合文件到内存中,并设置您的类的任何成员variables到现在创build的项目(例如,如果你把x:Name =“foo”的项目,你可以做这个.foo.Background = Purple;或者类似的。

ApplicationDefinition – 类似于Page,除了它会去执行一些操作,并且定义了你的应用程序的入口点,它将实例化你的应用程序对象,调用run对象,然后实例化StartupUri属性设置的types,并给你的mainwindow 。

另外,要明确的是,这个问题总的来说是无限的, 任何人都可以通过构build一个MSBuild任务来定义额外的BuildActions。 如果您查看%systemroot%\ Microsoft.net \ framework \ v {version} \目录,并查看Microsoft.Common.targets文件,则应该能够解密更多(例如,使用VS Pro及更高版本,有一个“影子”动作,允许您生成私有访问器来帮助unit testing私有类。

VS2010有一个“构build行动”的属性,也是“复制到输出目录”。 因此,如果复制属性设置为“如果更新”或“始终复制”,则“无”操作仍将复制到构build目录。

因此,“内容”的构build操作应保留以指示您将通过“Application.GetContentStream”访问的内容

对于一些外部链接的.config文件,我使用了“生成操作”设置的“无”和“复制为更新”的“复制到输出指令”设置。

G。

在VS2008中,似乎最有用的文档条目是:

Windows Presentation Foundation构buildWPF应用程序(WPF)

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

ApplicationDefinition标识包含应用程序定义的XAML标记文件(其根元素为Application的XAML标记文件)。 当Install为true并且OutputType为winexe时,ApplicationDefinition是必需的。 一个WPF应用程序,因此,一个MSBuild项目只能有一个ApplicationDefinition。

页面标识将内容转换为二进制格式并编译为程序集的XAML标记文件。 页面项目通常与代码隐藏类一起实现。

最常见的页面项目是XAML文件,其顶层元素是以下之一:

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

资源标识编译到应用程序组件中的资源文件。 如前所述,UICulture处理资源项目。

内容标识与应用程序一起分发的内容文件。 描述内容文件的元数据被编译到应用程序中(使用AssemblyAssociatedContentFileAttribute)。

来自Microsoft Connect的此页面 (解释DesignData和DesignDataWithDesignTimeCreatableTypes)types如何? 引用:

以下描述了示例数据文件的两个构build操作。

示例数据.xaml文件必须分配以下其中一个构build操作:

DesignData样本数据types将被创build为人造types。 如果示例数据types不可创build或具有您想要为其定义示例数据值的只读属性,请使用此生成操作。

DesignDataWithDesignTimeCreatableTypes将使用示例数据文件中定义的types创build示例数据types。 使用默认的空构造函数创build示例数据types时,使用此构build操作。

没有那么难以置信,但至less给了一个提示。 这个MSDN演练也给出了一些想法。 我不知道这些构build操作是否也适用于非Silverlight项目。

  • 假货: Microsoft假货(unit testing隔离)框架的一部分。 在所有Visual Studio版本上都不可用。 假货用于支持项目中的unit testing,通过用存根或垫片replace应用程序的其他部分来帮助您隔离正在testing的代码。 更多在这里: https : //msdn.microsoft.com/en-us/library/hh549175.aspx