'TProtocol'不包含'IncrementRecursionDepth'的定义

时间:2016-03-17 20:08:50

标签: c# thrift thrift-protocol

我已经为我的库和服务器安装了thrift;使用 NuGet

我有一个非常简单的thrift文件,我使用以下命令编译它:

thrift.exe -r --gen csharp node.thrift

node.thrift有三行:

service Server {
    string ping()
}

我从 thrift 编译器生成的 Server.cs 中获取错误。

'TProtocol'不包含'IncrementRecursionDepth'的定义

抛出错误的示例行:

public void Read (TProtocol iprot)
    {
      iprot.IncrementRecursionDepth(); //this line has the error

我用Google搜索了,但没有找到任何结果。

更新:如果我删除了抛出错误的行,库编译并且服务器按预期工作,我不知道将来是否会遇到错误,最新消息随着递归?!

重点:我使用从 http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.exe 下载的可执行文件编译thrift文件。版本 0.9.3 但NuGet安装的thrift库是 0.9.1.3

2 个答案:

答案 0 :(得分:6)

  

版本是0.9.3,但NuGet安装的thrift库是0.9.1.3

确切地说就是这个问题。之后添加了IncrementRecursionDepth()功能以防止出现问题,THRIFT-3235中对此进行了详细介绍。既然你需要编译器和库,你就会遇到问题。

解决方案:始终使用匹配的编译器和库。特别是,使用0.9.3。

答案 1 :(得分:1)

问题是编译器版本不等于NuGet安装的thrift版本。

要从NuGet安装最新的官方软件包,请搜索 ApacheThrift