1 基本定义

属性是键/值的配对,相应于:

环境变量项目文件自身中的定义使用 /p 传递给 msbuild.exe 的命令行参数

2 项

<Item Type="FilesToCompile" Include="file1.cs"/>
<Item Type="FilesToCompile" Include="file2.cs"/>
<Item Type="FilesToCompile" Include="file3.cs"/>
<Item Type="FilesToCompile" Include="*.cs"/>
<Item Type="FilesToCompile" Include="file1.cs;file2.cs;file3.cs" />
<Item Type="FilesToCompile" Include="*.cs" Exclude="Bad*.cs"/>

3 任务和属性

项可以用作任务的输入。相应的 XML Task 元素有一个强制的属性:它的 Name 属性。您为该属性设置的值会告诉引擎要执行的任务的种类。MSBuild 提供了几个现成可用的任务,例如 Copy、Csc、Exec、MakeDir、MSBuild、ResGen 和 Vbc。

<Item Type="FilesToCompile" Include="*.cs"/>  <Target Name="BuildHelloWorldExecutable"><Task Name="csc" Sources="@(FilesToCompile)"OutputAssembly="HelloWorld.exe"TargetType="exe"/>
</Target>
<Project><Property ExecutableName="HelloWorld" /><Property OutputPath="bin" /><Item Type="FilesToCompile" Include="*.cs"/>  <Target Name="BuildHelloWorldExecutable"><TaskName="MakeDir"Directories="$(OutputPath)"/><Task Name="csc" Sources="@(FilesToCompile)"  OutputAssembly="$(OutputPath)\$(ExecutableName).exe"TargetType="exe"/></Target>
</Project>

4 使用条件进行选择

<PropertyGroup Condition="'$(Configuration)'=='DEBUG'"><Property OutputPath="bin\debug" />...
</PropertyGroup><PropertyGroup Condition="'$(Configuration)'=='RELEASE'"><Property OutputPath="bin\release" />...
</PropertyGroup>

5 Summary

属性是指定输入参数,任务是实际的过程,从属于一个特定的目标

可以改变Visual Studio MSBuild的设置,了解编译的过程 Options->Projects and Solutions->Build and Run->MSBuild…

任务就是 MSBuild 中的基本生成块。Target 将任务以特殊顺序组合在一起。它的 Name 是唯一的强制属性,因为您需要能够在命令行使用 /t 开关传递该属性,或者在 Project XML 根节点的 DefaultTargets 属性中传递该属性,这样才能使 MSBuild 知道要执行的任务。在项目文件中,Tasks 元素的定义顺序非常重要,因为 MSBuild 每次针对给定目标执行一个任务。

6 Reference:

6.1 msdn
6.2 MSBuild Overview

Post by: Jalen Wang (转载请注明出处)

转载于:https://www.cnblogs.com/jalenwang/archive/2012/02/15/2353151.html

[Learn Note] MSBuild相关推荐

  1. C++ Learn Note

    C++ 的筆記部分 基礎部分 C++ 可變範本參數 在C++11之前,類範本和函數範本只能含有固定數量的範本參數.C++11增強了範本功能,允許範本定義中包含0到任意個範本參數,這就是可變參數範本 / ...

  2. SPARC Learn Note

    文章目录 SPARC 笔记部分 IDA部分 SPARC指令部分 指令类型 算术/逻辑/移位指令 加载/存储说明 分行说明 常用指令 加载/存储说明 算术/逻辑指令 SETHI指令(和SET合成指令) ...

  3. why I need a flow learn note.

    1.其实学网站学安卓也写了txt的学习笔记.然后扔着,(没有时间线和互动性),然后就没有然后了. 2.知识体系,一个月后,哎呦我擦,我会啥来着(搞了这么久,深有体会) 3.随性的学习笔记搬不上 网站 ...

  4. React学习笔记 - 组件Props

    React Learn Note 4 React学习笔记(四) 标签(空格分隔): React JavaScript 三.组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你 ...

  5. 【第一次参加kaggle比赛记录-Quora Insincere Questions Classification】- Word Embedding

    In summary, word embeddings are a representation of the *semantics* of a word, efficiently encoding ...

  6. 从 git bash 命令行中窥探人生

    脚本之家 你与百万开发者在一起 众所周知,现实世界和计算机世界是不同的,但是计算机作为人类对现实世界的抽象模拟,在一定程度上,具备了现实世界的基本特征,本文将以哲学角度对比分析现实世界和计算机世界,试 ...

  7. Learn Git Branching Note

    基础篇 1 Git Commit git commit 2 Git Branch git branch newImage git commit git checkout newImage git co ...

  8. msbuild FileSysExcludeFiles

    <?xml version="1.0" encoding="utf-8"?> <!-- This file is used by the pu ...

  9. Latent dirichlet allocation note

    2 Latent Dirichlet Allocation Introduction LDA是给文本建模的一种方法,它属于生成模型.生成模型是指该模型可以随机生成可观测的数据,LDA可以随机生成一篇由 ...

最新文章

  1. 一、Windows Server 2016 AD服务器搭建
  2. sourceinsight4 quicker._我要以一打十!Quicker:新一代Windows必备效率神器!
  3. 讲讲python使用xpath中遇到[Element a at 0x39a9a80到底是什么
  4. 周昌印:忘记技术 从用户与市场考虑问题
  5. Java面试你必须要知道的那些知识,面试建议
  6. 为什么私有GIT服务器上无法查看上传的代码?
  7. 程序员的自我修养笔记 2
  8. 为什么一个实例只有一个LGWR
  9. OSChina 周六乱弹 —— 程序猿到底有多少个不解风情的瞬间?
  10. 帝国7.2 php5.2,帝国CMS7.2版升级到7.5版的详细步骤方法(已测)
  11. 406.根据身高重建队列
  12. Qt编写Onvif搜索及云台控制工具
  13. sap设置默认登录语言
  14. Gtest:死亡测试
  15. 计算当前日期,经过一段工作日后的日期(跳过节假日)
  16. MonsoonRF推出新型RFID读取器,安装难度和换灯泡差不多
  17. 两台局域网电脑大数据传输详细教程
  18. 程序员,如果性格内向要做些什么?
  19. NAT 网络地址转换
  20. Linux调度器及CFS调度器

热门文章

  1. 可调速自动播放ppt
  2. 投影参数_购买家用投影仪主要看什么参数?
  3. xdebug使用教程
  4. Apache POI电子表格/Spreadsheet
  5. (两百七十)学习 针对低电耗模式和应用待机模式进行优化
  6. SMS基本概念和移动通信系统介绍
  7. c语言怎么写出2次元方程,三次樣条C语言的实现.doc
  8. java mysql sql注入_Java防SQL注入MySQL数据查询
  9. Unity3D 使用高通AR(一)
  10. SpringMVC 集成 JWT验证方式