【问题标题】:How to retrieve the commandline, used while building a Visual Studio project如何检索命令行,在构建 Visual Studio 项目时使用
【发布时间】:2017-07-07 08:33:46
【问题描述】:

我正在尝试使用 Visual Studio 2017 构建一个 Visual Studio 项目。失败并且错误列表显示了相当多的中文字符。

我了解到这些字符是由于对MSBuild命令的误解造成的,所以我决定自己运行MSBuild命令,以查看哪些错误消息导致中文字符并解决我的问题问题。

因此,如“this relevant StackOverflow post”中所述,我已将我的 Visual Studio“MSBuild 项目构建输出详细程度”修改为“详细”(我什至将其放在“诊断”上),但尽管有相当多的信息,我无法从该输出中检索 MSBuild 命令行。正如我在评论中提到的,我的选项窗口中没有“显示所有设置”复选框。

所以我尝试做其他事情:我打开命令提示符并转到我的 Visual Studio 项目的位置,然后我只是启动了命令“\MSBuild.exe”。然而,这不是一个好主意:项目正在成功构建,警告数量(864)与预期的警告数量不符,如 Visual Studio 的错误列表(3)所示,所以我只剩下两个问题:

  1. 我的电脑上有不同的 MSBuild.exe 文件,我怎么知道哪个 一个 Visual Studio 正在使用? (供您参考,当我只是启动“MSBuild”时它没有运行:我的$PATH 环境变量中没有 MSBuild 运行时目录)
  2. 我相信可能会用到一些参数 使用 Visual Studio 启动构建时,如何检索 那些来自输出窗口的?

与此同时,我发现有一个名为“开发人员命令提示符”的工具。我打开了这个工具,进入我的项目目录并启动了MSBuild。构建成功,零错误和零警告,所以这也没有给出预期的结果。

提前致谢

【问题讨论】:

    标签: visual-studio cmd command-line msbuild visual-studio-2017


    【解决方案1】:

    1.我的PC上有不同的MSBuild.exe文件,我怎么知道Visual Studio使用的是哪一个? (供您参考,当我只是启动“MSBuild”时它没有运行:我的 $PATH 环境变量中没有 MSBuild 运行时目录)

    您可以右键单击您的项目,选择“Unload Project”,然后右键单击并选择“Edit xx.csproj”。在项目文件的顶部,您会注意到Toolversion 的声明:

    <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    

    此外,您可以使用“Ctrl+F”在输出窗口中搜索关键字“MSBuild”(“MSBuild 项目构建输出详细程度”到“详细”),您会发现很多更多条目是MSBuild\15.0

    因此我们可以知道 Visual Studio 2017 使用了 MSBuild.exe 15.0(位于 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin)。

    2.我相信在使用 Visual Studio 启动构建时可能会使用一些参数,我如何从输出窗口中检索这些参数?

    是的,使用 Visual Studio 启动构建时会使用一些参数,例如,配置:Dubug/Release;礼节:Target Framework。您可以使用“Ctrl+F”在输出窗口中检索这些参数来搜索搜索关键字。

    如何检索命令行,在构建 Visual Studio 项目时使用 我无法从该输出中检索 MSBuild 命令行。

    正如您提到的,我在选项窗口中也找不到“显示所有设置”复选框。但这并不影响我们从输出中检索命令行。您应该将“MSBuild 项目构建输出详细程度”更改为“详细”,然后构建项目,您会在输出窗口中找到命令行,例如(C# 项目):

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE ...
    

    后一个命令是这里真正的问题:运行的命令不是MSBuild.exe &lt;something&gt;,而是csc.exe &lt;something&gt;(C# 项目)或CL.exe &lt;something&gt;(C/C++ 项目)。

    为了完成这项工作,编译命令必须从目录C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE 运行,并且在启动编译命令时,不要忘记双引号以处理目录名称中的空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-25
      • 2011-08-05
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2010-09-25
      相关资源
      最近更新 更多