加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

使用命令行MSBuild编译VisualStudio的项目

(2019-07-18 14:35:28)
标签:

msbuild

microsoftbuildengine

分类: asp_.net_C#_Python_VS/Code

       Microsoft Build Engine是一个用于生成应用程序的平台。此引擎(也称为 MSBuild)为项目文件提供了一个 XML 架构,用于控制生成平台处理和生成软件的方式。 Visual Studio 会使用 MSBuild,但它不依赖于 Visual Studio。 通过在你的项目或解决方案文件中调用 msbuild.exe,你可以在未安装 Visual Studio 的环境中安排和生成产品。

       Visual Studio 使用 MSBuild 来加载和生成托管项目。Visual Studio 中的项目文件(.csproj、.vbproj、vcxproj 等)包含 MSBuild XML 代码,当你使用 IDE 来生成项目时,此代码就会运行。Visual Studio 项目会导入所有必要的设置和生成过程来执行典型的开发工作,但你可以从 Visual Studio 内或通过使用 XML 编辑器对其进行扩展或修改。

      

     下面的示例介绍了什么情况下可使用 MSBuild 命令行而不是 Visual Studio IDE 来运行生成。

      1、未安装 Visual Studio。

      2、你想要使用 64 位版本的 MSBuild。通常情况下不必使用此版本的 MSBuild,但它可以让 MSBuild 访问更多内存。

      3、你想要在多个进程中运行同一生成。 不过,对于 C++ 和 C# 中的项目,你可以使用 IDE 实现相同的结果。

      4、你想要修改生成系统。 例如,你可能想要实现以下操作:

  • 在文件到达编译器之前先进行预处理。

  • 将生成输出复制到其他位置。

  • 从生成输出创建压缩文件。

  • 执行后处理步骤。 例如,你可能希望使用其他版本来标记程序集。

      你可以在 Visual Studio IDE 中编写代码,但使用 MSBuild 来运行生成。 或者,你也可以在开发计算机的 IDE 中生成代码,但使用 MSBuild 命令行生成从多个开发人员集成的代码。

 

   在命令提示符处使用 MSBuild

     若要在命令提示符处运行 MSBuild,请将项目文件随相应的命令行选项一起传递到 MSBuild.exe。 命令行选项允许你设置属性、执行特定的目标,以及设置可控制生成过程的其他选项。 例如,使用以下命令行语法生成文件 MyProj.proj,并将 Configuration 属性设置为 Debug

     MSBuild.exe MyProj.proj /property:Configuration=Debug 

 

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

     描述:          在项目文件中生成指定的目标。如果
                     未指定项目文件,MSBuild 将搜索
                     当前工作目录来查找文件扩展名
                     以“proj”结尾的文件并使用该文件。

    开关(部分):

    /target:  在此项目中生成这些目标。使用
                     分号或逗号分隔多个目标,或者分别指定
                     每个目标。(缩写: /t)
                     示例:
                       /target:Resources;Compile

    /property:=  设置或重写这些项目级属性。 是
                     属性名, 为属性值。请使用
                     分号或逗号分隔多个属性,或者
                     分别指定每个属性。(缩写: /p)
                     示例:
                       /property:WarningLevel=2;OutDir=bin\Debug\

     /toolsversion:
                     要在生成过程中使用的 MSBuild 工具集
                     (任务、目标等) 的版本。此版本将重写
                     个别项目指定的版本。(缩写:
                     /tv)
                     示例:
                       /toolsversion:3.5

      /consoleloggerparameters:
                     控制台记录器的参数。(缩写: /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])

      /ignoreprojectextensions:<扩展名>
                     确定要生成的项目文件时要忽略的
                     扩展名的列表。使用分号或逗号来分隔
                     多个扩展名。
                     (缩写: /ignore)
                     示例:
                       /ignoreprojectextensions:.sln

     /nodeReuse:
                     允许或禁止重复使用 MSBuild 节点。
                     参数包括:
                     True -- 生成完成后节点将保留,
                             并且将由后面的生成重复使用(默认)
                     False -- 生成完成后节点将不会保留
                     (缩写: /nr)
                     示例:
                       /nr:true

     /detailedsummary
                     在生成的结尾显示有关
                     所生成的配置以及如何向节点安排
                     这些配置的详细信息。
                     (缩写: /ds)

               从文本文件插入命令行设置。若要指定
                     多个响应文件,请分别指定每个响应
                     文件。

                     自动从以下位置使用任何
                     名为“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

 

 

 

     有关 MSBuildMSBuild 命令行选项的详细信息,请参阅命令行参考

 

      详细信息请参阅:https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild?view=vs-2015

 

      问题及解决

      问题:运行MSBuild命令时报错:error MSB4019: 未找到导入的项目“C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.\WebApplications\Microsoft.WebApplication.targets”。请确认 声明中的路径正确,且磁盘上存在该文件。

     解决方法:按提示建目录结构,找一个Microsoft.WebApplication.targets文件复制过去即可。

      

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有