我简直要疯了:我无法再构建任何 GRPC 项目,也找不到解决方案。
当我运行构建命令(
dotnet build
)时,我收到以下错误:
mr@bogobox GrpcLab % dotnet build
MSBuild version 17.9.8+b34f75857 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
/Users/mr/.nuget/packages/grpc.tools/2.62.0/build/_protobuf/Google.Protobuf.Tools.targets(291,5): error MSB6004: The specified task executable location "/Users/mr/.nuget/packages/grpc.tools/2.62.0/tools/macosx_aarch64/protoc" is invalid. [/Users/mr/temp/dotnetlab/grpclab/GrpcLab/GrpcGreeter/GrpcGreeter.csproj]
Build FAILED.
分析该消息,我看到对架构的引用
macosx_aarch64
,这对我来说听起来很奇怪。
我的笔记本电脑是 Apple M1 Pro (
arm64
)。 Msbuild 似乎无法解决正确的架构或相关问题。
我尝试重新安装 grpc 工具,但错误仍然存在。
上述错误是在从 dotnet 模板创建的全新 Grpc 服务上生成的。
有什么想法吗?
新的一天,新的心态。
我检查了
msbuild
protobuffer 目标文件,发现经过一些逻辑,通过连接我系统上的两个环境变量 PROTOBUF_TOOLS_OS
和 PROTOBUF_TOOLS_CPU
来解析路径:
PROTOBUF_TOOLS_CPU=aarch64
PROTOBUF_TOOLS_OS=macosx
将前者修复为“x64”将重新建立预期的行为。
最后一步是研究可能是配置错误的根本原因。