在Visual Studio 2017的预构建事件中,我尝试使用protoc
中的google.protobuf.tools
nuget包中的protoc -I=$(ProjectDir)Messages --csharp_out=$(ProjectDir)Messages $(ProjectDir)*.proto
从.proto文件中生成c#文件,以用于特定文件夹中的所有.proto文件。我用.proto文件创建了.net核心库项目。
为此的预构建事件命令行
protoc
其中 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.
是 protoc.exe
但是我出错了
AllowOverride None
我该如何解决?
答案 0 :(得分:0)
这些链接很有帮助:
我要使用的Pre-build命令:
$(NugetPackageRoot)google.protobuf.tools\3.13.0\tools\windows_x64\protoc.exe -I=$(ProjectDir)protos --csharp_out=$(ProjectDir)Messages $(ProjectDir)protos\*.proto
我没有手动安装协议。此命令使用的是Nuget软件包google.protobuf.tools随附的命令。
我的项目结构如下:
-项目目录
----消息目录
------ myMessages.cs
---- protos目录
------ myMessages.proto
要回答特定问题:
我收到了同样的错误,这意味着它找不到“协议”。通过使用上述构建命令,它将能够找到protoc exe。明显的缺点是,如果更新protobuf软件包,则还需要更新MSBuild命令中的版本。也许有人知道一种自动化的方法?