NET内核中的节俭-生成的C#代码不编译

NET内核中的节俭-生成的C#代码不编译,c#,.net-core,thrift,C#,.net Core,Thrift,我试图在.NET核心项目中使用,但由于某种原因,Thrift编译器生成的C#代码无法工作 我创建了一个非常简单的.thrift文件用作测试,如下所示: namespace netcore Management service ManagementService { void Ping() } 我已将其放入一个空类库(我的其他项目将依赖于该类库),并已将以下代码添加到我的.csproj文件中进行编译: <Target Name="PreBuild" Befor

我试图在.NET核心项目中使用,但由于某种原因,Thrift编译器生成的C#代码无法工作

我创建了一个非常简单的.thrift文件用作测试,如下所示:

namespace netcore Management

service ManagementService {
    void Ping()
}
我已将其放入一个空类库(我的其他项目将依赖于该类库),并已将以下代码添加到我的.csproj文件中进行编译:

<Target Name="PreBuild" BeforeTargets="_GenerateRestoreProjectSpec;Restore;Compile">
    <Exec Condition="'$(OS)' == 'Windows_NT'" Command="where thrift" ConsoleToMSBuild="true">
        <Output TaskParameter="ConsoleOutput" PropertyName="PathToThrift" />
    </Exec>
    <Exec Condition="Exists('$(PathToThrift)')" Command="$(PathToThrift) -out $(ProjectDir) -gen netcore:wcf,union,serial,hashcode -r management.thrift" />
</Target>

这似乎工作正常,并且在我的项目中创建了一个ManagementService.cs文件,其中包含自动生成的代码

但是,这个自动生成的代码不会编译!尝试时,MSBuild会抛出以下错误:

找不到类型或命名空间名称“Ping_args”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“Ping_result”(是否缺少using指令或程序集引用?)


我亲自查看代码,这两个变量似乎没有在任何地方声明。有人能告诉我为什么会这样吗?我的.thrift文件可能有问题吗?

似乎是由于同时使用
联合
哈希代码
造成的
-gen netcore:wcf、union、serial、hashcode
在类型为
PingArgs
时生成
作为Ping_args


删除任何一个都可以摆脱该强制转换。

用于生成文件的cmdline是什么?注意
-gen netcore
-gen csharp
之间存在差异(至少现在,我们正在努力将它们合并为一个)