NuGet MSBuild 自动检测在 TeamExplorer 下查找 MSBuild?

NuGet MSBuild auto-detection finding MSBuild under TeamExplorer?

我正在从命令行构建一个 visual studio 解决方案,MSBuild 自动检测程序正在 TeamExplorer 下找到 msbuild,这导致构建失败,因为之后找不到所需的 *.targets 文件。我在 PATH env 变量中的 TeamExplorer 下没有 msbuild,甚至当 运行 VS2019 的开发人员命令提示符时,我也只在 PATH 中看到 Enterprise(visual studio 企业版)下的 msbuild 实例。 How/why是否找到了TeamExplorer下的msbuild,而不是VS enterprise下的?

我在尝试构建 csproj 时在日志中看到以下内容,然后未能选择错误的 msbuild 实例

Looking for VS 16 installation
MsBuild referenced at: C:\Program Files (x86)\Microsoft Visual Studio19\TeamExplorer C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise \MSBuild\Current\Bin\MSBuild.exe

如果您直接从 CMD 运行 msbuild.exe,您应该仔细检查您的环境变量 PATH 并确保您没有指定另一个错误版本的 msbuild.exe .并删除存在错误版本 msbuild.exe 的错误文件夹。

msbuild.exe 的正确版本存在于

C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise\MSBuild\Current\Bin\MSBuild.exe

我认为你应该将路径 C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise\MSBuild\Current\Bin 输入系统环境变量 PATH.

,根据PATHfirst get first use的原则,应该把这个路径放在PATH 再测试一下。

我这边只有vs社区版,下面是示例:

记得点击确定

如果不行,请详细说明你调用的步骤msbuild.exe,能否在VS下建工程IDE, ......

我详细调查了构建过程,发现 msbuild 是通过 powershell(启动进程)调用的,通过 VSSetup powershell 模块提供的 cmdlet(Get-VSSetupInstance)枚举 visual studio 实例,不幸的是它预计不会在机器上找到两个 visual studio 实例(在我的例子中是 TeamExplorer 和 VS 2019 Enterprise),不幸的是脚本最终选择了返回的第一个实例。我现在过滤掉 TeamExplorer,一切正常。感谢您的支持。