MSBuild

MSBuild在MSDN MSBuild 文档中有较为详细的描述,在项目中我们可能更多的是想通过它来Build更方便的Build我们的工程,本文主要整理并介绍使用MSBuild的一些方法,命令行参数等等。

语法:                             MSBuild.exe [选项] [项目文件]

描述:                    在项目文件中生成指定的目标。如果

未指定项目文件,MSBuild 将搜索

当前工作目录来查找文件扩展名

以“proj”结尾的文件并使用该文件。

开关:

/target:<targets>  在此项目中生成这些目标。使用

分号或逗号分隔多个目标,或者分别指定

每个目标。(缩写: /t)

示例:

/target:Resources;Compile

/property:<n>=<v>  设置或重写这些项目级属性。<n> 是

属性名,<v> 为属性值。请使用

分号或逗号分隔多个属性,或者

分别指定每个属性。(缩写: /p)

示例:

/property:WarningLevel=2;OutDir=bin\Debug\

/maxcpucount[:n]   指定用于生成的最大

并发进程数。如果未使用开关,则使用的默认值

为 1。如果使用开关时不带值,

MSBuild 将最多使用计算机上的

处理器数。(缩写: /m[:n])

/toolsversion:<version>

要在生成过程中使用的 MSBuild 工具集

(任务、目标等) 的版本。此版本将重写

个别项目指定的版本。(缩写:

/tv)

示例:

/toolsversion:3.5

/verbosity:<level> 在事件日志中显示此级别的信息量。

可用的详细级别有: q[uiet]、 m[inimal]、

n[ormal]、d[etailed] 和 diag[nostic]。(缩写: /v)

示例:

/verbosity:quiet

/consoleloggerparameters:<parameters>

控制台记录器的参数。(缩写: /clp)

可用的参数有:

PerformanceSummary -- 显示在任务、目标和项目上

花费的时间。

Summary -- 结束时显示错误和警告的摘要。

NoSummary -- 结束时不显示错误和警告

的摘要。

ErrorsOnly -- 仅显示错误。

WarningsOnly -- 仅显示警告。

NoItemAndPropertyList -- 在开始生成每个项目时不显示

项和属性的列表。

ShowCommandLine -- 显示 TaskCommandLineEvent 消息

ShowTimestamp -- 将时间戳作为所有消息的前缀

显示。

ShowEventId -- 显示已开始事件、已完成事件和消息

的事件 ID。

ForceNoAlign -- 不将文本与控制台缓冲区的大小

匹配。

DisableConsoleColor -- 将默认控制台颜色

用于所有记录消息。

DisableMPLogging -- 在非多处理器

模式下运行时,禁用输出的多处理器

日志记录样式。

EnableMPLogging -- 即使在非多处理器

模式下运行,也启用多处理器

日志记录样式。默认情况下启用此日志记录样式。

Verbosity -- 重写此记录器的  /verbosity

设置。

示例:

/consoleloggerparameters:PerformanceSummary;NoSummary;

Verbosity=minimal

/noconsolelogger   禁用默认控制台记录器,并且不将事件

记录到控制台。(缩写:  /noconlog)

/fileLogger[n]     将生成输出记录到文件中。默认情况下,

该文件在当前目录中,名称为

“msbuild[n].log”。所有节点中的事件合并到

单个日志中。fileLogger 的文件和

其他参数的位置可以通过添加

“/fileLoggerParameters[n]”开关来指定。

“n”(如果存在)可以为 1-9 的数字,允许最多附加

10 个文件记录器。(缩写:  /fl[n])

/fileloggerparameters[n]:<parameters>

为文件记录器提供任何额外的参数。

存在此开关意味着

存在对应的 /filelogger[n] 开关。

“n”(如果存在)可以为 1-9 的数字。

任何分布式文件记录器也可以使用

/fileloggerparameters,具体可参阅 /distributedFileLogger 的

说明。

(缩写: /flp[n])

为控制台记录器列出的相同参数

可用。某些其他可用参数有:

LogFile -- 生成日志将写入其中的

日志文件的路径。

Append -- 确定是将生成日志附加到日志文件,

还是覆盖日志文件。如果设置此

开关,则会将生成日志附加到日志文件;

如果不设置此开关,则会覆盖

现有日志文件的内容。

默认值为不附加到日志文件。

Encoding -- 指定文件的编码,

例如,UTF-8、Unicode 或 ASCII

默认的详细级别为 Detailed。

示例:

/fileLoggerParameters:LogFile=MyLog.log;Append;

Verbosity=diagnostic;Encoding=UTF-8

/flp:Summary;Verbosity=minimal;LogFile=msbuild.sum

/flp1:warningsonly;logfile=msbuild.wrn

/flp2:errorsonly;logfile=msbuild.err

/distributedlogger:<central logger>*<forwarding logger>

使用此记录器来记录 MSBuild 中的事件,向每个节点

附加不同的记录器实例。若要指定

多个记录器,请分别指定每个记录器。

(缩写 /dl)

<logger> 语法为:

[<logger class>,]<logger assembly>[;<logger parameters>]

<logger class> 语法为:

[<partial or full namespace>.]<logger class name>

<logger assembly> 语法为:

{<assembly name>[,<strong name>] | <assembly file>}

<logger parameters> 是可选的,并且按键入的

形式原样传递给记录器。(缩写: /l)

示例:

/dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

/dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll

/distributedFileLogger

将生成输出记录到多个日志文件,每个 MSBuild 节点

一个日志文件。这些文件的初始位置为

当前目录。默认情况下,这些文件名为

“MSBuild<nodeid>.log”。可通过添加

“/fileLoggerParameters”开关来指定

这些文件的位置和 fileLogger 的其他参数。

如果日志文件名是通过 fileLoggerParameters

开关设置的,分布式记录器将使用 fileName 作为

模板并将节点 ID 附加到此 fileName

以便为每个节点创建一个日志文件。

/logger:<logger>   使用此记录器来记录 MSBuild 中的事件。若要指定

多个记录器,请分别指定每个记录器。

<logger> 语法为:

[<logger class>,]<logger assembly>[;<logger parameters>]

<logger class> 语法为:

[<partial or full namespace>.]<logger class name>

<logger assembly> 语法为:

{<assembly name>[,<strong name>] | <assembly file>}

<logger parameters> 是可选的,并按键入的

形式原样传递给记录器。(缩写: /l)

示例:

/logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

/logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML

/validate          依据默认架构验证项目。(缩写:

/val)

/validate:<schema> 依据指定的架构验证项目。 (缩写:

/val)

示例:

/validate:MyExtendedBuildSchema.xsd

/ignoreprojectextensions:<扩展名>

确定要生成的项目文件时要忽略的

扩展名的列表。使用分号或逗号来分隔

多个扩展名。

(缩写: /ignore)

示例:

/ignoreprojectextensions:.sln

/nodeReuse:<parameters>

允许或禁止重复使用 MSBuild 节点。

参数包括:

True -- 生成完成后节点将保留,

并且将由后面的生成重复使用(默认)

False -- 生成完成后节点将不会保留

(缩写: /nr)

示例:

/nr:true

/preprocess[:file]

通过嵌入将在生成过程中导入的

所有文件并标记其边界,

创建一个聚合的项目文件。这对于

了解导入什么文件、从何处导入以及

这些文件在生成中的构成

非常有用。默认情况下,输出将写入

控制台窗口。如果提供输出文件的路径,

则将改用该路径。

(缩写: /pp)

示例:

/pp:out.txt

/detailedsummary

在生成的结尾显示有关

所生成的配置以及如何向节点安排

这些配置的详细信息。

(缩写:  /ds)

@<file>            从文本文件插入命令行设置。若要指定

多个响应文件,请分别指定每个响应

文件。

自动从以下位置使用任何

名为“msbuild.rsp”的响应文件:

(1) msbuild.exe 的目录

(2) 生成的第一个项目或解决方案的目录

/noautoresponse    不自动包括任何 MSBuild.rsp 文件。(缩写:

/noautorsp)

/nologo            不显示启动版权标志和版权消息。

/version           仅显示版本信息。(缩写:  /ver)

/help              显示此用法消息。(缩写: /? 或 /h)

示例:

MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release

MSBuild MyApp.csproj /t:Clean

/p:Configuration=Debug;TargetFrameworkVersion=v3.5

时间: 2024-10-11 16:57:10

MSBuild的相关文章

团队项目利用Msbuild自定义Task实现增量发布

最近一直在做自动部署工具,主要利用到了Msbuild的自定义Task,通过Task我们可以自定义编译.部署过程减少人工直接干预.Msbuild的详细用法,可以去园子里搜一下,有很多的基础教程,这里就不赘述了,还是集中说一下增量发布的问题. 增量主要涉及到三部分内容,程序.配置和静态文件(例如CSS.JS等),程序的增量比较简单,通过版本对比或者TFS的修改记录便可以查询出被修改过的程序集.配置文件增量大致有两种,全增量和部分增量.全增量也很简单,直接把修改过的配置文件复制到发布包就OK了:部分增

(持续集成)win7上部署Jenkins+MSBuild+Svn+SonarQube+SonarQube Scanner for MSBuild (一)

一.Jenkins介绍 jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的”自动化”编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant.maven.gradle等多种第三方构建工具,同时跟svn.git能无缝集成,也支持直接与知名源代码托管网站,比如github.bitbucket直接集成. jenkins官网地址为https://jenkins.io/index.html,jen

.Net Core迁移到MSBuild的多平台编译问题

一.前言 本篇主要讨论.NET Core应用程序项目结构的主题,重点探索.NET Core应用程序的多平台编译问题,这里指的多平台是指.NET Framework..NET Core App..NET Standard.Mono.UWP等多平台的条件编译.项目(包)引用.编译符号等问题. .NET Core已经将新的项目管理配置过渡回MSBuild编译系统中.虽然现在可以从无到有的使用VS2017来创建一个新的MSBuild项目,但是还是有好多遗留程序使用着以JSON格式存储的项目配置文件为基础

CCNET+MSBuild+SVN实时构建的优化总结

本文不是介绍如何使用CCNET+MSBuild+SVN构建自动编译系统,相关的内容可以从很多地方获取,可以再园子里搜一下. 随着我们的SVN库日益壮大,容量达到10G,几十G 甚至更大时,我们发现自动构建速度越来越慢,直到有一天你发现入了很小一段代码却不得不等待几小时构建完成,程序员的忍受是有极限的,因此我们决定采取措施实施优化. 首先,我们必须分析哪些因素导致了我们构建速度的减慢,罗列一下,大概如下几个方面: 1. SVN库太大,使得构建服务器在更新SVN代码时花费大量时间. 2. SVN库里

MSBuild使用——构建C/C++项

1. MSBuild可以Build C#项目,能否Build C/C++开发的项目 答案当然是可以.C/C++项目文件为.vcproj. (1)使用VCBuild任务 包装 vcbuild.exe,该执行程序生成 Visual C++ 项目和包含 Visual C++ 项目的解决方案. 必选参数:Projects:指定要生成的项目. (2)使用MSBuild任务 基于另一个 MSBuild 项目生成 MSBuild 项目. 必选参数:Projects:指定要生成的项目. 与使用Exec任务调用

使用MSBuild自动编译发布你的ASP.NET应用程序

此文介绍如何使用MSBuild自动编译并发布你的ASP.NET应用程序. 比较适合每日编译. 通常我们都使用IDE(Visual Studio)编译并发布ASP.NET程序, 需要手动操作, 如果步骤繁琐会很容易出错. 同样的工作可由MSBuild自动完成, MSBuild是一个Visual Studio编译工具, 随.NET Framework提供, 一般可在 %SystemDrive% \WINDOWS\Microsoft.NET\Framework\v3.5 找到. 有关MSBuild的详

error MSB4019: 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets”

error MSB4019: 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets” This is very easy to do. Open your build definition and go to the "Process" page. Then under the "3. Advan

MSBuild 教程(2)

如果你没有看过第一部分教程,请先看完后再回到这里来继续我们的第二部分. 我们下一步的工作是发布我们的网站,也就是创建Publish target. 为了能使我们的target工作,我们需要给它传递两个属性,WebProjectOutputDir 和 OutDir, 这两个变量将确保我们能把我们的网站文件发布到正确的目录下面. MSbuild 允许我们声明一个PropertyGroup, 在这个PropertyGroup中,我们可以创建一些中间变量用来存储一些设置数据,当我们进行读写操作的时候,我

集成Visual Studio/MSBuild publish 和FIS3

Fis3 是很不错的前端优化工具,功能强大,在国内也比较流行.Visual Studio和MSBuild就不用说了.但是,想把Fis3结合进Visual Studio 或者 MSBuild的开发流程中去,还没见人做过.究其原因,是因为Fis3会改变html页面本身,包括模板文件,如aspx, cshtml, php文件等等,但是,这些文件属于源文件, 是不应当改变的.但是,Visual Studio的发布功能(publish)或者 MSBuild+MSDeploy却提供了把Fis3结合进去的可能