首页 文章

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

提问于
浏览
786

在大多数情况下,您只需将Visual Studio为您设置的任何内容作为默认值...我指的是在解决方案资源管理器中选择的每个文件的BuildAction属性 . 有很多选择,很难知道他们每个人会做什么 .

7 回答

  • 27
    • Fakes: Microsoft Fakes(单元测试隔离)框架的一部分 . 并非适用于所有Visual Studio版本 . 伪造用于支持项目中的单元测试,通过用存根或填充程序替换应用程序的其他部分来帮助您隔离正在测试的代码 . 更多这里:https://msdn.microsoft.com/en-us/library/hh549175.aspx
  • 4

    Page - 获取指定的XAML文件,并编译为BAML,并将该输出嵌入到程序集的托管资源流中(特别是AssemblyName.g.resources) . 此外,如果您在根XAML元素中具有相应的属性文件,它将创建一个blah.g.cs文件,该文件将包含该页面的“codebehind”的部分类;这基本上涉及调用BAML goop将文件重新保存到内存中,并将类的任何成员变量设置为现在创建的项(例如,如果你将x:Name =“foo”放在项目上,你将能够做到这一点.foo.Background =紫色;或类似的 .

    ApplicationDefinition - 类似于Page,除了它是一步之外,并定义了应用程序的入口点,它将实例化你的app对象,调用它运行,然后实例化StartupUri属性设置的类型,并给你的主窗口 .

    另外,要明确的是,这个问题总的来说就是它的结果集;任何人都可以通过构建MSBuild任务来定义其他BuildActions . 如果您查看%systemroot%\ Microsoft.net \ framework \ v \目录,并查看Microsoft.Common.targets文件,您应该能够解密更多(例如,使用VS Pro及更高版本,有一个“阴影”动作,允许您生成私有访问器,以帮助单元测试私有类 .

  • 4

    从文档:

    BuildAction属性指示Visual Studio在执行构建时对文件执行的操作 . BuildAction可以具有以下几个值之一:无 - 文件未包含在项目输出组中,并且未在构建过程中编译 . 一个示例是包含文档的文本文件,例如自述文件 . 编译 - 将文件编译到构建输出中 . 此设置用于代码文件 . 内容 - 文件未编译,但包含在内容输出组中 . 例如,此设置是.htm或其他类型的Web文件的默认值 . 嵌入式资源 - 此文件作为DLL或可执行文件嵌入在主项目构建输出中 . 它通常用于资源文件 .

  • 5

    VS2010具有“构建操作”的属性,也具有“复制到输出目录”的属性 . 因此,如果将copy属性设置为“Copy if Newer”或“Copy Always”,则“None”的操作仍将复制到构建目录 .

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

    对于某些外部链接的.config包含,我使用了“无”的“构建操作”设置和“复制到输出指令”设置的“复制如果更新” .

    G .

  • 106

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

    Windows Presentation Foundation构建WPF应用程序(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) .

  • 925
    • None :该文件未包含在项目输出组中,并且未在构建过程中编译 . 一个示例是包含文档的文本文件,例如自述文件 .

    • Compile :文件被编译到构建输出中 . 此设置用于代码文件 .

    • Content :允许您作为流来检索文件(与程序集在同一目录中)Application.GetContentStream(URI) . 要使此方法起作用,它需要一个AssemblyAssociatedContentFile自定义属性,当您将文件标记为"Content"时,Visual Studio会轻松添加该属性

    • Embedded resource :将文件嵌入独占程序集清单资源中 .

    • Resource (仅限WPF):将文件嵌入共享(由具有类似设置的程序集中的所有文件)组件清单资源,名为AppName.g.resources .

    • Page (仅限WPF):用于将 xaml 文件编译为 baml . 然后使用与 Resource 相同的技术嵌入 baml (即可用作“AppName.g.resources”)

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

    • SplashScreen (仅限WPF):标记为 SplashScreen is shown automatically when an WPF application loads, and then fades的图像

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

    • DesignDataWithDesignTimeCreatableTypes :编译XAML视图模型,以便可以使用Visual Studio中的示例数据预览用户控件(uses actual types)

    • EntityDeploy :(实体框架):used to deploy the Entity Framework artifacts

    • CodeAnalysisDictionary :包含custom word dictionaryspelling rules的XML文件

  • 34

    如何从Microsoft Connect(解释DesignData和DesignDataWithDesignTimeCreatableTypes)类型this page . 引用:

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

    必须为示例数据.xaml文件分配以下构建操作之一:

    DesignData :样本数据类型将创建为虚假类型 . 当样本数据类型不可创建或具有您要为其定义样本数据值的只读属性时,请使用此构建操作 .

    DesignDataWithDesignTimeCreatableTypes :将使用示例数据文件中定义的类型创建示例数据类型 . 使用默认的空构造函数创建样本数据类型时,请使用此构建操作 .

    不是那么令人难以置信的详尽无遗,但它至少给出了一个暗示 . This MSDN walkthrough也提出了一些想法 . 我不知道这些构建操作是否也适用于非Silverlight项目 .

相关问题