MSBuild 无法从 CLI 构建。无效的静态调用语法
MSBuild cannot build from CLI. Invalid static invocation syntax
我正在尝试使用 msbuild
从 PowerShell 编译一个 C VS 项目。我现在使用的命令是:
msbuild .\my_solution.sln /t:Rebuild /p:Configuration=Release
但是当我尝试构建时出现以下错误:
C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Microsoft\VC\v160\Microsoft.Cpp.props(31,5): error MSB4186: Invalid static method invocation syntax: "[Microsoft.Build.Utilities.ToolLocat
ionHelper]::FindRootFolderWhereAllFilesExist($(_VCTargetsPathFolders), $(_RelativeToolsetFiles))". Method 'Microsoft.Build.Utilities.ToolLocationHelper.FindRootFolderWhereAllFilesExist' not found. Static meth
od invocation should be of the form: $([FullTypeName]::Method()), e.g. $([System.IO.Path]::Combine(`a`, `b`)).
我已经尝试过以下方法:
- 运行 作为管理员
- 修复Visual Studio
- 完全卸载并重新安装 Visual Studio。
其他有用信息:
- 我正在使用 Visual Studio 社区 2019。
- 我的
msbuild
路径是:C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin
- 我的
VCTargetsPath
是:C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Microsoft\VC\v160\
- 值得注意的是,在我拥有的 UI 版本中,我没有在 CLI 命令中添加额外的包含目录或额外的依赖项。尽管如此,我预期的错误有点像
unknown reference to <function>
。在继续 link 所需的库之前,我试图解决第一个错误,我不认为这是导致问题的原因,但我提到它以防万一。
奇怪的是,如果我使用 Visual Studio UI 重建项目,那么项目构建没有任何问题。
尽管如此,我还是需要从 CLI 构建,所以如果有人分享问题所在,我将非常感激。
根据您的描述,这对我来说效果很好。所以你的环境有些问题。
试试这些:
1) 关闭 VS IDE, 运行 VS2019 的开发者命令提示符 as 管理员
类型:
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Framework.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Engine.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Conversion.Core.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Tasks.Core.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Utilities.Core.dll"
之后,重启测试
随你的意:
如果没有帮助,请运行 C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe
卸载所有VS2017和VS2019版本及其注册信息,任何数据。这就像一个强大的、彻底的卸载。
然后,重新安装版本。
检查你的 MSBuild 版本,我以前遇到过同样的问题。
例如:
msbuild
Microsoft (R) Build Engine version 4.0.30319 for .NET Framework
就我而言(现在),最新版本是 16.9.0(从 here 下载)
Microsoft (R) Build Engine version 16.9.0+57a23d249 for .NET Framework
检查你的 Windows 路径,当我遇到问题时,我得到一个包含旧版本 MSBuild 的 Windows 路径,检查我看到的文件夹“msbuild.exe”。我删除了该条目并为我的好 msbuild 添加了新条目。
%ProgramFiles(x86)%\Microsoft Visual Studio19\Community\MSBuild\Current\Bin
已在 this post
上看到
我正在尝试使用 msbuild
从 PowerShell 编译一个 C VS 项目。我现在使用的命令是:
msbuild .\my_solution.sln /t:Rebuild /p:Configuration=Release
但是当我尝试构建时出现以下错误:
C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Microsoft\VC\v160\Microsoft.Cpp.props(31,5): error MSB4186: Invalid static method invocation syntax: "[Microsoft.Build.Utilities.ToolLocat
ionHelper]::FindRootFolderWhereAllFilesExist($(_VCTargetsPathFolders), $(_RelativeToolsetFiles))". Method 'Microsoft.Build.Utilities.ToolLocationHelper.FindRootFolderWhereAllFilesExist' not found. Static meth
od invocation should be of the form: $([FullTypeName]::Method()), e.g. $([System.IO.Path]::Combine(`a`, `b`)).
我已经尝试过以下方法:
- 运行 作为管理员
- 修复Visual Studio
- 完全卸载并重新安装 Visual Studio。
其他有用信息:
- 我正在使用 Visual Studio 社区 2019。
- 我的
msbuild
路径是:C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin
- 我的
VCTargetsPath
是:C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Microsoft\VC\v160\
- 值得注意的是,在我拥有的 UI 版本中,我没有在 CLI 命令中添加额外的包含目录或额外的依赖项。尽管如此,我预期的错误有点像
unknown reference to <function>
。在继续 link 所需的库之前,我试图解决第一个错误,我不认为这是导致问题的原因,但我提到它以防万一。
奇怪的是,如果我使用 Visual Studio UI 重建项目,那么项目构建没有任何问题。
尽管如此,我还是需要从 CLI 构建,所以如果有人分享问题所在,我将非常感激。
根据您的描述,这对我来说效果很好。所以你的环境有些问题。
试试这些:
1) 关闭 VS IDE, 运行 VS2019 的开发者命令提示符 as 管理员
类型:
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Framework.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Engine.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Conversion.Core.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Tasks.Core.dll"
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\Microsoft.Build.Utilities.Core.dll"
之后,重启测试
随你的意:
如果没有帮助,请运行 C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe
卸载所有VS2017和VS2019版本及其注册信息,任何数据。这就像一个强大的、彻底的卸载。
然后,重新安装版本。
检查你的 MSBuild 版本,我以前遇到过同样的问题。
例如:
msbuild
Microsoft (R) Build Engine version 4.0.30319 for .NET Framework
就我而言(现在),最新版本是 16.9.0(从 here 下载)
Microsoft (R) Build Engine version 16.9.0+57a23d249 for .NET Framework
检查你的 Windows 路径,当我遇到问题时,我得到一个包含旧版本 MSBuild 的 Windows 路径,检查我看到的文件夹“msbuild.exe”。我删除了该条目并为我的好 msbuild 添加了新条目。
%ProgramFiles(x86)%\Microsoft Visual Studio19\Community\MSBuild\Current\Bin
已在 this post
上看到