【问题标题】:AdditionalProtocArguments" parameter is not supported by the "ProtoCompile" task, .Net Core Console app“ProtoCompile”任务不支持 AdditionalProtocArguments”参数,.Net Core 控制台应用程序
【发布时间】:2021-07-18 18:53:15
【问题描述】:

我不确定发生了什么,但我让 grpc 在控制台应用程序和 ASP.NET Core grpc 服务器之间工作,但是当我对 proto 文件进行更改时,控制台应用程序停止编译。然后我决定按照示例创建一个全新的控制台应用程序,当我的原型文件(来自示例)设置为服务器时,grpc 服务构建正常,但是一旦我在控制台应用程序中将其更改为客户端,我就会收到此错误。

“ProtoCompile”任务不支持“AdditionalProtocArguments”参数。验证该参数是否存在于任务中,并且它是一个可设置的公共实例属性。

我没有遇到 grpc 服务的这个问题,只是客户端 - 甚至是新的客户端应用程序。所以我可以消除我的特定编码。这是一个构建/配置问题。另一个问题是,在添加新文件时,希望添加 Proto 文件不会返回任何选项,但是当我在服务器项目上执行此操作时,我会选择 Protocol Buffer 文件。

我在客户端上的包是 Google.Protobuf 3.15.8; Grpc.Net.Client 2.37.0; Grpc.Tools 2.37.0

我不知道该怎么办。我可以创建一个全新的控制台应用程序,添加 nuget 包,添加一个 Protos 文件夹,当我尝试添加一个 proto 文件时,我什至没有得到那种类型的文件。我什至重启了也没效果!

Example of grpc client and server that I followed

【问题讨论】:

    标签: c# .net-core grpc


    【解决方案1】:

    清理项目并重新启动 Visual Studio 为我修复了错误,如推荐的 here

    更新: 将 gRPC 相关的 nuget 更新到最新版本(不是 Visual Studio 默认模板添加的版本)后,这种情况不再发生。目前工作版本是: 2.38.1 用于 Grpc.Tools, 3.17.3 用于 Google.Protobuf, 2.38.0 用于 Grpc.Net.Client

    【讨论】:

      【解决方案2】:

      我有同样的问题,没有答案直接帮助我,但我通过以下步骤解决了我的问题:

      1. 更新 Grpc.AspNetCore 包(默认 Grpc 项目使用 2.34 版本和 grpc.tools 2.34 版本所以会产生冲突)
      2. VS 的清洁解决方案
      3. 关闭VS
      4. 从文件资源管理器中删除解决方案文件夹子目录中的所有调试和 bin 文件夹
      5. 转到 nuget packages 文件夹(默认位于 C:\Users{user}.nuget\packages)
      6. 转到 grpc.tools 文件夹
      7. 删除 2.37.0 之前的所有版本文件夹
      8. 打开VS
      9. 构建解决方案

      【讨论】:

        【解决方案3】:

        我有同样的错误。将 AspNetCore 降级到 2.34 版(新项目的标准),然后正确构建

        【讨论】:

        • 降级版本并不总是安全的。清理和重启工作正常。
        【解决方案4】:

        看起来像删除

        AdditionalProtocArguments="%(_Protobuf_OutOfDateProto.AdditionalProtocArguments)"
        

        form C:\Users\你的用户\.nuget\packages\grpc.tools\2.37.0\build_protobuf\Google.Protobuf.Tools.targets

        (大约第 291 行)修复编译,不幸的是我不能说这会导致什么副作用......但它似乎在我的 dummy 项目中工作

        【讨论】:

          【解决方案5】:

          将 Grpc.Tools 升级到 2.38.0 自动解决了我的问题...

          【讨论】:

            【解决方案6】:

            可以改为使用 Grpc.AspNetCore 元包。 它指向 google protobuf、grpc aspnet 核心服务器客户端工厂和 grpc 工具的匹配版本,您无需跟踪特定版本即可安装。 这解决了我的问题。

            【讨论】:

              猜你喜欢
              • 2016-11-02
              • 2017-04-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多