MSBuild

原文MSBuild

属性

 属性表示可用于配置生成的键/值对。 属性的声明方式是:创建一个与属性同名的元素,将其指定为 PropertyGroup 元素的子元素。 例如,下面的代码将创建一个名为BuildDir 的属性,其值为 Build。  

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

通过在元素中放置一个 Condition 属性,你可以有条件地定义一个属性。 除非条件的计算结果为 true,否则会忽略条件元素的内容。 在下面的示例中,将定义Configuration 元素(如果尚未定义)。

<Configuration  Condition=" '$(Configuration)' == '' ">Debug</Configuration>

在整个项目文件中,可以使用语法 $(PropertyName) 来引用各个属性。 例如,可以使用 $(BuildDir) 和 $(Configuration) 来引用前面示例中的属性。 

项是生成系统的输入,通常表示文件。 将根据用户定义的项名称,将项编组到各种项类型中。 这些项类型可以用作任务的参数,任务使用各个项来执行生成过程的步骤。

通过创建一个元素在项目文件中声明项,该元素的项类型的名称是 ItemGroup元素的子元素。 例如,下面的代码将创建一个名为 Compile 的项类型,其中包括两个文件。

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

在整个项目文件中,可以使用语法 @(ItemType) 来引用项类型。 例如,可以使用 @(Compile) 引用示例中的项类型

在 MSBuild 中,元素和特性名称区分大小写。 但是,属性、项和元数据名称不区分大小写

可以使用通配符声明项,并且对于更高级的生成方案,项可以包含其他元数据。 

任务

任务是 MSBuild 项目用于执行生成操作的可执行代码单元。 例如,任务可能编译输入文件或运行外部工具。 任务可以重用,并且可由不同项目中的不同开发人员共享。

MSBuild 包含一些可根据你的要求进行修改的常见任务。例如,用于复制文件的 Copy、用于创建目录的 MakeDir 以及用于编译 Visual C# 源代码文件的 Csc

通过创建一个元素在 MSBuild 项目文件中执行任务,该元素的任务的名称是 Target 元素的子元素。 任务通常接受参数,参数将作为元素的特性进行传递。 MSBuild 的属性和项都可用作参数。 例如,以下代码将调用 MakeDir 任务,并将前面示例中声明的 BuildDir 属性的值传递到该任务。

<Target Name="MakeBuildDirectory">
    <MakeDir  Directories="$(BuildDir)" />
</Target>

目标

目标按特定的顺序将任务组合到一起,并将项目文件的各个部分公开为生成过程的入口点。 目标通常分组到各个逻辑部分中,以便提高可读性并实现扩展。 通过将生成步骤拆分为目标,你可以从其他目标中调用生成过程的一个部分,而不必将那部分代码复制到每个目标中。 例如,如果生成过程的多个入口点需要生成引用,你可以创建一个生成引用的目标,然后从所要求的每个入口点运行此目标。

目标是使用 Target 元素在项目文件中声明的。 例如,以下代码将创建一个名为 Compile 的目标,该目标随后将调用具有前面示例中声明的项列表的 Csc 任务。

<Target Name="Compile">
    <Csc Sources="@(Compile)" />
</Target>

在更高级的方案中,目标可用于描述彼此之间的关系并执行依赖性分析,这样,如果目标是最新的,则可以跳过生成过程的整个部分。

生成日志

你可以将生成错误、警告和消息记录到控制台或其他输出设备。 

posted @ 2015-04-19 22:09  senki  阅读(136)  评论(0)    收藏  举报