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

'TProtocol' does not contain a definition for 'IncrementRecursionDepth'

我已经为我的图书馆和服务器安装了 thrift;使用 NuGet.

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

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

node.thrift有三行:

service Server {
    string ping()
}

我从 Server.cs 编译器生成的 Server.cs 中得到错误。

'TProtocol' 不包含 'IncrementRecursionDepth'

的定义

抛出错误的示例行:

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

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

更新:如果我删除抛出错误的行,库编译并且服务器按预期工作,我不知道将来是否会遇到错误与否,递归是怎么回事?!

要点:我使用从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

the version is 0.9.3 but the thrift library installed by NuGet is 0.9.1.3

这正是问题所在。稍后添加了 IncrementRecursionDepth() 函数以防止出现问题,THRIFT-3235 中对此进行了更详细的概述。因为你需要编译器和库,所以你遇到了问题。

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

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

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