Msbuild 试图构建 msbuild.exe 而不是我的 .csproj 文件。

3

我在虚拟机上安装msbuild时遇到了问题。

我使用的是:

  • Visual Studio 2022社区版
  • .Net Framework v4.8.1
  • msbuild版本 MSBuild version 17.5.0+6f08c67f3 for .NET Framework - 17.5.0.10706
  • Windows 10

如果我创建一个新的 "Hello World" C# 项目(.Net Framework v4.8.1),则无法构建。

Visual Studio在顶部显示错误: enter image description here

错误内容为:

=====================
16-03-2023 18:59:11
Recoverable
Microsoft.Build.Framework.InternalErrorException: MSB0001: Internal MSBuild Error: Cannot acquire required number of nodes.
=============
System.AggregateException: One or more errors occurred. ---> Microsoft.Build.BackEnd.NodeFailedToLaunchException: Den angivne fil blev ikke fundet
   at Microsoft.Build.BackEnd.NodeLauncher.StartInternal(String msbuildLocation, String commandLineArgs)
   at Microsoft.Build.BackEnd.NodeLauncher.DisableMSBuildServer(Func`1 func)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.<>c__DisplayClass14_0.<GetNodes>g__StartNewNode|2(Int32 nodeId)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.<>c__DisplayClass14_0.<GetNodes>b__0(Int32 nodeId)
   --- End of inner exception stack trace ---
---> (Inner Exception #0) Microsoft.Build.BackEnd.NodeFailedToLaunchException: Den angivne fil blev ikke fundet
   at Microsoft.Build.BackEnd.NodeLauncher.StartInternal(String msbuildLocation, String commandLineArgs)
   at Microsoft.Build.BackEnd.NodeLauncher.DisableMSBuildServer(Func`1 func)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.<>c__DisplayClass14_0.<GetNodes>g__StartNewNode|2(Int32 nodeId)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.<>c__DisplayClass14_0.<GetNodes>b__0(Int32 nodeId)<---


 ---> System.AggregateException: One or more errors occurred. ---> Microsoft.Build.BackEnd.NodeFailedToLaunchException: Den angivne fil blev ikke fundet
   at Microsoft.Build.BackEnd.NodeLauncher.StartInternal(String msbuildLocation, String commandLineArgs)
   at Microsoft.Build.BackEnd.NodeLauncher.DisableMSBuildServer(Func`1 func)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.<>c__DisplayClass14_0.<GetNodes>g__StartNewNode|2(Int32 nodeId)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.<>c__DisplayClass14_0.<GetNodes>b__0(Int32 nodeId)
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
   at Microsoft.Build.Shared.ErrorUtilities.ThrowInternalError(String message, Exception innerException, Object[] args)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.GetNodes(String msbuildLocation, String commandLineArgs, Int32 nextNodeId, INodePacketFactory factory, Handshake hostHandshake, NodeContextCreatedDelegate createNode, NodeContextTerminateDelegate terminateNode, Int32 numberOfNodesToCreate)
   at Microsoft.Build.BackEnd.NodeProviderOutOfProc.CreateNodes(Int32 nextNodeId, INodePacketFactory factory, Func`2 configurationFactory, Int32 numberOfNodesToCreate)
   at Microsoft.Build.BackEnd.NodeManager.AttemptCreateNode(INodeProvider nodeProvider, NodeConfiguration nodeConfiguration, Int32 numberOfNodesToCreate)
   at Microsoft.Build.BackEnd.NodeManager.CreateNodes(NodeConfiguration configuration, NodeAffinity nodeAffinity, Int32 numberOfNodesToCreate)
   at Microsoft.Build.Execution.BuildManager.PerformSchedulingActions(IEnumerable`1 responses)
   at Microsoft.Build.Execution.BuildManager.<>c__DisplayClass95_0.<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(BuildSubmission submission, Boolean allowMainThreadBuild)
   at Microsoft.Build.Execution.BuildManager.<>c__DisplayClass95_0.<IssueBuildRequestForBuildSubmission>b__0()
   at Microsoft.Build.Execution.BuildManager.ProcessWorkQueue(Action action)

如果我尝试从Visual Studio的“开发人员 PowerShell”中运行msbuild,则会出现以下错误:
> msbuild .\ConsoleApp2.csproj
MSBuild version 17.5.0+6f08c67f3 for .NET Framework
MSBUILD : error MSB1008: Only one project can be specified.
    Full command line: '"C:\PROGRA~1\MIB055~1\2022\COMMUN~1\MSBuild\Current\Bin\amd64\MSBuild.exe" "C:\Program Files\Microsoft Visual Studio\2022\Community\\MSBuild\Current\Bin\amd64\MSBuild.exe" .\ConsoleApp2.csproj'
  Switches appended by response files:
'' came from 'C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.rsp'
Switch: .\ConsoleApp2.csproj

For switch syntax, type "MSBuild -help"

这看起来相当奇怪,它似乎试图运行该命令。 它将自身作为参数插入了自己。
"C:\PROGRA~1\MIB055~1\2022\COMMUN~1\MSBuild\Current\Bin\amd64\MSBuild.exe" "C:\Program Files\Microsoft Visual Studio\2022\Community\\MSBuild\Current\Bin\amd64\MSBuild.exe" .\ConsoleApp2.csproj

如果我尝试直接运行msbuild,似乎msbuild正在尝试构建 msbuild.exe,并且明显失败了。

> msbuild
MSBuild version 17.5.0+6f08c67f3 for .NET Framework
Build started 16-03-2023 19:29:57.
Included response file: C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.rsp

Project "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe" on node 1 (default targets).
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe(1,1): error MSB4025: The project file could not be loaded. Dataene på rodniveau er ugyldige. linje 1, position 1.
Done Building Project "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe" (default targets) -- FAILED.


Build FAILED.

"C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe" (default target) (1) ->
  C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.exe(1,1): error MSB4025: The project file could not be loaded. Dataene på rodniveau er ugyldige. linje 1, position 1.

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.04

我不知道这个额外的msbuild是从哪里来的。

我已经尝试过:

  • 重新安装Visual Studio 2022
  • 检查环境变量-所有看起来都很正常
  • 检查文件C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\MSBuild.rsp-它只包含默认注释

如何修复msbuild,使其能够再次构建项目?


只是想确认一下,您创建的所有项目是否都有这个问题?为了避免解决方案设置引起此问题,请转到解决方案的根目录,删除 .vs 文件夹和 obj/bin 文件夹,然后打开解决方案并重试。 - Bowman Zhu-MSFT
还可以尝试清理 C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\17.0_xxx\ComponentModelCache 下的缓存。 - Bowman Zhu-MSFT
我可以确认,在那台特定的电脑上,我尝试构建的所有项目都出现了这个问题。我已经尝试删除 .vs 文件夹,并尝试创建一个只包含 hello world 项目的空新解决方案。 - Mr. JWolf
我已经尝试清除缓存,但结果仍然相同。 - Mr. JWolf
2个回答

2

2

找到的解决方案DictationScratchPad很好用!

我不知道这些键是从哪里来的,但我在注册表中有以下键值。(在删除之前导出了它们)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MSBuild.exe]
"HTag"=dword:00000000
"UseFilter"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MSBuild.exe\0]
"HTag"=dword:00000000
"Debugger"="ntsd -c q"
"FilterFullPath"="C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\MSBuild.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MSBuild.exe\1]
"HTag"=dword:00000000
"Debugger"="ntsd -c q"
"FilterFullPath"="C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe"

删除它们解决了问题,msbuild现在正常工作。


尽快摆脱Avast,它不适合程序员的电脑。 - Hans Passant
Avast没有安装在上面,它安装了"Heimdal Thor Agent"作为其反病毒软件。 - Mr. JWolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接