簡體   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