我已经为我的库和服务器安装了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
答案 0 :(得分:6)
版本是0.9.3,但NuGet安装的thrift库是0.9.1.3
确切地说就是这个问题。之后添加了IncrementRecursionDepth()
功能以防止出现问题,THRIFT-3235中对此进行了详细介绍。既然你需要编译器和库,你就会遇到问题。
解决方案:始终使用匹配的编译器和库。特别是,使用0.9.3。
答案 1 :(得分:1)
问题是编译器版本不等于NuGet安装的thrift版本。
要从NuGet安装最新的官方软件包,请搜索 ApacheThrift 。