如何检索在构建Visual Studio项目时使用的命令行

时间:2017-07-07 08:33:46

标签: visual-studio msbuild visual-studio-2017

我尝试使用Visual Studio 2017构建Visual Studio项目。此操作失败,错误列表显示了一些中文字符。

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

因此,正如" this relevant StackOverflow post"中所述,我修改了我的Visual Studio" MSBuild项目构建输出详细程度"到"详细" (我甚至把它放在" Diagnostic"),但是虽然有相当多的信息,我无法从该输出中检索MSBuild命令行。正如我在评论中提到的,我没有复选框"显示所有设置"在我的选项窗口中。

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

  1. 我的电脑上有不同的MSBuild.exe文件,我怎么知道哪个 一个Visual Studio正在使用? (为了您的信息,我只是启动" MSBuild"它没有运行:我的$PATH环境变量中没有MSBuild运行时目录)
  2. 我相信可能会使用一些参数 使用Visual Studio启动构建时,如何检索 那些来自输出窗口?
  3. 同时我发现有一个工具叫做#34; Developer命令提示符"。我已打开此工具,转到我的项目目录并启动MSBuild。构建成功,没有错误和零警告,所以这也没有给出预期的结果。

    提前致谢

1 个答案:

答案 0 :(得分:1)

  

1.我的电脑上有不同的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">

此外,您可以使用&#34; Ctrl + F &#34;搜索关键字&#34; MSBuild&#34;在输出窗口中(&#34; MSBuild项目构建输出详细程度&#34;到&#34;详细&#34;),您会发现更多条目为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。您可以使用&#34; Ctrl + F&#34;在输出窗口中检索这些参数。搜索搜索关键字。

  

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

就像你提到的那样,我也找不到复选框&#34;显示所有设置&#34;在选项窗口中。但这并不影响我们从输出中检索命令行。您应该更改&#34; MSBuild项目构建输出详细程度&#34;到&#34;详细&#34;,然后构建项目,你会在输出窗口找到命令行,例如(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 <something>,而是csc.exe <something>(C#项目)或CL.exe <something>(C / C ++项目)。

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