您的位置:首页 > 产品设计 > UI/UE

MSBuid使用和编译失败

2014-10-29 23:25 183 查看
        MSBuid(Microsoft Build Engine)是vs的生成平台。这个处理和生成程序方面是完全透明的。而且,MSBuild通过解读一个类似于XML文件的方式来进行编译,即工程文件,这样,可以让开发人员清楚了解编译的顺序和生成的文件项目。同时,开发人员通过修改这些文件来定义自己的规则。但是,这样好处是便于控制,坏处是,它没有VS编译的智能,一旦有一点问题,那么这个就无法编译通过。

MSBuild平台的主要涉及到三部分:执行引擎、构造工程、任务。其中,最为核心是执行引擎。

执行引擎可以理解为编译器,即MSBuild.exe文件。正常调用是msbuild.exe <ProjectFile>进行编译,其中msbiuld就是执行引擎,而ProjectFile即为.sln或者.csproj文件,也就是所谓的构造工程文件,即工程文件。使用方法:打开电脑的cmd或者powershell,然后输入

C:\windows\Microsoft.NET\Framework\v4.0.30319\msbuild
D:\XXXproject\XXX.sln或则XXX.csproj

前面为MSBuild.exe文件,前面也是他的安装路径,这就相当于调用msbild.exe进行编译,后面是对应项目的解决方案或者是工程文件。

在MSBuild中,还有许多其他的功能,在后面可以加上各种各样的参数,例如

C:\windows\Microsoft.NET\Framework\v4.0.30319\msbuild
D:\XXXproject\XXX.sln
/t:Clean /t:Build /p:Configuration=Release /p:GenerateSerializationAssemblies=Off

这里/t即/targets表示调用任务,这个/t
Clean 表示项目编译前先清理项目,/t Build表示进行编译,这个就是说先清理项目,再进行构建项目,/p即为/property表示在特定的节点传入参数,这里/p:Configuration=Release表示调用工程文件中Configuration节点(这个再之前介绍工程文件的那篇里有,需要去看下),并对其传入参数,这个Release表示调用参数为Release的Configuration节点,不使用其他节点,否则使用默认的Configuration节点,这样,最明显的先过是bin目录中只会产生Release目录。GenerateSerializationAssemblies控制成员提供只能在内部进行的对
C# 项目配置属性的访问权限。这里设置为off,表示这个可以通过外部传参等方式进行项目的配置。这里可以发现,其实MSBuild编译配置也是可以修改。其实这里还有很多的方法,如下:

/ver使用这个会列出项目的.net版本号,编译版本等等的信息,不会进行生成

/t 这个表示在项目生成中调用指定的目标,可以调用默认的目标,如上面的Clean和Build,也可以调用自定义的,在工程文件中自己写的<targets>节点内容

/p 这个官方说法是设置或重写特定的项目级属性,我的理解是往指定的工程文件节点传值,调用指定的节点。上面已经给出例子,这里补充两个可能用到的/property:WarningLevel=2;OutputDir=bin\Debug前一个是警告的等级,后面一个表示文件的输出目录

/?或/h 这个显示帮助信息,显示所有可以使用的

/ds显示详细信息。有关生成的配置,以及如何的生成日志的末尾调度到节点。

/m 这个设置在生成过程中,最大的并发线程数,使用方法是/m:number,这里number是数字

/nr启用或禁用
MSBuild 节点的重用。默认true,表示生成完成后该节点继续使用。

/ignore 这个表示生成是忽略掉某些文件,如/ignore:.vcproj,.sln,这里有多个用;或者,分开。

/tv 这个表示使用指定的.net版本来生成项目,如/tv:3.5,表示使用.net3.5来生成项目

构造工程即为项目中工程文件.csproj文件或者是.sln文件,在前面已经介绍过了

任务直观的可以认为是是工程文件中task节点,在后续会介绍
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息