我尝试在 Visual Studio 2017 中的预构建事件中使用 google.protobuf.tools
nuget 包中的 protoc
从 .proto 文件生成 C# 文件特别是文件夹。我使用 .proto 文件创建了 .net core 库项目。
为此预构建事件命令行
protoc -I=$(ProjectDir)Messages --csharp_out=$(ProjectDir)Messages $(ProjectDir)*.proto
其中 protoc
是 protoc.exe 预编译版本的环境变量
但是我得到了错误
error MSB3073: The command "protoc -I=C:\Projects\TecAlliance.Core.Messages\TecAlliance.Core.Messages\Messages --csharp_out=C:\Projects\TecAlliance.Core.Messages\TecAlliance.Core.Messages\Messages C:\Projects\TecAlliance.Core.Messages\TecAlliance.Core.Messages\GpsCoodinates.proto" exited with code 9009.
1>Done building project "TecAlliance.Core.Messages.csproj" -- FAILED.
如何解决?
最佳答案
这些链接很有帮助:
我开始工作的预构建命令:
$(NugetPackageRoot)google.protobuf.tools\3.13.0\tools\windows_x64\protoc.exe -I=$(ProjectDir)protos --csharp_out=$(ProjectDir)Messages $(ProjectDir)protos\*.proto
我没有手动安装protoc。此命令使用 Nuget 包 google.protobuf.tools 附带的命令。
我的项目结构如下:
-项目目录
----消息目录
------myMessages.cs
----protos目录
------myMessages.proto
回答具体问题:
我收到了同样的错误,这意味着它找不到“protoc”。通过使用像上面这样的构建命令,它将能够找到 protoc exe。一个明显的缺点是,如果您更新 protobuf 软件包,那么您还需要更新 MSBuild 命令中的版本。也许有人知道一种自动化的方法?
关于c# - 在 VS 2017 中的预构建事件中使用 protoc 从 .proto 文件生成 c# 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58221315/