我尝试使用google.protobuf.tools
nuget 包中的protoc
在 Visual Studio 2017 中的预构建事件中为特定文件夹中的所有 .proto 文件生成 c# 文件。我用 .proto 文件创建了 .net 核心库项目。
为此预构建事件命令行
protoc -I=$(ProjectDir)Messages --csharp_out=$(ProjectDir)Messages $(ProjectDir)*.proto
其中protoc
是protoc预编译版本的环境变量.exe
但是我有错误
error MSB3073: The command "protoc -I=C:ProjectsTecAlliance.Core.MessagesTecAlliance.Core.MessagesMessages --csharp_out=C:ProjectsTecAlliance.Core.MessagesTecAlliance.Core.MessagesMessages C:ProjectsTecAlliance.Core.MessagesTecAlliance.Core.MessagesGpsCoodinates.proto" exited with code 9009.
1>Done building project "TecAlliance.Core.Messages.csproj" -- FAILED.
我该如何解决?
这些链接很有帮助:
NugetPackageRoot
MSBuild 预生成
我开始工作的预构建命令:
$(NugetPackageRoot)google.protobuf.tools3.13.0toolswindows_x64protoc.exe -I=$(ProjectDir)protos --csharp_out=$(ProjectDir)Messages $(ProjectDir)protos*.proto
我没有手动安装协议。此命令使用的是 Nuget 包 google.protobuf.tools 附带的命令。
我的项目结构如下:
-项目目录
----消息目录
------我的消息.cs
----原型目录
------myMessages.proto
要回答具体问题:
我收到了同样的错误,这意味着它找不到"protoc"。通过使用上面这样的构建命令,它将能够找到 protoc exe。一个明显的缺点是,如果您更新 protobuf 包,那么您还需要更新 MSBuild 命令中的版本。也许有人知道一种自动化的方法?