【问题标题】:Different Paths To msbuild in VS2017VS2017 中 msbuild 的不同路径
【发布时间】:2017-08-27 07:40:11
【问题描述】:

操作系统:Microsoft Windows [Version 10.0.14393]

VS版本:2017 Community

当我运行 vswhere.exe 时,我得到以下信息,基于官方 vswhere documentation 我可以构建到 msbuild 的路径,这似乎有效:

C:\Users\user\Desktop>"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
Visual Studio Locator version 1.0.62 [query version 1.10.80.60812]
Copyright (C) Microsoft Corporation. All rights reserved.
[...]
installationPath: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
[...]
C:\Users\user\Desktop>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"
Microsoft (R)-Buildmodul, Version 15.1.1012.6693

如果我启动位于"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsMSBuildCmd.bat" 的开发人员命令提示符,我会得到以下结果:

C:\Users\user>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsMSBuildCmd.bat"
**********************************************************************
** Visual Studio 2017 MSBuild Command Prompt
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Users\user>where msbuild
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

  1. 启动开发人员命令提示符后返回的第二个路径是什么以及返回的路径是什么
  2. 我总是使用第一条路径 ("C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe") 来调用 msbuild 来构建 C/C++/VC++ 项目。这有什么问题吗?

【问题讨论】:

  • MSBuild 传统上包含在 .NET 安装中。但是当它需要做更多的工作时,它就停止了扩展,特别是必须在 VS2010 上构建 C++ 项目,在 VS2012 上支持 WinRT 并获得一个全新的 api。所以它作为一个单独的产品被剥离出来,只附带一个 VS 安装。旧版本保留给在代码中依赖 MSBuild 并保持自制构建服务器运行的用户。它不适合构建 VS2017 或 C++ 项目,缺少的 .targets 文件是最大的障碍。

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


【解决方案1】:

VS 2017 切换到 msbuild 的本地副本,如果您使用 VS 2015 命令提示符,您会看到不同的全局路径。

where 命令列出了它在PATH 上找到的所有匹配的可执行文件,但当您运行msbuild 命令时,命令提示符只会使用第一个。

您看到的第二个msbuild.exe 是 .NET Framework 的一部分 - 这是集成到 .NET Framework 中并作为其一部分提供的 MSBuild 版本。与最新版本的 Visual Studio 安装的版本相比,此版本较旧。但出于兼容性原因,它可能会继续包含在 .NET Framework 中。它甚至能够构建大量项目,然后使用 VS 安装的目标和任务 - 只有需要更改 MSBuild 本身的项目格式更改才会不兼容(例如用于 .NET Core 项目的新项目格式)。

您应该始终使用 VS 2017 版本的 msbuild.exe 始终获得与 Visual Studio 一致的构建结果。

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多