繁体   English   中英

在 VS 2017 的预构建事件中使用 protoc 从 .proto 文件生成 c# 文件

[英]Generating c# files from .proto files using protoc on pre build event in VS 2017

我尝试使用来自protoc nuget package 的 protoc 从google.protobuf.tools文件生成 c# 文件。 我用 .proto 文件创建了 .net 核心库项目。

为此的预构建事件命令行

protoc -I=$(ProjectDir)Messages --csharp_out=$(ProjectDir)Messages $(ProjectDir)*.proto

其中protocprotoc.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

MSBuild 预构建

我开始工作的预构建命令:

$(NugetPackageRoot)google.protobuf.tools\3.13.0\tools\windows_x64\protoc.exe -I=$(ProjectDir)protos --csharp_out=$(ProjectDir)Messages $(ProjectDir)protos\*.proto

我没有手动安装protoc。 此命令使用 Nuget package google.protobuf.tools 附带的命令。

我的项目结构如下:

-项目目录

----留言目录

------myMessages.cs

----protos目录

------myMessages.proto

要回答具体问题:

我收到了同样的错误,这意味着它找不到“protoc”。 通过使用上面的构建命令,它将能够找到 protoc exe。 一个明显的缺点是,如果您更新 protobuf 包,那么您还需要在 MSBuild 命令中更新版本。 也许有人知道一种自动化的方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM